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.

../_images/1.1.3_led_bar_list.png

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK D’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Grafico a Barre LED

-

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

../_images/1.1.3_LedBarGraph_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

Nota

Fai attenzione alla direzione quando colleghi i componenti. Se li colleghi al contrario, non si accenderanno.

../_images/1.1.3_LedBarGraph_circuit.png

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

  1. Queste righe importano le classi e le funzioni necessarie. LED dalla libreria gpiozero per controllare i LED e sleep dalla libreria time per i ritardi.

    #!/usr/bin/env python3
    from gpiozero import LED
    from time import sleep
    
  2. La lista led_pins contiene i numeri dei pin GPIO. leds è una lista di oggetti LED, ognuno dei quali corrisponde a un pin in led_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]
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. Il ciclo while True cicla continuamente tra i pattern LED. Il blocco except gestisce 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