Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Pulsante con GPIOZero - parte 2

Come utilizzare un pulsante adoperando GPIOZero su Raspberry Pi (seconda e ultima parte).
Come utilizzare un pulsante adoperando GPIOZero su Raspberry Pi (seconda e ultima parte).
Link copiato negli appunti

Abbiamo visto come collegare e gestire un pulsante con il Raspberry Pi nella lezione precedente nonché analizzato le modalità Pull-Up, Pull-Down e i metodi della classe Button.
In questa lezione completiamo l'analisi dettagliata dei metodi della classe Button aiutandoci con esempi pratici in Python.

La classe Button

Il Pulsante (Button) all'interno della libreria GPIOZero appartiene alla classe di dispositivi di Input (DigitalInputDevice), ed è modellato da una semplice interfaccia intuitiva.

Controllo Led con Pulsante

Nel caso in esame modifichiamo il circuito come rappresentato in figura collegando un led al GPIO 23 del Raspberry Pi.

p_led


from gpiozero import LED, Button                     # linea  1
from time import sleep                               # linea  2

print("Inizializzazione Led")                        # linea  4
led = LED(23)                                        # linea  5

print("Inizializzazion Pulsante")                    # linea  7
pulsante = Button(18, pull_up=True)                  # linea  8

while True:                                          # linea 10
    if pulsante.is_pressed:                          # linea 11    
        print("Pulsante Premuto - Led Acceso!")      # linea 12
        led.on()                                     # linea 13
    else:                                            # linea 14
        print("Pulsante non Premuto - Led Spento!")  # linea 15
        led.off()                                    # linea 16
    sleep(0.5)                                       # linea 18

Se alla linea 11 il pulsante è premuto, allora accendiamo il led alla linea 13 altrimenti lo spegniamo alla linea 16.
La libreria GPIOZero ci permette di ottenere lo stesso risultato in maniera più stringata tramite l'uso degli eventi when_pressed e when_released.


from gpiozero import LED, Button                    # linea  1
from signal import pause                            # linea  2

print("Inizializzazione Led")                       # linea  4
led = LED(23)                                       # linea  5

print("Inizializzazion Pulsante")                   # linea  7
pulsante = Button(18, pull_up=True)                 # linea  8
    
pulsante.when_pressed = led.on                      # linea  10
pulsante.when_released = led.off                    # linea  11

pause()                                             # linea  13

In questo caso abbiamo collegato l'evento di pressione del pulsante (when_pressed) con l'esecuzione della funzione on() del led, mentre l'evento generato dal rilascio del pulsante è collegato all'esecuzione del metodo off() del led.
Otteniamo lo stesso risultato del codice precedente ma in modo maggiormente sintetico.
Esiste un terzo modo, ancora più compatto, che permette di collegare logicamente lo stato logico del pulsante come input del led.

 
from gpiozero import LED, Button                    # linea  1
from signal import pause                            # linea  2

print("Inizializzazione Led")                       # linea  4
led = LED(23)                                       # linea  5

print("Inizializzazion Pulsante")                   # linea  7
pulsante = Button(18, pull_up=True)                 # linea  8

led.source = pulsante.values                        # linea  10

pause()                                             # linea  12

In questo caso il valore di controllo del led tramite led.source viene pilotato dallo stato logico del pulsante pulsante.values.

Pressione prolungata

Gestendo l'evento when_held realizziamo ora un codice che accende o spegne il led solo se il pulsante viene premuto per un tempo superiore a 2 secondi.


from gpiozero import LED, Button                    # linea  1
from signal import pause                            # linea  2

print("Inizializzazione Led")                       # linea  4
led = LED(23)                                       # linea  5

print("Inizializzazion Pulsante")                   # linea  7
pulsante = Button(18, pull_up=True, hold_time=2)    # linea  8

pulsante.when_held = led.toggle                     # linea 10 

pause()                                             # linea 12

Come si può vedere, alla linea 10, abbiamo utilizzato il metodo toggle() della classe LED per invertire lo stato di accensione del led.

Conclusione

In questa lezione e nella precedente abbiamo appreso alcuni concetti fondamentali e osservato l'uso della resistenze di Pull-Up e Pull-Down. Abbiamo, inoltre, descritto la classe Button della libreria GPIOZero e analizzato vari codici di controllo che sfruttano i metodi e gli eventi messi a disposizione dalla classe stessa. Nella prossima lezione andremo a pilotare tramite pulsante un carico che non può essere direttamente collegato al Raspberry Pi.

Ti consigliamo anche