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.

../_images/1.1.3_led_bar_list.png

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

../_images/1.1.3_LedBarGraph_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

Nota

Fai attenzione alla direzione durante il collegamento. Se lo colleghi al contrario, non si accenderà.

../_images/1.1.3_LedBarGraph_circuit.png

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

  1. Queste righe importano le classi e funzioni necessarie. LED da gpiozero per il controllo dei LED e sleep da 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 corrispondente 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 ciascun pin
    leds = [LED(pin) for pin in led_pins]
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. Il ciclo while True alterna continuamente i pattern dei LED. Il blocco except gestisce 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