我正在尝试连续读取多个反射式红外传感器,直到每个传感器都被阻塞。我正在使用运行标准 Firmata 和 Pythons Pyfirmata 库的 Arduino。
每次我尝试标准读取而不在 while 循环中打印结果时,我都会延迟 15 到 30 秒(我不知道为什么):
示例 1 - 有效但随机无法解释的延迟:
Sensor1 = board.get_pin('a,0,i') #analogue, pin 0, input mode
while Sensor1.read() != 0: #Sensor defaults to 0.6 V but when blocked 0.0v
Sensor1.read()
示例 2 - 有效,但我现在有一堆传感器读取输出:
Sensor1 = board.get_pin('a,0,i') #analogue, pin 0, input mode
while Sensor1.read() != 0: #Sensor defaults to 0.6 V but when blocked 0.0v
Sensor1.read()
print(Sensor1.read()) # this prints a bunch of read outputs
出于某种原因,当我添加 print(Sensor1.read()) 时,当传感器被阻塞时,我会立即得到响应。但是,如果我删除这部分代码以消除垃圾输出,我会在传感器被阻塞和被代码识别并继续前进之间出现无法解释的时间延迟。我想做的是不断读取传感器而不打印读取的内容,并在传感器被阻塞并产生 0.0v 时立即响应中断 while 循环。我相信我也可以选择抑制这些 while 循环的打印输出,但我想知道是否有替代方案?非常感谢您审查这个问题,并感谢一百万的帮助!