05/04/2023, 10:52
Buongiorno,
sto cercando di utilizzare il mio Raspberry per interfacciarlo a tre relè a stato solido. Ogni volta che un relé "chiude" il contatto dovrei compiere un'azione.
Ho quindi collegato ai PIN (modo BCM) 23,24,25 i tre relé e utilizzato quale massa (GND) il pin 14. Vorrei rilevare il fronte di salita ogni volta che il relé si chiude.
I relé sono collegati come da immagine allegata e il programma Python è il seguente (mancano le funzioni richiamate che però fanno quello che devono senza problemi):
Il mio problema è che sembra vengano rilevato sia il fronte di discesa che di salita (mi raddoppia gli eventi) e non riesco a capire il motivo.
Qualcuno mi sa aiutare a capire il motivo? Essendo relé a stato solido che presentano un "contatto pulito" non credo sia colpa dei rimbalzi (non dovrebbero essercene e comunque tramite bouncetime=300 dovrebbero essere "filtrati")
Grazie mille anticipatamente.
Buona giornata a tutti.
sto cercando di utilizzare il mio Raspberry per interfacciarlo a tre relè a stato solido. Ogni volta che un relé "chiude" il contatto dovrei compiere un'azione.
Ho quindi collegato ai PIN (modo BCM) 23,24,25 i tre relé e utilizzato quale massa (GND) il pin 14. Vorrei rilevare il fronte di salita ogni volta che il relé si chiude.
I relé sono collegati come da immagine allegata e il programma Python è il seguente (mancano le funzioni richiamate che però fanno quello che devono senza problemi):
Codice:
if name == 'main':
GPIO.setmode(GPIO.BCM)
GPIO.setup(ACTIVE_GPIO, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(STOP_GPIO, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(ALARM_GPIO, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(ACTIVE_GPIO, GPIO.FALLING, callback=button_active_callback, bouncetime=300)
GPIO.add_event_detect(STOP_GPIO, GPIO.FALLING, callback=button_stop_callback, bouncetime=300)
GPIO.add_event_detect(ALARM_GPIO, GPIO.FALLING, callback=button_alarm_callback, bouncetime=300)
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
Il mio problema è che sembra vengano rilevato sia il fronte di discesa che di salita (mi raddoppia gli eventi) e non riesco a capire il motivo.
Qualcuno mi sa aiutare a capire il motivo? Essendo relé a stato solido che presentano un "contatto pulito" non credo sia colpa dei rimbalzi (non dovrebbero essercene e comunque tramite bouncetime=300 dovrebbero essere "filtrati")
Grazie mille anticipatamente.
Buona giornata a tutti.