Последовательный порт не работает со скоростью выше 19200
В Arduino Mega 2560 R3 при правильном выборе скорости передачи данных Serial Monitor этот код работает с #define R 38400
, но почему-то не работает с #define R 19200
(?),
#define R 38400
int rate=R;
HardwareSerial* hwSerial[]={&Serial,&Serial1,&Serial2,&Serial3};
void setup() {
for (int i=0;i<=3;i++){
hwSerial[i]->begin(rate);
while (!hwSerial[i]);
}
hwSerial[0]->print("Hello World");
}
void loop() {
}
Обе скорости не должны создавать проблем для Arduino, что происходит?
Кажется, int rate R;
вызывает проблемы при изменении скорости (??).
@Brethlosze, 👍1
Обсуждение1 ответ
Лучший ответ:
▲ 2
Ответ прост. Вы присваиваете 38400 переменной типа int. Диапазон целых чисел со знаком, которые могут храниться в 16 битах, составляет от −32 768 до 32 767;
,
@Juraj
Смотрите также:
- Печать массива с помощью функции печати и последовательной записи в Arduino Uno
- Сбой Arduino во время последовательной печати без очевидной причины
- Как создать массив из serial.read?
- Последовательный разбор странных данных
- Нахожусь ли я на пределе времени передачи UART?
- ESP8266-01 неправильные настройки управления потоком
- массив в последовательный порт
- Как преобразовать строку в шестнадцатеричный массив
19200 нормально, а 38400 нет? int не может вместить 38400, @Juraj
Да. И
int RATE=38400;
не работает, но#define RATE 38400
работает (??), @Brethlosze@Juraj Это решение ... Спасибо ..., @Brethlosze
Я сделал ту же ошибку несколько дней назад. Потребовалось 10 минут, чтобы понять, @Juraj