RuntimeError: eventos conflitantes de detecção de borda

0

Estou tentando detectar quando um botão está inativo e por quanto tempo. Eu quero usar o botão para um passo "Próximo" iniciado pelo usuário, e se o botão for pressionado por três segundos, terminarei o programa. No entanto, o wait_for_edge fornece o erro de tempo de execução: Já existem eventos de detecção de borda conflitantes para este canal GPIO.

Existe uma solução melhor? TIA, Steve

Aqui está o código.

#!/usr/bin/env python2.7  
import sys
import time
import RPi.GPIO as GPIO  

GPIO.setmode(GPIO.BCM)  
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)  


def myInterrupt(channel):  
    global buttonStatus
    start_time = time.time()
    GPIO.wait_for_edge(channel, GPIO.RISING)     
    buttonStatus = time.time() - start_time


# Setup the interrupt call when pin 26 goes low
GPIO.add_event_detect(26, GPIO.FALLING, callback=myInterrupt, bouncetime=300)  


try:  
    quit = False
    buttonStatus = 0
    while not quit:
        # Do stuff here, waiting for an interrupt.
        sys.stdout.write("\r{}".format(time.ctime()))
        sys.stdout.flush()
        time.sleep(1)

        # Did the button get pressed?
        if buttonStatus != 0:
            # Button was pressed.
            buttonStatus = 0
            print
            print "Button pressed for {} seconds".format(buttonStatus)

except KeyboardInterrupt:  
    GPIO.cleanup()       # clean up GPIO on CTRL+C exit  

GPIO.cleanup()           # clean up GPIO on normal exit  
print
    
por Stephen Mann 13.03.2017 / 05:25

0 respostas

Tags