Заставить две trinket общаться друг с другом через последовательные контакты
Я пытаюсь быстро проверить концепцию двух trinket M0, которые общаются друг с другом через свои контакты RX и TX, и я не могу заставить его работать.
Я загрузил скетчи отправителя и получателя на две trinket:
//sender.ino
char state[10] = "hello";
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.write(state, 5);
delay(1000);
}
//receiver.ino
char state[10];
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println("reading bytes");
Serial.readBytes(state, 10);
Serial.println(state);
delay(1000);
}
После загрузки я соединил две Trinket вместе, соединив RX первого с TX другого и TX первого с RX другого. Я также соединил их земли, чтобы иметь общую почву.
Я подключил отправителя к аккумулятору, а получатель к компьютеру. Проблема, с которой я сталкиваюсь, заключается в том, что когда я смотрю на серийный монитор для приемника, вместо ожидаемого «привет» я получаю неработающие строки «TestingOpen»:
Я дважды проверил схему выводов и руководство для Trinket M0, чтобы убедиться, Я использовал правильные контакты RX / TX (контакт 3 для RX, 4 для TX), и все вроде бы хорошо, но очевидно, что что-то все еще идет не так.
Кто-нибудь знает, что я упустил или неправильно понял?
@Chris Schmitz, 👍0
1 ответ
Лучший ответ:
1) вы должны использовать if (Serial.available())
перед началом чтения с помощью readBytes. теперь вы печатаете случайную память
2) readBytes блокируется. он ожидает следующего символа до истечения времени ожидания. тайм-аут по умолчанию составляет 1 секунду. после того, как "привет" было получено, он ждет секунду. вы можете использовать readBytesUntil и некоторый символ «разделитель», например «\n» (новая строка)
3) readBytes возвращает количество прочитанных байтов. вы должны использовать его для завершения буфера
void loop()
{
if (Serial.available()) {
Serial.println("reading bytes");
size_t l = Serial.readBytesUntil('\n', state, 10);
state[l] = 0;
Serial.println(state);
}
}
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- как отправить данные в Adafruit Bluefruit Feather (32u4) через Bluetooth?
- Adafruit Huzzah espcomm_open не удалось
- Термопринтер Adafruit печатает слабо
- Проблемы с подключением к плате Adafruit FLORA
- у меня возникают странные проблемы при попытке прочитать форму последовательного соединения gps
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?