Попытка использовать 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 ничего не получает от первого. Что я делаю не так?
Заранее спасибо за помощь
@Saars, 👍1
Обсуждение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)" приводит к тому, что он обновляется только при заполнении последовательного буфера
Задержка также вызывала проблемы с тем, где она находилась, поэтому просто удалила это
,
@Saars
это приведет к ld.print каждого цикла, если incomingByte равен '0' или '1'., @Juraj
Смотрите также:
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды
Вы забыли задать вопрос., @Edgar Bonet
обновлено с вопросами сейчас, @Saars
Serial.println(1);
отправляет '1', а не 1, поэтому используйте `Serial.read() == '1"., @JurajВздох... Спасибо за это Иногда я действительно получаю правильные данные, но вывод, кажется, постоянно меняется между правильным и статусом "еще" , @Saars