Lilypad отправляет поврежденные данные по последовательному порту
У меня есть Arduino Lilypad с этим простым кодом, где я пытаюсь написать простое сообщение на последовательную консоль. Скорость передачи данных установлена на 9600 как в коде, так и в последовательной консоли, и я использую инструмент FTDI UART. Однако вывод, который я получаю, поврежден, и я не уверен, в чем может быть причина. Любые идеи и предложения приветствуются. Спасибо!
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(3000);
Serial.write("Hello World");
}
Arduino подключен к инструменту FTDI, как показано здесь
@Jozef Cipa, 👍-1
Обсуждение1 ответ
Лучший ответ:
Похоже, неправильная скорость передачи данных. Это часто приводит к появлению мусорных символов. В комментарии вы сказали, что уменьшение вдвое скорости передачи данных на стороне Arduino, по-видимому, синхронизирует скорости передачи данных, и вы могли видеть правильные символы.
Я немного озадачен этим, потому что вы, очевидно, вообще смогли загрузить скетч. Следовательно, скорость передачи данных во время процесса загрузки была правильной.
Посмотрев файл boards.txt
, который вы должны найти где-то в вашей установке Arduino, вы обнаружите несколько вариантов Lilypad. Возможно, вы случайно выбрали не тот вариант в «Плате». меню в IDE?
Похоже, что для загрузки использовалась правильная скорость передачи данных, но код, сгенерированный компилятором (из-за настроек, переданных IDE), считал, что плата работает на половине скорости, которая была на самом деле (поэтому он установил часы со скоростью передачи данных будут работать быстрее), поэтому, уменьшив скорость передачи данных в Serial.begin, они стали синхронизироваться.
Вы можете просто смириться с этой разницей или попробовать поэкспериментировать с выбором разных типов плат Lilypad.
Если скорость передачи данных неправильная, возможно, задержки тоже будут неправильными, независимо от того, имеет ли это значение, зависит от вас.
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды
@jsotola У меня это подключено, как показано на картинке здесь https://i.stack.imgur.com/axOsO.png, @Jozef Cipa
@jsotola обновлено, но это не отвечает на мой вопрос, @Jozef Cipa
В качестве эксперимента попробуйте изменить код, чтобы последовательный порт был 4800, а если это не сработает, попробуйте 119200. Альтернативно измените скорость в окне «Монитор терминала», чтобы удвоить или уменьшить скорость вдвое., @Nick Gammon
Я говорю это потому, что похоже, что скорость передачи данных неправильная. Не меняйте обе настройки одновременно., @Nick Gammon
Светодиод мигает с задержкой в 3 секунды?, @Nick Gammon
@NickGammon, изменив скорость передачи данных на 4800, сохранив при этом 9600 в терминале, решил эту проблему. Теперь я вижу в консоли правильно написанное «Hello World». Можете ли вы опубликовать это как ответ здесь, и я отмечу его как решенное? И еще, не могли бы вы объяснить, почему так? Большое спасибо, @Jozef Cipa
Он не должен. Ответ должен следовать из вопроса. То, что он вам предложил, было очень хорошим диагностическим советом. По крайней мере, он это понял и на этот раз написал это в комментарии. То, что вы добавили в свой комментарий, — это информация, которую можно включить в вопрос. *Реальный* ответ на вопрос, почему (или «что» следует из того, что вы спросили) до сих пор неизвестен., @timemage
То, что мы имеем сейчас, — это просто необъяснимый обходной путь. Нам все еще нужно выяснить причину, _почему_ вам нужны разные скорости передачи данных для вашего Lilypad и ПК. Возможно ли, что IDE думает, что у Lilypad тактовая частота 16 МГц?, @the busybee
@timemage Мой ответ (сейчас опубликованный) **вытекал** из вопроса. Из чего еще это следует?, @Nick Gammon
Все три платы Lilypad имеют частоту 8 МГц. Из двух версий, отличных от USB, которые используют заголовок в стиле FTDI, только соответствующее определение платы будет успешно загружено, поскольку они имеют разные скорости передачи данных загрузчика. Как сказал занятой человек, у вас есть обходной путь. Фактическая причина и потенциальная проблема все еще существуют. Неправильные фьюзы, неправильный загрузчик, boards.txt изменен, ядро изменено на установку CLKPR, кто знает? И мы, и будущие читатели не будем знать, как обстоят дела. Я ценю, что вы рады видеть свое сообщение напечатанным., @timemage
@timemage Я согласен, что мы не решили основную проблему, но, не зная точно, какую плату они выбрали, был ли изменен файл boards.txt, предохранители на Lilypad и т. д., тогда решение остается обходным путем. Однако вполне возможно, что ни у кого больше не возникнет такой проблемы. Даже если бы они это сделали, как бы мы могли знать наверняка, что это та же самая проблема?, @Nick Gammon