Questo forum utilizza i cookies
Questo forum fa uso di cookie per migliorare l'esperienza utente. I cookie sono piccoli file di testo memorizzati sul tuo browser. I cookie impostati dal forum possono essere utilizzati solo su questo sito e non costituiscono rischio per la sicurezza, vengono utilizzati unicamente per memorizzare le tue preferenze. Navigando sul sito accetti che RaspberryItaly installi i cookie sul tuo browser.
Per maggiori informazioni consulta l'informativa sui Cookie di RasberryItaly

Un cookie verra memorizzato nel browser indipendentemente dalla scelta per evitare che questa domanda ti venga posta di nuovo. Sarai in grado di modificare le impostazioni dei cookie in qualsiasi momento utilizzando il link nel footer.
  • Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
led uso interrupt detect add event strano comportamento con gpio dell del e

[Problema] Uso dell'interrupt con GPIO.add_event_detect() e strano comportamento del LED
#1
Sad 
Salve a tutti,

Ho da pochissimo un Raspberry 3 B+. 
Mentre cerco di familiarizzare con la libreria Gpiozero (su suggerimento di @Zzed), sto nel frattempo facendo un po’ di pratica con la libreria classica RPi e il rilevamento dei cambi di stato in input (Edge) tramite interrupt.

Semplice esperimento: pulsante collegato a 3.3V e BCM15, con resistenza da 220Ω; LED collegato a BCM17 e massa, con resistenza da 330Ω.
Nella mia intenzione, premendo una volta il pulsante il LED dovrebbe accendersi, premendo nuovamente dovrebbe spegnersi.

In realtà il programma non funziona bene: spesso non accende o non spegne il LED oppure accende e spegne consecutivamente e altre cose bizzarre.
Pare quasi che la parte di programma con if… else… non sia ben sincronizzata con il callback di GPIO.add_event_detect().

Non capisco dove sia l’errore…

Di seguito il listato e lo schema dell’esperimento.
Grazie a tutti.

----------------------

Codice:
# Accensione-spegnimento LED con interrupt

from RPi import GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT) # pin 17 (LED) impostato OUT
GPIO.output(17,GPIO.LOW)

def richiamo_pulsante(channel): # funzione: channel = pin 15
    print('Pulsante premuto!')
    if(GPIO.input(17) == GPIO.LOW):
        GPIO.output(17,GPIO.HIGH)
        print('LED acceso!')
    else:
        GPIO.output(17,GPIO.LOW)
        print('LED spento!')
    
# Pin BCM 15 come INPUT e
# definirlo come PULL-DOWN = OFF = 0
GPIO.setup(15, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

# Creazione di un EVENTO (INTERRUPT) per il pin BCM 15
GPIO.add_event_detect(15, GPIO.RISING, callback=richiamo_pulsante)

messaggio = input('Premi INVIO per uscire\n\n')

GPIO.cleanup()

------------


Allegati
.jpg   CleanShot 2019-04-01 at 16.59.28.jpg (Dimensione: 57.63 KB / Download: 13)
Risposta
  


Messaggi in questa discussione
Uso dell'interrupt con GPIO.add_event_detect() e strano comportamento del LED - da Grid - 01/04/2019, 20:30

Vai al forum:


Navigazione:
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect