你好朋友,我需要编写一些脚本以确保arduino模拟引脚上的功耗较低,并在python上的计算机上读取它。我写了简单的脚本,这使我可以从USB读取串行数据,所以在这方面我没问题,我可以读取0.00-25.00的范围,在模拟引脚上具有相等的功率,但是我无法使脚本向我显示我希望的数据。
import serial
import time
import sys
#ser = serial.Serial('/dev/ttyUSB0',9600) # Linux
ser = serial.Serial('COM13', 9600, timeout=0) # Windows
ser.flushInput()
ser.flushOutput()
while True:
data1 = ser.readline()
if data1 == 2.54:
print ("low")
elif data1 == 2.69:
print ("hi")
elif data1 == 2.57:
print ("center")
else:
print (data1)
time.sleep(1)
某些东西我写错了,但脚本没有显示出低,中,高,值,然后它丰富了。请您的帮助
在我的经验中,if data1 == 2.54
的范围非常有限,除非您让Arduino进行四舍五入并将其发送值为2.54,否则值将略有跳跃,否则使用>=
会更好。要解码接收到的数据,您可以使用data1.decode()
,这将阻止您获取格式为b'10 \ r \ n'的编码字符串,而将得到10。这是我编写代码的方式。
data1 = ser.readline()
data1 = data1.decode()
if data1 >= 20:
print ("high")
elif data1 >= 15:
print ("medium")
elif data1 >= 10:
print ("low")
else:
print("the value is below 10")
print (data1)
time.sleep(1)
希望这会有所帮助。
我找到解决方案,如果有人需要它:
if (data1.strip() == '2.54'):
对我来说很完美,答案在这里找到:Python checking for serial string in If statement,非常感谢#micromoses