Последовательный порт не работает со скоростью выше 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?
- Как отправить int[][] как массив байтов через Serial
- Нахожусь ли я на пределе времени передачи UART?
- Последовательный разбор странных данных
- ESP8266-01 неправильные настройки управления потоком
- массив в последовательный порт
19200 нормально, а 38400 нет? int не может вместить 38400, @Juraj
Да. И
int RATE=38400;не работает, но#define RATE 38400работает (??), @Brethlosze@Juraj Это решение ... Спасибо ..., @Brethlosze
Я сделал ту же ошибку несколько дней назад. Потребовалось 10 минут, чтобы понять, @Juraj