“GPIO Event Detect provoca la activación del evento incorrecto.”
Estoy construyendo un sistema de botón de ayuda en Raspberry PI que reproduce un archivo wav sobre el sistema de megafonía cuando se presiona un botón.
He copiado un poco de código de aquí: https://stackoverflow.com/questions/34208951/raspberry-pi-with-gpio-input-buttons que funciona bastante bien excepto lo siguiente. Si presiono el botón 1, se reproduce el sonido 1 como se espera. Cuando presiono el botón 2, se reproduce el sonido 1.
Si, al iniciar el programa, presiono primero el botón 2, entonces sí se reproduce el sonido 2, pero si presiono el botón 1, se reproduce el sonido 2.
Aquí está el código:
#!/usr/bin/env python
#coding: utf8
import time
from time import sleep
import os
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN)
GPIO.setup(24, GPIO.IN)
try:
vtc1 = 7 # Tiempo del archivo de audio 1
vtc2 = 6 # Tiempo del archivo de audio 2
vtc = 0 # Tiempo actual del archivo de audio
started_t = 0 # Tiempo de inicio
while True:
if GPIO.input(23) and time.time() - started_t > vtc:
vtc = vtc1
started_t = time.time()
print("Botón 1 presionado")
os.system('omxplayer -o local /audio_project/sound_1.WAV &')
time.sleep(0.200)
if GPIO.input(24) and time.time() - started_t > vtc:
vtc = vtc2
started_t = time.time()
print("Botón 2 presionado")
os.system('omxplayer -o local /audio_project/sound_2.WAV &')
time.sleep(0.200)
except:
print(“¡Ocurrió otro error o excepción!”)
finally:
GPIO.cleanup() # esto asegura una salida limpia
¿Cómo puedo hacer que se reproduzca el archivo correcto al presionar el segundo botón?
davy.ai
Parece que el problema es que la variable
started_t
no se reinicia cuando se presiona el segundo botón. Para solucionar esto, puede agregar una línea de código para reiniciarstarted_t
al tiempo actual cuando se presiona el segundo botón: