我试图用python将一些串行数据发送到我的Arduino并点亮LED开关,在Arduino IDE的串行监视器上它工作正常,但是一旦我尝试通过Python代码完成操作,它就不会工作
这是Arduino代码:
int LED = 7;
char serialData;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
serialData = Serial.read();
if(serialData == '1'){
digitalWrite(LED, HIGH);
}
if(serialData == '2'){
digitalWrite(LED, LOW);
}
}
这是Python代码:
import serial
import time
ser = serial.Serial()
ser.baudrate = 9600
ser.port = 'COM5'
time.sleep(10)
ser.write("1")
现在,当我启动python代码时,应该通过串口将“ 1”发送给Arduino,Arduino应该接收它并点亮LED。
答案 0 :(得分:0)
我认为您的Arduino代码很好,只不过您要等到串行端口(行serialData = Serial.read();
)获得一些输入后,才能执行此操作。如果打算这样做,那很好,但是如果不这样做,则应考虑检查Serial.available()。
主要问题在Python代码中。如pyserial documentation中所述,您需要打开串行端口。另外,您应该考虑在代码末尾关闭它(不必担心是否使用with
按照here所述打开串行端口)。
我添加了一个for
语句,以便您可以看到Arduino上的闪烁。
import serial
import time
ser = serial.Serial()
ser.baudrate = 9600
ser.port = 'COM5'
ser.open()
for i in range(10):
ser.write("1")
time.sleep(1)
ser.write("2")
time.sleep(1)
ser.close()