Передача данных между микроконтроллерами Arduino через последовательный интерфейс

от автора

Обмен данными между двумя платами Arduino очень полезен. В больших проектах можно назначит несколько микроконтроллеров для управления техническими процессами.

Реализовать обмен данными между двумя микроконтроллерами Arduino можно с использованием последовательного интерфейса передачи данных. Для этого будут использоваться контакты RX-0 и TX-1.

Схема подключения микроконтроллеров Arduino UNO

Контакт Arduino UNO -1  RX-0 подключается к контакту TX-1 Arduino UNO -2 и на оборот контакт TX-1 Arduino UNO -1 подключается к контакту RX-0 Arduino UNO -2.

Обратите внимание, что необходимо обязательно подключить контакты GND. В противном случае обмен данными происходить не будет!

Код C++ для  микроконтроллера Arduino UNO -1

Микроконтроллер Arduino UNO -1 будет отправлять целочисленные данные через последовательный интерфейс на микроконтроллер Arduino UNO -2.

// C++ code  void setup()  {   // скорость передачи данных через последовательный интерфейс 9600 бит/сек     Serial.begin(9600); }  int thisByte = 33;  // целочисленная переменная  void loop() {   // передаём значение переменной в последовательный интерфейс передачи данных   Serial.write(thisByte);     // если целочисленная переменная равняется 126, прекратить передачу данных   if (thisByte == 126)     {         while (true)      {       continue;     }   }   // увеличиваем значение целочисленной переменной   thisByte ++;    // пауза 1000 миллисекунд    delay(1000); }

Код C++ для  микроконтроллера Arduino UNO -2

Микроконтроллер Arduino UNO -2 будет получать целочисленные данные через последовательный интерфейс от микроконтроллера Arduino UNO -1.

// C++ code // объявляем и инициализируем целочисленную переменную int incomingByte = 0;    void setup()  {  Serial.begin(9600);   } void loop() {   // если в последовательном интерфейсе присутствуют данные передать их в консоль    if (Serial.available() > 0) {      // читаем даннные из последовательного интерфейса и присваиваем целочисленной переменнной       incomingByte = Serial.read();      // выводи переменную в консоль       Serial.print("Received:  ");      Serial.write(incomingByte);     // выводим переменную в консоль в разных кодировках       Serial.print("    INT:  ");      Serial.print(incomingByte);      Serial.print("    DEC:  ");      Serial.print(incomingByte, DEC);      Serial.print("    HEX:  ");      Serial.print(incomingByte, HEX);      Serial.print("    OCT:  ");      Serial.print(incomingByte, OCT);      Serial.print("    BIN:  ");      Serial.print(incomingByte, BIN);      Serial.println(" ");                               } }

Результат работы в консоли микроконтроллера Arduino UNO -1

Результат работы в консоли микроконтроллера Arduino UNO -2

Посмотреть симуляцию работы проекта

Более подробную инструкцию вы можете получить посмотрев видео «Связь между двумя платами Arduino».

Наш телеграмм канал


ссылка на оригинал статьи https://habr.com/ru/post/709044/