Nickilanto
@Nickilanto

Почему не передаются данные по Serial?

Имеется две платы arduino(на самом деле не ардуино, а TTGO Esp-32,но не суть важно). Платы соединены rx-tx tx-rx соответственно. Также соединены пины GND. Суть прошивки заключается в том что с одной платы отправляется "L" и "H" через короткий промежуток времени, что в свою очередь выключает и включает светодиод на второй(Должно выключать и включать). Залил я прошивку на обе платы. Нажимаю на кнопку просмотра Serial порта в Arduino ide на первой плате и вроде все нормально отправляется, но светодиод не мигает. Нажимаю на ту же кнопку на второй и передача данных с первой резко прекращается. Соответственно на вторую плату ничего не приходит. Но гвоздем программы является то что если вводить "H" и "L" вручную в верхней строке в просмотре сериал порта то светодиод загорается и гаснет(причем что интересно вводить "H" и "L" можно и в мониторе первой и в мониторе второй платы. Результат один и тот же). До меня никак не доходит почему не передаются данные
Вот собственно сам скетч:
Плата передачи
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.print('H');
delay(500);
Serial.print('L');
delay(500);
}

Плата приема
const int ledPin = 2; // the pin that the LED is attached to
int incomingByte; // a variable to read incoming serial data into
void setup() {
// initialize serial communication:
Serial.begin(115200);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the oldest byte in the serial buffer:
incomingByte = Serial.read();
// if it's a capital H (ASCII 72), turn on the LED:
if (incomingByte == 'H') {
digitalWrite(ledPin, HIGH);
Serial.write('H');
}
if (incomingByte == 'L') {
digitalWrite(ledPin, LOW);
}
}
  • Вопрос задан
  • 277 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vanyamba-electronics
Плата приёма:
void loop() 
{
   // read the oldest byte in the serial buffer:
   while (Serial.available() == 0) {
      digitaWrite(blinkPin, HIGH);
      delay(100);
      digitalWrite(blinkPin, LOW);
      delay(200);
   }
   unsigned char incomingByte = Serial.read();
   // if it's a capital H (ASCII 72), turn on the LED:
   if (incomingByte == 'H') { 
      digitalWrite(ledPin, HIGH);
      Serial.print('H');
    }
    else if (incomingByte == 'L') {
        digitalWrite(ledPin, LOW);
        Serial.print('L');
    }
    else {
        Serial.print(incomingByte);
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы