import serial
ser= serial.Serial('com5',9600)
while 1:
Value_from_arduino = ser.readline()
Zustand = float(Value_from_arduino)
print(Zustand)
if Zustand == 1:
ser.write(0)
print('off')
elif Zustand == 0:
ser.write(1)
print(on)
这是Python代码,现在是arduino代码
char serialData;
int pin=12;
int pin2 = 5;
int Value;
void setup(){
pinMode(pin,OUTPUT);
pinMode(pin2,INPUT);
Serial.begin(9600);
}
void loop(){
Value = digitalRead(pin2);
Serial.println(Value);
delay(250);
while(Serial.available()){
serialData = Serial.read();
Serial.print(serialData);
if(serialData = '1'){
digitalWrite(pin,HIGH);
}
else if(serialData = '0'){
digitalWrite(pin,LOW);
}
}
}
我的问题是,当我运行python代码时,当他从我的arduino获得值0时,代码停止。 以下是python的报告:
Zustand = float(Value_from_Arduino)
ValueError: could not convert string to float: b'\x000\r\n'
Python立即停止,但他打开了LED。 如果Python得到0的值,指示灯应该亮起,但他只是结束运行。 如果值为0,则LED应亮起,如果值为1,则LED应亮起
最后我发现请替换这些代码行
步骤->;读取、解码为字符串、带/n和/r、转换为浮点 请检查这里https://problemsolvingwithpython.com/11-Python-and-External-Hardware/11.04-Reading-a-Sensor-with-Python/
希望这能奏效
您需要从串行端口解码串行字节
替换代码中的Zustand=行
请检查这里https://makersportal.com/blog/2018/2/25/python-datalogger-reading-the-serial-output-from-arduino-to-analyze-data-using-pyserial
如果编码效果不好,也可以尝试
相关问题 更多 >
编程相关推荐