Nella lezione d'introduzione alla libreria python GPIOZero la libreria GPIOZero è stata così definita:
Una libreria Python, per Raspberry Pi, che fornisce una semplice interfaccia, per i dispositivi e sensori controllati tramite il GPIO.
Per quanto possa sembrare banale, il controllo di un led, è l'equivalente del programma Hello World tipico di qualsiasi linguaggio di programmazione. Pertanto in questa lezione viene descritto, tramite esempi pratici, come utilizzare la libreria GPIOZero per controllare un led. Vengono anche presentati e analizzati i metodi messi a disposizione dalla libreria.
Il Led fisico
Il led è un componente polarizzato, i suoi 2 piedini sono contraddistinti da un segno di polarità (+ o -) perciò non sono equivalenti.
Osservando il led si noterà che i due piedini hanno lunghezza differente. Questo è molto utile per poterli identificare correttamente:
- Il piedino più lungo, chiamato anodo, corrisponde al segno + (più).
- Il piedino più corto, chiamato catodo, corrisponde al segno – (meno).
Quindi, per far accendere il led, è necessario collegare l'anodo, al terminale + di una batteria o alimentatore, e il catodo al terminale – della batteria o alla massa del circuito.
La classe LED
Il LED (Light Emitting Diode) o diodo emettitore, all'interno della libreria GPIOZero, appartiene alla classe dei dispositivi di output (DigitalOutputDevice), e viene modellato da una semplice interfaccia intuitiva.
Il costruttore della classe ha la seguente sintassi:
LED(pin,
active_high=True,
initial_value=False,
pin_factory=None)
A seguire qualche spiegazione aggiuntiva.
- pin: è un parametro obbligatorio di tipo integer che rappresenta il numero del pin in numerazione BCM a cui è collegato il led.
- active_high: è un parametro facoltativo di tipo boolean (con valore di default True) che determina la modalità di collegamento del led al pin GPIO.
- initial_value: è un parametro facoltativo di tipo boolean (con valore di default False) che determina lo stato iniziale di illuminazione del led. Quindi, appunto, per default il led è spento).
- pin_factory: è un parametro facoltativo solo per uso avanzato. Permette di specificare un GPIO pin factory differente da quella fornita da GPIOZero.
I metodi principali della classe sono i seguenti:
on() | Illumina il led. |
off() | Spegne il led. |
toggle() | Inverte lo stato di illuminazione del led. Se è acceso lo spegne, al contrario se è spento lo accende. |
blink(on_time=1, off_time=1, n=None, background=True) | Fa lampeggiare il led ripetutamente. |
Occorre fornire ulteriori informazioni sul metodo blink.
- on_time: è un parametro facoltativo, di tipo float (con valore di default 1), che rappresenta la quantità di secondi in cui il led è acceso.
- off_time: è un parametro facoltativo, di tipo float (con valore di default 1), che rappresenta la quantità di secondi in cui il led è spento.
- n: è un parametro facoltativo, di tipo integer (con valore di default None), che rappresenta il numero di lampeggi del led. Per default il led lampeggia all'infinito.
- background: è un parametro facoltativo, di tipo boolean (con valore di default True), che indica se il metodo ritorna immediatamente al flusso principale o se il metodo è bloccante. Per default il metodo ritorna subito al flusso principale.
L'attributo principale della classe è is_lit, di tipo boolean, che rappresenta lo stato di illuminazione del led. Assume valore True se il led è illuminato o False se il led è spento.
Lista Materiale
Per realizzare questo circuito, sono necessari i seguenti componenti e materiale:
- 1x Raspberry Pi
- 1x Breadboard
- 1x Led rosso da 3 o 5 mm
- 1x Resistore da 220 Omh
- 2x spezzoni di filo colorato (rainbow wire)
Schema di collegamento
Prima di passare al codice python è necessario assemblare il circuito elettrico che collega il led al Raspberry Pi.
La figura visualizza i collegamenti necessari per pilotare il led con il Raspberry Pi.
Seguendo la figura effettuare i seguenti collegamenti:
- Collegare con un filo (il colore non è importante) il catodo del led con il piedino di massa del Raspberry Pi che coincide con il pin fisico numero 6.
- Collegare l’anodo del led, con un piedino o reoforo, del resistore da 220 Omh.
- Collegare il reoforo libero del resistore con il GPIO 24 del Raspberry Pi che coincide con il pin fisico numero 18.
La Resistenza Limitatrice
Come evidenziato nello schema dei collegamenti, il led è collegato al Raspberry Pi tramite un resistore da 220 Omh.
Questo resistore prende il nome di resistenza limitatrice e ha il compito di limitare la corrente elettrica che scorre attraverso i piedini del Raspberry Pi e attraverso il led.
La resistenza limitatrice serve per non far "bruciare" il led e soprattutto, cosa molto più importante, per evitare possibili danneggiamenti dei circuiti del Raspberry Pi collegati al pin GPIO.
Infatti il Raspberry Pi può erogare un massimo di 16mA per GPIO fino ad un massimo complessivo di 78mA.
La resistenza limitatrice è dimensionata in base alla seguente formula:
Valore Resistenza Limitatrice = (Vin – Vfled ) / Iled
dove:
Vin: è la tensione di alimentazione del led. Nel nostro caso 3.3V;
Vfled: è la tensione diretta (forward voltage) specifica del led. Nel caso di un led rosso è circa 1.8V;
Iled: la corrente che fluisce attraverso il led.
Quindi in questo esempio:
Valore Resistenza Limitatrice = (3.3 – 1.8) / 6mA = 250 Omh.
Una resistenza commerciale da 250 Omh non esiste ma si può tranquillamente usare quella da 220 Omh facendo così fluire attraverso il led e il Raspberry Pi circa 6.8mA (abbondantemente al disotto del valore massimo di 16mA).
Hello World
Ora il led è collegato in modo corretto al Raspberry Pi. Non resta che scrivere il codice di controllo.
passo #1
Aprire l'editor Thonny disponibile su Raspbian.
Ovviamente qualsiasi altro editor andrà bene. Thonny, comunque, è già presente su Raspbian ed è integrato con l'ambiente python. Quindi permette l'esecuzione del programma python direttamente dall'editor.
passo #2
editare l'esempio di codice a seguire.
from GPIOZero import LED #linea 1
from time import sleep #linea 2
print("Inizializzazione Led") #linea 4
led = LED(24) #linea 5
print("Inizio lampeggio Led") #linea 7
while True: #linea 8
print("Led Acceso")
led.on() #linea 10
sleep(1) #linea 11
print("Led Spento")
led.off() #linea 13
sleep(1) #linea 14
- La linea 1 importa la classe LED che contiene la classe per controllare il led collegato al Raspberry Pi;
- La linea 2 importa il metodo sleep che permette di rimanere in attesa per un determinato periodo di tempo;
- La linea 4 stampa la stringa “Inizializzazione Led” nella console/shell di Thonny;
- La linea 5 crea un oggetto di tipo LED collegandolo al GPIO 24 ed assegnandolo a led;
- La linea 7 stampa la stringa “Inizio lampeggio Led” nella console/shell di Thonny;
- La linea 8 inizia un ciclo infinito;
- La linea 10 accende il led tramite il metodo on() ;
- La linea 11 mette il programma in attesa per 1 secondo tramite il metodo sleep;
- La linea 13 spegne il led tramite il metodo off() ;
- La linea 14 mette il programma in attesa per 1 secondo;
Il led viene ripetutamente acceso e spento, per 1 secondo, generando un lampeggio (blink).
passo #3
Premere il pulsante verde di esecuzione nella barra delle icone di Thonny.
Thonny richiederà di specificare il nome del file e di salvarlo prima di continuare l'esecuzione. Pertanto occorre inserire un nome di file valido nella casella di testo e poi premere il pulsante Salva.
A questo punto, se tutto è stato fatto correttamente, Thonny eseguirà il programma di lampeggio del led.
In foto il risultato che si dovrebbe ottenere (con led lampeggiante).
Conclusioni
In questa lezione abbiamo introdotto il led fisico descrivendone le sue caratteristiche nonché descritto la classe LED e il suo costruttore.
Abbiamo realizzato il semplice circuito per collegare il led al Raspberry Pi, infine abbiamo anche visto come scrivere il codice di controllo, con la libreria GPIOZero, per far lampeggiare il led.
Nella prossima lezione presenteremo ulteriori esempi di codice per controllare un led e analizzeremo altri utili metodi della libreria GPIOZero.