0

我正在用一些例子研究 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()
4

1 回答 1

0

好的,发现“while”语句应该换成“if”。然后一切正常。不理解这种行为。

  1. 为什么程序在接收无时卡在“while”?
  2. 为什么在调试模式下一切都很好?

如果有人可以解释,我将不胜感激。

代码解决了这个问题:

if value is None:
    print("None")
于 2018-06-15T20:20:19.550 回答