我正在尝试使用串行端口从Python向Arduino发送一些整数值,Python代码似乎正在工作,因为我看到Ardunio板上的TX LED闪烁,但是仍然连接到第12针的LED仍然不亮向上,Arduino代码似乎也可以正常工作,因为当我打开Arduino IDE的串行端口并发送“ 1”时,LED点亮,因此我认为Python发送的数据与Arduino类型之间存在某种不兼容期待。 Python代码:
ser = serial.Serial('COM3', 9600)
time.sleep(1)
ser.write('1'.encode())
Arduino代码:
void setup() {
Serial.begin(9600);
pinMode(12,OUTPUT);
}
void loop() {
int X;
if (Serial.available()>0)
{
X = Serial.read();
if(X == '1')
{
digitalWrite(12,HIGH);
}
else if(X == '0')
{
digitalWrite(12,LOW);
}
}
}
所以我的问题是:
1)_代码中似乎是什么问题?
2)_Arduino希望从串行端口获取什么类型的数据?
3)_什么是从Python向Arduino发送超过255的整数值的最佳方法?这是正确的方法吗?
ser = serial.Serial('COM3', 9600)
S = 102
time.sleep(1)
data = [int(x)for x in str(S)]
for d in data:
c = bytes(str(d), "ascii")
ser.write(c)
答案 0 :(得分:0)
我认为您正在弄乱类型 Serial.read为您提供byte,您需要将其转换为char进行比较。
尝试
X = atoi((char)Serial.read())
读取字节->将其转换为char->转换为int
然后您可以使用if条件
if (X == 1)
答案 1 :(得分:0)
我在脚本的开头将X定义为一个字符,问题得以解决。