Nota
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti a noi?
Supporto tecnico esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.
Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni festive e giveaway: Partecipa a giveaway e promozioni durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!
1.1.3 Grafico a Barre LED
Introduzione
In questo progetto, accenderemo in sequenza le luci sul grafico a barre LED.
Componenti Necessari
Per questo progetto, avremo bisogno dei seguenti componenti.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK D’ACQUISTO |
|---|---|
- |
Schema Elettrico
T-Board Name |
physical |
wiringPi |
BCM |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO23 |
Pin 16 |
4 |
23 |
GPIO24 |
Pin 18 |
5 |
24 |
GPIO25 |
Pin 22 |
6 |
25 |
SPICE0 |
Pin 24 |
10 |
8 |
SPICE1 |
Pin 26 |
11 |
7 |
GPIO12 |
Pin 32 |
26 |
12 |
GPIO16 |
Pin 36 |
27 |
16 |
GPIO20 |
Pin 38 |
28 |
22 |
GPIO21 |
Pin 40 |
29 |
21 |
Procedure Sperimentali
Passo 1: Costruisci il circuito.
Nota
Fai attenzione alla direzione quando colleghi i componenti. Se li colleghi al contrario, non si accenderanno.
Passo 2: Vai alla cartella del codice.
cd ~/raphael-kit/python-pi5
Passo 3: Esegui il file eseguibile.
sudo python3 1.1.3_LedBarGraph_zero.py
Dopo l’esecuzione del codice, vedrai che i LED della barra LED si accendono e si spengono regolarmente.
Avvertimento
Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..
Code
Nota
Puoi Modificare/Reset/Copy/Esegui/Ferma il codice qui sotto. Ma prima, devi andare nella directory del codice come raphael-kit/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.
#!/usr/bin/env python3
from gpiozero import LED
from time import sleep
# Definisci i pin GPIO a cui sono collegati i LED
led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21]
# Crea oggetti LED per ogni pin
leds = [LED(pin) for pin in led_pins]
def odd_led_bar_graph():
# Accendi in sequenza i LED con numeri dispari (indice 0, 2, 4, ecc.)
for i in range(5):
j = i * 2 # Calcola l'indice dispari
leds[j].on() # Accendi il LED con numero dispari
sleep(0.3) # Ritardo per l'effetto visivo
leds[j].off() # Spegni il LED
def even_led_bar_graph():
# Accendi in sequenza i LED con numeri pari (indice 1, 3, 5, ecc.)
for i in range(5):
j = i * 2 + 1 # Calcola l'indice pari
leds[j].on() # Accendi il LED con numero pari
sleep(0.3) # Ritardo per l'effetto visivo
leds[j].off() # Spegni il LED
def all_led_bar_graph():
# Accendi in sequenza tutti i LED uno per uno
for led in leds:
led.on() # Accendi il LED
sleep(0.3) # Ritardo per l'effetto visivo
led.off() # Spegni il LED
def turn_off_all_leds():
# Spegni tutti i LED contemporaneamente
for led in leds:
led.off()
try:
# Ciclo principale per passare tra i vari schemi LED
while True:
odd_led_bar_graph() # Attiva i LED dispari
sleep(0.3) # Pausa tra i pattern
even_led_bar_graph() # Attiva i LED pari
sleep(0.3) # Pausa tra i pattern
all_led_bar_graph() # Attiva tutti i LED
sleep(0.3) # Pausa prima di ricominciare
except KeyboardInterrupt:
# Gestisci l'interruzione (Ctrl+C) in modo sicuro
turn_off_all_leds() # Assicurati che tutti i LED siano spenti all'uscita
pass
Spiegazione del Codice
Queste righe importano le classi e le funzioni necessarie.
LEDdalla libreriagpiozeroper controllare i LED esleepdalla libreriatimeper i ritardi.#!/usr/bin/env python3 from gpiozero import LED from time import sleep
La lista
led_pinscontiene i numeri dei pin GPIO.ledsè una lista di oggettiLED, ognuno dei quali corrisponde a un pin inled_pins.# Definisci i pin GPIO a cui sono collegati i LED led_pins = [18, 23, 24, 25, 8, 7, 12, 16, 20, 21] # Crea oggetti LED per ogni pin leds = [LED(pin) for pin in led_pins]
Accendi in sequenza i LED sui numeri dispari della barra LED.
def odd_led_bar_graph(): # Accendi in sequenza i LED con numeri dispari (indice 0, 2, 4, ecc.) for i in range(5): j = i * 2 # Calcola l'indice dispari leds[j].on() # Accendi il LED con numero dispari sleep(0.3) # Ritardo per l'effetto visivo leds[j].off() # Spegni il LED
Accendi in sequenza i LED sui numeri pari della barra LED.
def even_led_bar_graph(): # Accendi in sequenza i LED con numeri pari (indice 1, 3, 5, ecc.) for i in range(5): j = i * 2 + 1 # Calcola l'indice pari leds[j].on() # Accendi il LED con numero pari sleep(0.3) # Ritardo per l'effetto visivo leds[j].off() # Spegni il LED
Accendi in sequenza tutti i LED della barra LED uno per uno.
def all_led_bar_graph(): # Accendi in sequenza tutti i LED uno per uno for led in leds: led.on() # Accendi il LED sleep(0.3) # Ritardo per l'effetto visivo led.off() # Spegni il LED
Il ciclo
while Truecicla continuamente tra i pattern LED. Il bloccoexceptgestisce una KeyboardInterrupt (Ctrl+C), assicurando che tutti i LED siano spenti all’uscita.try: # Ciclo principale per passare tra i vari schemi LED while True: odd_led_bar_graph() # Attiva i LED dispari sleep(0.3) # Pausa tra i pattern even_led_bar_graph() # Attiva i LED pari sleep(0.3) # Pausa tra i pattern all_led_bar_graph() # Attiva tutti i LED sleep(0.3) # Pausa prima di ricominciare except KeyboardInterrupt: # Gestisci l'interruzione (Ctrl+C) in modo sicuro turn_off_all_leds() # Assicurati che tutti i LED siano spenti all'uscita pass