Come fare LED lampeggianti con il Raspberry Pi

Immagine in evidenza del LED Raspberry Pi

Il Raspberry Pi è più di un semplice computer in miniatura. È una scheda potente che ti consente di fare così tante cose con i suoi pin GPIO. Qui ti mostriamo come fare LED lampeggianti con il Raspberry Pi.

Indice dei contenuti

  • Cosa fa lampeggiare i LED?
  • Cosa ti serve
  • Come fare LED lampeggianti
  • Come funziona il codice
  • Facciamo lampeggiare altri LED!
  • Domande frequenti

Leggi anche: Come controllare il tuo Raspberry Pi tramite Windows via SSH

Cosa fa lampeggiare i LED?

Quando guardi la parte superiore del tuo Raspberry Pi, troverai circa 40 pin metallici sporgenti dalla scheda del circuito. Se hai un Raspberry Zero, ci sono probabilmente fori circolari per saldare i pin di intestazione. In entrambi i casi, si chiamano pin GPIO (General Purpose Input / Output).

Pin GPIO Raspberry Pi

Ogni pin GPIO è progettato per avere uno dei due stati in un dato momento: un HIGH e un LOW. Per le specifiche di pinout del Raspberry Pi, un pin caricato a 3.3 V conta come un HIGH o un “logico 1”, mentre qualsiasi cosa al di sotto di circa 2.5 V conta come un LOW o “logico 0”. Una scheda basata su 3.3 V per uscite alte e basse è detta essere su “logica 3.3v”.

Quando colleghi un LED tra un pin su HIGH e un pin GND, stai fondamentalmente creando un circuito completo. Il LED dovrebbe accendersi a causa dell’elettricità che passa.

Schema del circuito LED Lt Spice

A volte i tuoi LED si bruciano quando c’è troppo corrente che passa attraverso di essi. Per evitare che ciò accada, puoi aggiungere una resistenza. Non importa se è sul lato anodo o catodo: entrambi i lati dovrebbero ridurre la corrente che passa.

Leggi anche: Come programmare un Arduino con un Raspberry Pi

GPIO e altri pin

Facciamo chiarezza qui, poiché non tutti quei pin metallici sono considerati GPIO. Sono GPIO solo se possono essere programmati per avere un alto o un basso – da qui il termine “Input / Output.” Per il Raspberry PI, ci sono anche pin progettati per alimentazione (3.3v, 5v e GND) e per lavorare con EEPROM (ID_SD e ID_SC).

Questa volta, non dovrai pensare a tutti quegli altri pin tranne GND e un pin GPIO.

Programmazione dei pin GPIO

Come fai a dire a ciascun pin GPIO cosa fare? A un livello molto basilare, dovrai creare comandi in codice macchina. Questo sarà un po’ troppo difficile per i principianti.

Invece, per il Raspberry Pi, puoi usare Python o C++, che poi viene compilato in codice macchina.

Per questo particolare progetto, stiamo usando Python, poiché è più facile da usare.

Leggi anche: Come installare Windows 11 su un Raspberry Pi 4

Cosa ti serve

  • Qualsiasi modello di Raspberry Pi che non sia il Pico (preferibilmente il Raspberry Pi 3 Model B+ come quello in questo esempio, ma qualsiasi modello va bene), installato con il Raspberry Pi OS.
  • Un monitor e un cavo HDMI
  • Mouse e tastiera
  • Un caricabatterie per telefono (per alimentare il Raspberry Pi)
  • Un piccolo LED
  • Una resistenza da 250Ω (può essere di qualsiasi valore vicino a questo)
  • Una breadboard senza saldature
  • x2 fili jumper maschio-femmina (o maschio-maschio se hai un cappello di intestazione)

Come fare LED lampeggianti

Facciamo questo passo dopo passo e facciamo lampeggiare un LED da solo.

  1. Apri il tuo terminale e digita sudo apt-get install python3-rpi.gpio per installare il modulo RPi.GPIO per Python 3.

Terminale Installa Python Gpio

  1. Apri un editor di testo e digita questo codice:
import RPI.GPIO as GPIO  
from time import sleep  
  
GPIO.setwarnings(False)  
GPIO.setmode(GPIO.BOARD)  
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)  
  
while True:  
        GPIO.output(7, GPIO.HIGH)  
print("LED acceso")  
        sleep(1)  
        GPIO.output(7, GPIO.LOW)  
print("LED spento")  
        sleep(1)
  1. Salvalo in una cartella da qualche parte. Il nome dell’estensione dovrebbe essere .py. Sul mio Raspberry Pi, l’ho chiamato “rpi-blink.py” per facilitarne la ricerca.

Esplora file Cartella Rpi Blink

  1. Spegni il tuo Raspberry Pi e rimuovilo da tutte le fonti di alimentazione.
  2. Per iniziare a costruire il circuito, collega il tuo LED in modo che ci sia una resistenza sul lato catodo o anodo, quindi punta il lato catodo al pin 7 e il lato anodo al pin 9 (GND).

Schema del circuito LED X1 Lt Spice

Suggerimento: per capire il numero del pin, tieni il tuo Raspberry Pi in modo che i pin GPIO siano a destra. Il pin in alto a sinistra è il pin 1, in alto a destra è il pin 2. Quello sotto il pin 1 è il pin 3, poi a destra di esso è il pin 4, e così via.

  1. Riaccendilo in modo da poter eseguire lo script Python. Apri il tuo Terminale e usa cd per spostarti nella cartella del file Python. Digita:
python3 rpi-blink.py

per far lampeggiare il LED.

Terminale Esegui Rpi Blink X1

Alternativa: se hai Thonny Python IDE, fai clic sul pulsante “Esegui script corrente” per farlo eseguire direttamente dall’IDE.

Pulsante Esegui Thonny Python Ide

  1. Per farlo fermare, premi Ctrl + C all’interno del terminale. Ma se stai usando Thonny Python IDE, basta chiudere l’editor.

Raspberry Pi LED lampeggiante X1

Leggi anche: 10 utili one-liner Python che devi conoscere

Come funziona il codice

Ci sono due cose che lo fanno funzionare: il codice e il circuito. Iniziamo con il codice e dividiamolo in tre parti:

  1. Comandi di importazione
  2. Comandi di configurazione
  3. Comandi in loop

In pratica, è utile pensare al codice come piccole funzioni raggruppate insieme per creare funzioni più grandi.

Comandi di importazione

Python normalmente non rende così facile programmare i pin GPIO. C’è un sacco di roba che succede dietro le quinte. La buona notizia è che puoi importare il codice che gestisce tutte queste cose fastidiose.

Dai un’occhiata alle righe 1 e 2:

import RPI.GPIO as GPIO  
from time import sleep

Queste sono una coppia di righe che importano codice da qualcosa chiamato “modulo Python.”

import RPI.GPIO as GPIO ti consente di importare i contenuti del modulo RPI.GPIO e ti consente di utilizzare la parola chiave GPIO per chiamare una funzione relativa a RPI.GPIO.

D’altra parte, from time import sleep ti consente di importare la funzione sleep() dal modulo time integrato di Python. Questo ti consente di ritardare la riga successiva di codice per un certo numero di secondi.

Comandi di configurazione

Alcuni codici devono essere “configurati” o definiti in un certo modo perché vengono utilizzati da altri codici per eseguire logiche complesse. Li chiameremo comandi di configurazione.

A differenza dei comandi di importazione, i comandi di configurazione non “importano” codice da moduli esterni. Li importano dai moduli che hai già importato.

Come esempio, GPIO.setwarnings(False) importa la funzione .setwarnings() dal modulo RPI.GPIO, che era precedentemente definito come GPIO. Questa funzione ferma un avviso di attivazione quando esegui il codice. È impostato su True per impostazione predefinita.

Per spiegare gli altri due, continuiamo con GPIO.setmode(GPIO.BOARD). Questo dice a RPI.GPIO quale tipo di pinout stai per utilizzare. Ci sono due tipi: BOARD e BCM. Il pinout BOARD ti consente di scegliere i pin in base ai loro numeri. Nel frattempo, il pinout BCM si basa sulla loro designazione del canale SOC Broadcomm. Per mantenere le cose brevi, BOARD è più facile da usare perché è sempre lo stesso indipendentemente dal modello di Raspberry Pi che utilizzi. BCM, d’altra parte, tende a essere diverso da modello a modello.

Infine, abbiamo GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW) che utilizza la funzione .setup(), che ti chiede tre cose: il numero del pin, la sua designazione e il suo valore iniziale. Il numero del pin che stiamo usando qui è il pin numero 7. Dobbiamo impostarlo come pin di uscita e assicurarci che inizi come LOW. Senza questo, il Raspberry Pi non saprà mai cosa fare con il pin 7.

Comandi in loop

Questa è la parte interessante. I comandi in loop ti consentono di dire al Raspberry Pi di fare cose. Abbiamo iniziato questo ciclo con while True:, che cicla le righe di codice successive all’infinito.

Ci sono state tre funzioni nel ciclo: GPIO.output(), print() e sleep().

  • GPIO.output() prende un pin di uscita e lo imposta su HIGH o LOW. Se pensavi di cambiare quale pin utilizzare sul tuo Raspberry Pi, allora dovresti aver cambiato 7 con un numero di pin a tua scelta.
  • print() fa stampare qualcosa sulla console. Prende una stringa, un numero o una variabile che contiene le due precedenti.
  • sleep() mette in pausa l’intero programma per un certo numero di secondi. Usa un numero inferiore a 1 per farlo fermare per meno di un secondo.

Il circuito

Ora che sai come funziona il codice, diamo un’occhiata al circuito. Il codice crea un circuito collegando il pin 7 a GND. Quando il pin 7 è su HIGH, emette 3.3V che passa attraverso la resistenza e il LED, quindi entra in GND. Questo diventa un circuito completo ed è per questo che il LED si accende.

Schema del Raspberry Pi Pin 7 Acceso e Spento Lt Spice

Ma cosa succede quando il pin 7 è su LOW? I 3.3V scendono a circa 0V. In questo modo, nessuna elettricità passa attraverso il LED, quindi non si accende. Puoi pensare al pin 7 come a una sorta di interruttore, poiché accende o spegne il circuito.

Facciamo lampeggiare altri LED!

Ora che sai cosa fa funzionare le cose, modifichiamo un po’ il nostro codice per far funzionare due LED.

Per questo, dovrai solo aggiungere altri due LED di qualsiasi colore e altre due resistenze da 250Ω.

  1. Apri di nuovo il tuo editor di codice e incolla questo codice:
import RPI.GPIO as GPIO  
from time import sleep  
  
GPIO.setwarnings(False)  
GPIO.setmode(GPIO.BOARD)  
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)  
GPIO.setup(12, GPIO.OUT, initial=GPIO.HIGH)  
GPIO.setup(37, GPIO.OUT, initial=GPIO.LOW)  
  
while True:  
        GPIO.output(7, GPIO.HIGH)  
        GPIO.output(12, GPIO.LOW)  
print("LED acceso @ pin 7")  
print("LED spento @ pin 12")  
sleep(1)  
        GPIO.output(7, GPIO.LOW)  
        GPIO.output(12, GPIO.HIGH)  
print("LED spento @ pin 7")  
print("LED acceso @ pin 12")  
sleep(1)  
if x == 1:  
                GPIO.output(37, GPIO.HIGH)  
print("LED acceso @ pin 37")  
                x = 0  
elif x == 0:  
                GPIO.output(37, GPIO.LOW)  
print("LED spento @ pin 37")  
                x = 1  
else:  
print("Errore logico")  
sleep(1)
  1. Salva e poi spegni il tuo Raspberry Pi.
  2. Per collegare il circuito, per ogni LED che hai, collegalo a una resistenza in serie, quindi collega il lato catodo al Raspberry Pi. Ce ne dovrebbe essere uno per il pin 7, un altro per il pin 12 e l’ultimo per il pin 37. Il lato anodo dovrebbe essere collegato a GND. Ognuno di questi pin ha un pin GND accanto a loro. Questi dovrebbero essere i pin 9, 20 e 39.

Schema del circuito LED X3 Lt Spice

Suggerimento: se ti esaurisci i fili jumper maschio-femmina, puoi attaccare un jumper maschio-maschio a un jumper femmina-femmina per formare un jumper maschio-femmina più lungo.

Pin jumper

  1. Una volta terminato, accendi il Raspberry Pi e ripeti il passo 6 per avviare lo script Python.

Raspberry Pi LED lampeggiante X3

Leggi anche: Come utilizzare Python per attività di amministrazione di sistema Linux di base e networking

Domande frequenti

Perché il mio LED rimane acceso quando fermo lo script?

Quando il Raspberry Pi legge lo script Python, legge la riga prima di eseguire il comando. Probabilmente lo hai fermato subito dopo aver letto la riga GPIO.output(7, GPIO.HIGH), quindi non è stato in grado di portare il pin a LOW prima. Puoi lasciarlo così com’è, poiché tornerà a LOW la prossima volta che riavvii. In alternativa, crea un altro script Python che imposta il pin su LOW non appena viene eseguito.

Ho posizionato il mio LED sul pin giusto, ma non si accende affatto. Perché?

Ci sono due possibili motivi: o il tuo LED è rotto o hai messo il catodo sul lato opposto. Prova a girare prima i pin del LED.

È sicuro posizionare il LED al contrario?

Sì. Puoi posizionarlo al contrario e la corrente semplicemente non passerà. È una caratteristica speciale tra i diodi – anche i diodi emettitori di luce – consentono all’elettricità di passare da un lato e non dall’altro.

È sicuro riposizionare il LED mentre il Raspberry Pi è alimentato?

Se si tratta solo di girare il LED al contrario, allora va bene, e non c’è danno. Ma se stai per posizionare il LED ovunque, c’è la possibilità che tu possa cortocircuitare il pin 5v a un pin GPIO. Questo romperà la tua scheda.