Попытка использовать Serial для связи между двумя D1 Mini

Я пытаюсь соединить два D1 Mini вместе как POC. На одной стороне находится переключатель, а на другой-7-сегментный дисплей

У меня есть настройка контактов из TX>RX и RX>TX

Первый ESP8266:

int SWITCH_PIN = D5;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(SWITCH_PIN, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  
  if(digitalRead(SWITCH_PIN) == HIGH)
  {
    Serial.println(1);
    digitalWrite(LED_BUILTIN, HIGH);
  }
  else
  {
    Serial.println(0);
    digitalWrite(LED_BUILTIN, LOW); 
  }
}

Второй ESP8266:

#include "DigitLedDisplay.h"
DigitLedDisplay ld = DigitLedDisplay(D6, D5, D0);

void setup() {

  Serial.begin(115200);
  
  ld.setBright(10);
  ld.setDigitLimit(8);
  
  for (long i = 0; i < 100; i++) {
    ld.printDigit(i);
    delay(25);
  }
  
}

void loop() {
  delay(1000);
  if(Serial.read() == 1)
  {
    ld.printDigit(11111111);
  }
  else if (Serial.read() == 0)
  {
    ld.printDigit(22222222);
  }
  else
  {
    ld.printDigit(33333333);
  }
}

Насколько я могу судить, второй ESP8266 ничего не получает от первого. Что я делаю не так?

Заранее спасибо за помощь

, 👍1

Обсуждение

Вы забыли задать вопрос., @Edgar Bonet

обновлено с вопросами сейчас, @Saars

Serial.println(1); отправляет '1', а не 1, поэтому используйте `Serial.read() == '1"., @Juraj

Вздох... Спасибо за это Иногда я действительно получаю правильные данные, но вывод, кажется, постоянно меняется между правильным и статусом "еще" , @Saars


1 ответ


1

Благодаря Юраю это было легко исправить

Пропущенные кавычки вокруг текста и изменение некоторого кода

void loop() {
  if (Serial.available() > 0)
  {
    // считывание входящего байта:
    incomingByte = Serial.read();
  }
  if(incomingByte == '1')
  {
    ld.printDigit(11111111);
  }
  else if (incomingByte == '0')
  {
    ld.printDigit(22222222);
  }
}

добавление "if (Serial.available() > 0)" приводит к тому, что он обновляется только при заполнении последовательного буфера

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

,

это приведет к ld.print каждого цикла, если incomingByte равен '0' или '1'., @Juraj