我正在做一个简单的项目,涉及使用Python控制Arduino,同时Arduino控制两个伺服电机。问题是,无论我从 Python 向 Arduino 发送什么字符或数字,舵机都会以某种方式移动。如果数据不正确,则不应发生这种情况。甚至两个舵机同时移动。
###python code###
import serial
import time
def iniciar():
try:
arduino = serial.Serial("COM7", 9600)
time.sleep(2)
while True:
a = int(input(": "))
arduino.write(b'a')
if a == "x":
break
finally:
arduino.close()
#while True:
iniciar()
###arduino代码
#include <Servo.h>
Servo ON;
Servo OFF;
char pr;
void setup() {
Serial.begin(9600);
OFF.attach(8);
ON.attach(9);
}
void loop() {
if(Serial.available()>0){
pr = Serial.read();
if(pr == 'b'){
ON.write(0); // tell servo to go to a particular angle
delay(1000);
ON.write(90);
delay(500);
}
if(pr == 'a'){
OFF.write(0); // tell servo to go to a particular angle
delay(1000);
OFF.write(90);
delay(500);
}
}
}
我尝试更改从Python发送的数据类型,从“int”切换为“char”。我想错误可能在于使用“try”块,但老实说,我不太清楚;我对使用 Python 有点陌生。
无论用户输入如何,您始终将相同的字节 b'a' 发送到 Arduino。
arduino.write(b'a')
你可以尝试这样的事情:
while True:
a = input(": ")
if a in ['a', 'b']: # only send valid inputs
arduino.write(a.encode())