首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyFirmata数字输入在调试时没有接收到

PyFirmata数字输入在调试时没有接收到
EN

Stack Overflow用户
提问于 2018-06-15 19:54:39
回答 1查看 1K关注 0票数 0

我正在学习pyFirmata协议,并举了一些例子。作为练习,我正在做PIR传感器系统。当我运行代码时,pyFirmata总是输出'None‘值。但是,如果我在PyCharm中进行调试,一切都会正常工作。在Arduino上,StandardFirmata的草图被上传。有人知道这种行为的原因是什么吗?

守则:

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2018-06-15 20:20:19

好的,发现"while“语句应该替换为"if”。那么一切都正常了。不要理解这种行为。

  1. 为什么程序在没有接收到“时间”的情况下就被“同时”所困?
  2. 为什么在调试模式下一切都很好?

如果有人能解释的话,我会很感激的。

守则解决了这个问题:

代码语言:javascript
复制
if value is None:
    print("None")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50881918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档