Проблема с отправкой строки с Python в Arduino через последовательный порт

Я хочу отправить строку 50 на Arduino через последовательный порт, Arduino UNO, кажется, взаимодействует с портом COM25, но не получает строку должным образом:

import serial # if you have not already done so

ser = serial.Serial('COM25') 
ser.baudrate = 9600
ser.write(b'50')  
ser.close()  

Кстати, код Arduino правильный, я проверил его с другими программами последовательного порта. Как я могу исправить приведенный выше код?

, 👍5

Обсуждение

serial.Serial() сбрасывает Uno, и после этого он некоторое время находится в загрузчике. добавить задержку/сон после серийного.Последовательный, @Juraj

Я не понимаю; так как я могу отправить строку в Python, как это делается в HyperTerminal? Мой код Ard работает с HyperTerminal, но я искал целый день и не смог найти код, работающий для Python., @floppy380

вам нужно подождать 2 секунды, пока не будет отправлено что-то через этот последовательный порт из Python. Serial Monitor также сбрасывает Arduino при открытии соединения. При открытии окна, не перед каждой отправкой данных, @Juraj


1 ответ


Лучший ответ:

3

Ардуино AVR (Uno, Nano, Mega) имеют функцию автоматического сброса. При открытии USB-соединения цепь вокруг USB сбрасывает MCU. После сброса загрузчик секунду ждет новой загрузки. Если загрузка не происходит, загрузчик запускает текущий скетч.

Команда serial.Serial() в Python открывает USB-соединение. При этом Arduino сбрасывается и ждет в загрузчике, пока вы отправляете данные. Данные не поступают в ваш скетч. Добавьте двухсекундное время ожидания после serial.Serial() в Python.

,

Спасибо за этот ответ. Это сводило меня с ума. В качестве альтернативы я добавил строку в Arduino setup() для отправки байта и ждал, пока это произойдет в Python, чтобы все началось., @SaTa