在用python编写串行端口时,我很难指示我的Arduino执行不同的if语句
我现在有一个LED和电阻器通过GND和~5个数字管脚串联在一起。我想在使用python访问串行端口(在我的例子中是COM6)并写入串行端口“1”时打开LED,在写入串行端口“2”时关闭LED
Arduino代码:
void setup()
{
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0)
{
if (Serial.read() == '1')
{
digitalWrite(5, HIGH);
delay(100);
}
else if (Serial.read() == '2')
{
digitalWrite(5, LOW);
delay(100);
}
}
}
终端中的Python代码:
In[1]: import serial
In[2]: ser1 = serial.Serial('COM6', 9600)
In[3] ser1.write('1'.encode())
Out[3]: 1
(另外,我也不太明白ser1.write(…)命令返回的是什么,如果我在参数中尝试其他值,则该数字将改变…)
当我尝试使用
ser1.write('1'.encode())
LED灯亮起,快乐的日子
但是,当我尝试通过写入python终端来关闭它时:
ser1.write('2'.encode())
LED不会熄灭。。。?救命啊
调用
Serial.read()
会从缓冲区中删除字节。第二次调用Serial.read()
,与'2'
相比,只返回-1,因为没有更多的数据了将其读入一个变量并进行比较
相关问题 更多 >
编程相关推荐