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

Я играл с примером контроллера сервопривода / светодиодов из 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 Monitor во время выполнения.

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

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

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

Position: 



Position: 

(кажется, печатает "Позиция" всякий раз, когда значение равно 0.)

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

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

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


person Seku    schedule 20.04.2019    source источник


Ответы (1)


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

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

Или приведите весь вывод к String следующим образом.

Serial.println((String)"Position: " + pos);
person Kentaro Okuda    schedule 21.04.2019