Объединяем в сеть несколько ардуин. код из видео
// Проводное соединение Arduino при помощи RS485, часть 2 // первый пример, мастер. // #include <SoftwareSerial.h> #define DIR 13 // переключатель прием\передача SoftwareSerial RS485 (7, 6); // RX, TX void setup(){ Serial.begin(9600); RS485.begin(4800); // SoftwareSerial pinMode(DIR, OUTPUT); digitalWrite(DIR, HIGH); // включаем передачу } void loop(){ byte id = random(1, 3); RS485.write(id); // отправляем первый байт, в нем ID Serial.print(id); delay(500); }
// Проводное соединение Arduino при помощи RS485, часть 2 // первый пример, слейв. // #include <SoftwareSerial.h> #define DIR 8 // переключатель прием\передача #define ID 1 // номер ардуины SoftwareSerial RS485 (7, 6); // RX, TX void setup(){ Serial.begin(9600); RS485.begin(4800); // SoftwareSerial pinMode(DIR, OUTPUT); pinMode(13, OUTPUT); digitalWrite(DIR, LOW); // включаем прием } void loop(){ if (RS485.available() > 0) { byte id = RS485.read(); // читаем байт, в нем для кого этот пакет if (id == ID){ // и если пакет пришел нам digitalWrite(13, HIGH); // мигнем диодом delay(100); digitalWrite(13, LOW); } else RS485.flush(); // если не нам, очищаем буфер } }
// Проводное соединение Arduino при помощи RS485, часть 2 // второй пример, мастер. // #include <SoftwareSerial.h> #define DIR 13 // переключатель прием\передача SoftwareSerial RS485 (7, 6); // RX, TX void setup(){ Serial.begin(9600); RS485.begin(9600); // SoftwareSerial pinMode(DIR, OUTPUT); } void loop(){ if (RS485.available() >= 2) { // если пришел ответ Serial.print(RS485.read()); // читаем первый байт, в нем от кого этот пакет if (RS485.read()) Serial.println(" - ON"); else Serial.println(" - OFF"); } digitalWrite(DIR, HIGH); // включаем передачу RS485.write(random(1, 3)); // отправляем первый байт, в нем ID RS485.write(random(1, 3)); // отправляем второй байт, digitalWrite(DIR, LOW); // включаем прием delay(250); }
// Проводное соединение Arduino при помощи RS485, часть 2 // второй пример, слейв. // #include <SoftwareSerial.h> #define DIR 8 // переключатель прием\передача const byte ID = 2; // номер ардуины SoftwareSerial RS485 (7, 6); // RX, TX void setup(){ Serial.begin(9600); RS485.begin(9600); // SoftwareSerial pinMode(DIR, OUTPUT); pinMode(13, OUTPUT); digitalWrite(DIR, LOW); // включаем прием } void loop(){ if (RS485.available() >= 2) { // если пришло 2 байта byte id = RS485.read(); // читаем первый байт, в нем для кого этот пакет if (id == ID){ // и если пакет пришел нам byte val = RS485.read(); // читаем что хочет мастер if (val == 1) digitalWrite(13, HIGH); // если там 1, включаем светодиод else digitalWrite(13, LOW); delay(10); // делаем задержку перед отправкой digitalWrite(DIR, HIGH); // включаем передачу RS485.write(ID); // отправляем свой id RS485.write(digitalRead(13)); // отправляем состояние светодиода digitalWrite(DIR, LOW); } else RS485.flush(); // если пакет не нам, очищаем буфер } }