我用一些例子研究了pyFirmata协议。作为一项练习,我正在做PIR传感器系统。当我运行代码时,pyFirmata始终输出'无'值。但是,如果我在PyCharm中进行调试,一切都会正常运行。在Arduino上,上传了StandardFirmata草图。任何人都知道这种行为的原因是什么?
代码:
import pyfirmata
from time import sleep
def blinkled(pin, message):
print(message)
board.digital[pin].write(1)
sleep(1)
board.digital[pin].write(0)
sleep(1)
port = '/dev/cu.usbmodem1411'
board = pyfirmata.Arduino(port)
it = pyfirmata.util.Iterator(board)
it.start()
pirPin = board.get_pin('d:7:i')
redPin = 12
greenPin = 13
while True:
value = pirPin.read()
while value is None:
print("None")
sleep(1)
pass
if value is True:
blinkled(redPin, "Motion Detected.")
else:
blinkled(greenPin, "No Motion Detected.")
board.exit()
答案 0 :(得分:0)
好的,发现"而#34;声明应替换为"如果"。一切正常。不明白这种行为。
如果有人能解释,我将不胜感激。
代码解决了这个问题:
if value is None:
print("None")