Как отправить целое число через pyserial с Python на Arduino и получить тот же результат?
В Интернете были подобные вопросы, но ни один из них, похоже, не ответил на мой вопрос. Может ли кто-нибудь сказать мне, что не так с этим кодом и как я могу это исправить?
Код Python:
import serial
arduino_linux=serial.Serial("/dev/ttyACM0",9600)
while True:
print('write:',str.encode('90')) #print the sent value through the serial to check it with the readed value
arduino_linux.write(str.encode('90'))#send the following value
print('readed:',arduino_linux.read())#read the same value back from the arduino
мой код Arduino выглядит следующим образом
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write(Serial.read());
}
Это простой пример проекта. Моя цель в этом коде — отправить целое число 90 из pyserial и убедиться, что значение, считываемое Arduino, является тем же целым числом.
В случае необходимости мой проект представляет собой отслеживание объекта с детектором объектов, и после расчета всех углов и всего остального он отправляет их на Arduino, чтобы Arduino мог воздействовать на сервоприводы.
Вот результат, который я получаю:
Но мне бы хотелось что-то вроде:
write:b '90'
прочитано:b '90'
, а не b'9'
или b'0'
Мне также хотелось бы знать, как преобразовать эти байты в целые числа, прежде чем записывать их в сервопривод.
@EHM, 👍0
Обсуждение1 ответ
Лучший ответ:
Используйте Serial.write()
на Arduino для отправки необработанных байтов. print
преобразует их в текст.
read
не блокируется, не ждет байта и возвращает -1, если буфер приема пуст. Проверьте, вернуло ли чтение значение -1, или используйте Serial.available()
, чтобы получить количество байтов в буфере RX.
Серийное «эхо»:
void loop() {
if (Serial.available()) {
Serial.write(Serial.read());
}
}
я видел это и использовал Serial.write(). но я, кажется, не перестаю понимать, что вы сказали по поводу второй проблемы. приведите мне какой-нибудь конкретный пример. Спасибо, @EHM
- Построение графика на Python с использованием Tkinter Canvas
- Почему нужно использовать latin-1 вместо utf-8 при использовании python с arduino?
- В чем разница, когда ардуино был отключен от сети, и когда последовательный порт был закрыт?
- связь между python и arduino
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Не удается связаться с ардуино с помощью python (Windows)
- Ошибка "'Serial' does not name a type"
какую версию Python и библиотеку pySerial вы используете?, @Juraj