В оба направления
Загрузим на оба контроллера две одну и ту же программу, которая будет и отправлять данные и принимать их.
byte ledPin = 13;
byte ledState = 0;
byte v;
unsigned long tm, send_next;
unsigned int send_to = 500; // отправка каждые 500мс
void setup() {
Serial.begin(9600);
pinMode( ledPin, OUTPUT );
}
void loop() {
// проверка наличия данных в буфере UART
if( Serial.available() ){
v = Serial.read();
digitalWrite( ledPin, ledState );
ledState = !ledState;
}
// отправка данных по таймауту
tm = millis();
if( tm > send_next ){
send_next = tm + send_to;
Serial.write('A');
}
}
После подачи питания, оба контроллера начнут мигать светодиодами, что означает — данные идут в оба направления!
Ради эксперимента, можно на ходу отключить один из проводов UART интерфейса, соответствующий контроллер перестанет получать данные и мигать.
Вот и всё. Теперь можно соединять Ардуино между собой и необязательно проводами. Например, тот же Bluetooth модуль или мощные радиомодемы работают по UART интерфейсу, а значит мы способны передавать данные по радиосвязи на приличные расстояния!
Добрый день!
А как поступить с отрицательными числами?
Точно так же. Передается все равно байт, а уж -128..127 или 0..255 это вам решать на приемнике. Просто создаете переменную нужного типа и в нее записываете значение из UART.
Почитайте про отрицательные числа в двоичном коде у ВМ
Сразу станет понятно что как передавать
https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4