Пытаюсь понять работу протокола передачи PJON примерно аналог 1-wire может кто сталкивался?
Пока застрял на составлении передачи события от одного МК по нажатию кнопки к другому МК с выполнение кода по условию приёма сообщения о нажатии кнопки.
В части передатчика что то получилось, а что для приёмника писать вообще не понимаю. Код брал из примеров библиотеки, но дописать не могу, не понимаю.
Пока застрял на составлении передачи события от одного МК по нажатию кнопки к другому МК с выполнение кода по условию приёма сообщения о нажатии кнопки.
В части передатчика что то получилось, а что для приёмника писать вообще не понимаю. Код брал из примеров библиотеки, но дописать не могу, не понимаю.
код передатчика:
#include <PJONSoftwareBitBang.h>
uint8_t adres = 100;
PJONSoftwareBitBang bus(adres);
bool flag_on = false;
void setup() {
bus.begin();
pinMode(D6, INPUT);
Serial.begin(9600);
}
void loop() {
if(!flag_on && digitalRead(D6) == HIGH) {
bus.strategy.set_pin(D5);
bus.send(1, "ON", 2);
Serial.println("from rceiver ON");
flag_on = true;
}
if(flag_on && digitalRead(D6) == LOW) {
bus.strategy.set_pin(D5);
bus.send(1, "OFF", 3);
Serial.println("from rceiver OFF");
flag_on = false;
}
bus.update();
}
Незаконченный код приёмника:
#include <PJONSoftwareBitBang.h>
uint8_t adres = 1;
bool flag_state_relay = false;
PJONSoftwareBitBang bus(adres);
void receiver_function(uint8_t *payload, uint16_t length, const PJON_Packet_Info &packet_info) {
/* Make use of the payload before sending something, the buffer where payload points to is
overwritten when a new message is dispatched */
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
bus.strategy.set_pin(D6);
bus.begin();
bus.set_receiver(receiver_function);
Serial.begin(9600);
}
void loop() {
bus.receive(1000);
if((payload[0] == 'ON')) {
Serial.println("from transmitter - ON");
digitalWrite(LED_BUILTIN, HIGH);
flag_state_relay = true;
}
if((payload[0] == 'OFF')) {
Serial.println("from transmitter - OFF");
digitalWrite(LED_BUILTIN, LOW);
flag_state_relay = false;
}
}