ESP отправить строку в Arduino

Я пытаюсь отправить строку из ESP32 в Arduino. Я использую сдвиг уровня, где Уно теперь Мега (так как я не мог заставить Уно работать).

RX0 теперь является RX1, подключенным к UART2 ESP32.

// Мастер-отправитель ESP32

#include <HardwareSerial.h>
 
void setup() {
  // Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, 16, 17);
  delay(100);
}
    
void loop() {
  String shape = "1,2,3";
  Serial2.println(shape);
  delay(500);
}

//Ресивер Мега

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial1.begin(9600);
  Serial.begin(19200);
  delay(100);
}

void loop() {
  if (Serial1.available()) {
    String received = "";
    received = Serial1.readString();
    Serial.println(received);
  }
}

Есть ли что-то в любом скетче, что следует изменить?

, 👍3

Обсуждение

вы подключили правильные контакты? ... не используйте вывод 0 и вывод 1 для последовательного подключения программного обеспечения., @jsotola

@jsotola В этой настройке я не использую программное обеспечение serial. Распиновка отображается, за исключением того, что RX0 теперь является RX1 на Mega., @Adamelli

вам не хватает GND-соединения на стороне LV уровнемера?, @hcheung

@hcheung Они внутренне связаны., @Adamelli


1 ответ


2

ReadStringUntil('\n')

//Ресивер Мега

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial1.begin(9600);
  Serial.begin(19200);
  delay(100);
}

void loop() {
  if (Serial1.available()) {
    String received = "";
    received = Serial1.readStringUntil('\n');
    Serial.println(received);
  }
}

Речь идет о том, как работает Serial.ReadString (): в данном случае он считывает данные с последовательного порта навсегда. Он прекращает чтение, если последовательному интерфейсу дается тайм-аут. Есть две возможности:

  • используйте readStringUntil() на приемнике
  • вызовите mySerial.setTimeout(300); (из setup ()), чтобы установить тайм — аут 300 мс (например, если он значительно меньше 1000) на приемнике-по умолчанию он равен одной секунде!
,