PyFirmata数字输入在调试时工作良好,接收无

时间:2018-06-15 19:54:40

标签: python arduino firmata

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

1 个答案:

答案 0 :(得分:0)

好的,发现"而#34;声明应替换为"如果"。一切正常。不明白这种行为。

  1. 为什么节目会被"而#34;收到无?
  2. 为什么在调试模式下一切都很好?
  3. 如果有人能解释,我将不胜感激。

    代码解决了这个问题:

    if value is None:
        print("None")