Python 通过无休止的while循环读取Raspberry Pi输入

Python 通过无休止的while循环读取Raspberry Pi输入,python,raspberry-pi,gpio,Python,Raspberry Pi,Gpio,我通过一个ttp223b触摸传感器通过python在树莓pi上检测到一个触摸。它工作得很好,但我需要在触摸检测后等待一秒钟,以防止执行多个操作,所以我只添加了一个“time.sleep(1)” 问题是,我也得到多个输出,它们只是时间偏移到1秒,似乎例程一次触发多次 import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(3, GPIO.IN) while 1: if GPIO.input(3)

我通过一个ttp223b触摸传感器通过python在树莓pi上检测到一个触摸。它工作得很好,但我需要在触摸检测后等待一秒钟,以防止执行多个操作,所以我只添加了一个“time.sleep(1)”

问题是,我也得到多个输出,它们只是时间偏移到1秒,似乎例程一次触发多次

import time
import RPi.GPIO as GPIO


GPIO.setmode(GPIO.BOARD)

GPIO.setup(3, GPIO.IN)


while 1:

  if GPIO.input(3) == GPIO.HIGH:
    print "touched :3"
    time.sleep(1)
有什么建议可以解决这个问题吗?

添加一个sentinal

last_update = 0
while 1:
   if time.time() - last_update > 1.5 : #1 and a half seconds
          if GPIO.input(3) == GPIO.HIGH:
              print "touched :3"

这将允许GPIO继续刷新,因此您不会拿起旧的冲床(至少我不完全确定GPIO缓冲区在这里是如何工作的)

我也尝试过类似的方法,但遗憾的是您的解决方案不起作用,与以前相同的多输出:(你确定引脚不是很高吗?我已经解决了,问题是由i2c程序引起的。引脚3没有使用,但我猜内部上拉电阻使引脚高的时间更长。我刚刚使用了另一个GPIO引脚,它工作得很好,非常感谢!