Странная проблема с последовательным монитором, использующим сервоприводы с Arduino Uno

#serial-port #arduino-uno #servo #arduino-c

#последовательный порт #arduino-uno #сервопривод #arduino-c

Вопрос:

Я играл с примером контроллера сервопривода / светодиодов из https://learn.adafruit.com/multi-tasking-the-arduino-part-1?view=all

В функции обновления для сервопривода я добавил следующее для целей отладки:

 Serial.print("Position: ");
Serial.println(pos);
  

создание

 Position: 180
Position: 90
Position: 0
Position: 90
Position: 180
Position: 90
Position: 0
  

в качестве вывода на последовательном мониторе во время выполнения.

Затем я изменил эти две строки на:

 Serial.print("Position: "   pos);
  

который произвел этот вывод

 Position: 



Position: 
  

(кажется, выводит «Положение» всякий раз, когда значение равно 0.)

С точки зрения логики, оба должны быть одинаковыми, поэтому я пробовал другие вещи, подозревая какие-то помехи между сервоприводом и последовательной связью с успехом, например:

a) Разные скорости передачи данных (1200, 2400, 9600 до 115200), синхронизирующие код с последовательным монитором. б) Питание Arduino от внешнего источника питания вместо USB-подключения к моему ноутбуку. То же самое при независимом включении сервопривода c) Прямое отключение сервопривода

Я был бы очень признателен, если кто-нибудь имеет представление о том, что здесь происходит. Приветствия!

Ответ №1:

Я предполагаю pos , что это int. Вы можете преобразовать pos в строку, чтобы решить проблему. Попробуйте это.

 Serial.println("Position: "   (String)pos);
  

Или преобразуйте весь ваш вывод в строку, подобную этой.

 Serial.println((String)"Position: "   pos);