Pull to refresh

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

Reading time2 min
Views14K

Обмен данными между двумя платами 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".

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

Tags:
Hubs:
Total votes 31: ↑2 and ↓29-26
Comments20

Articles