2015-12-08 66 views
0

我通过python在树莓派上探测触摸throuth ttp223b触摸传感器。它工作的很不错,但我需要等待一秒钟后触摸检测,以防止多个执行,所以我只是添加了“time.sleep(1)”。Raspberry Pi通过无尽的循环输入读数

问题是我也得到了多个输出,它们只是时间偏移到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) 

任何建议我怎么能解决这个问题?

回答

0

添加一个前哨

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缓冲区这里是如何工作的)

+0

我我也尝试过类似的方法,但是你的解决方案不幸运行,与以前相同的多输出: – ManuKILLED

+0

你确定引脚不是真的高吗? –

+1

我解决了它,问题是由i2c程序引起的。没有被使用,但我猜想内部上拉电阻使引脚保持较长时间,我刚刚使用了另一个GPIO引脚和它工作完美,非常感谢你! – ManuKILLED