В оба направления

Загрузим на оба контроллера две одну и ту же программу, которая будет и отправлять данные и принимать их.

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 интерфейсу, а значит мы способны передавать данные по радиосвязи на приличные расстояния!

0

Изменено:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.