Nota
Ciao, benvenuto nella Community di Facebook dedicata agli appassionati di SunFounder Raspberry Pi, Arduino ed ESP32! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirsi a noi?
Supporto Esperto: Risolvi problematiche 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 concorsi e promozioni speciali.
👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti subito!
1.1.3 Grafico a Barre LED
Introduzione
In questo progetto, illumineremo progressivamente le luci sul grafico a barre LED.
Componenti Necessari
Per questo progetto, avremo bisogno dei seguenti componenti.
Schema a Blocchi
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 durante il collegamento. Se lo colleghi al contrario, non si accenderà.
Passo 2: Vai alla cartella del codice.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Passo 3: Esegui il file eseguibile.
sudo python3 1.1.3_LedBarGraph.py
Dopo l’esecuzione del codice, vedrai i LED sulla barra LED accendersi e spegnersi regolarmente.
Avvertimento
Se appare l’errore RuntimeError: Cannot determine SOC peripheral base address, consulta Se gpiozero non funziona.
Codice
Nota
Puoi Modificare/Reimpostare/Copiare/Eseguire/Arrestare il codice qui sotto. Ma prima, è necessario andare al percorso del codice sorgente, come davinci-kit-for-raspberry-pi/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 ciascun pin
leds = [LED(pin) for pin in led_pins]
def odd_led_bar_graph():
# Accende progressivamente 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() # Accende il LED dispari
sleep(0.3) # Ritardo per effetto visivo
leds[j].off() # Spegne il LED
def even_led_bar_graph():
# Accende progressivamente 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() # Accende il LED pari
sleep(0.3) # Ritardo per effetto visivo
leds[j].off() # Spegne il LED
def all_led_bar_graph():
# Accende progressivamente tutti i LED uno per uno
for led in leds:
led.on() # Accende il LED
sleep(0.3) # Ritardo per effetto visivo
led.off() # Spegne il LED
def turn_off_all_leds():
# Spegne tutti i LED contemporaneamente
for led in leds:
led.off()
try:
# Ciclo principale per alternare i pattern dei LED
while True:
odd_led_bar_graph() # Attiva i LED con numeri dispari
sleep(0.3) # Pausa tra i pattern
even_led_bar_graph() # Attiva i LED con numeri pari
sleep(0.3) # Pausa tra i pattern
all_led_bar_graph() # Attiva tutti i LED
sleep(0.3) # Pausa prima di ripartire
except KeyboardInterrupt:
# Gestisci l'interruzione (Ctrl+C) in modo sicuro
turn_off_all_leds() # Assicura che tutti i LED siano spenti all'uscita
pass
Spiegazione del Codice
Queste righe importano le classi e funzioni necessarie.
LEDdagpiozeroper il controllo dei LED esleepdatimeper 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 corrispondente 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 ciascun pin leds = [LED(pin) for pin in led_pins]
Accendi i LED sui numeri dispari del grafico a barre LED uno alla volta.
def odd_led_bar_graph(): # Accende progressivamente 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() # Accende il LED dispari sleep(0.3) # Ritardo per effetto visivo leds[j].off() # Spegne il LED
Accendi i LED sui numeri pari del grafico a barre LED uno alla volta.
def even_led_bar_graph(): # Accende progressivamente 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() # Accende il LED pari sleep(0.3) # Ritardo per effetto visivo leds[j].off() # Spegne il LED
Accendi i LED del grafico a barre LED uno alla volta.
def all_led_bar_graph(): # Accende progressivamente tutti i LED uno per uno for led in leds: led.on() # Accende il LED sleep(0.3) # Ritardo per effetto visivo led.off() # Spegne il LED
Il ciclo
while Truealterna continuamente i pattern dei LED. Il bloccoexceptgestisce un’interruzione da tastiera (Ctrl+C), assicurando che tutti i LED siano spenti all’uscita.
try: # Ciclo principale per alternare i pattern dei LED while True: odd_led_bar_graph() # Attiva i LED con numeri dispari sleep(0.3) # Pausa tra i pattern even_led_bar_graph() # Attiva i LED con numeri pari sleep(0.3) # Pausa tra i pattern all_led_bar_graph() # Attiva tutti i LED sleep(0.3) # Pausa prima di ripartire except KeyboardInterrupt: # Gestisci l'interruzione (Ctrl+C) in modo sicuro turn_off_all_leds() # Assicura che tutti i LED siano spenti all'uscita pass