.. note:: 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 [|link_sf_facebook|] e unisciti subito! .. _1.1.3_py_pi5: 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. .. image:: ../python_pi5/img/1.1.3_led_bar_list.png .. raw:: html
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 ============ ======== ======== === .. image:: ../python_pi5/img/1.1.3_LedBarGraph_schematic.png Procedure Sperimentali ------------------------------ **Passo 1**: Costruisci il circuito. .. note:: Fai attenzione alla direzione durante il collegamento. Se lo colleghi al contrario, non si accenderà. .. image:: ../python_pi5/img/1.1.3_LedBarGraph_circuit.png **Passo 2:** Vai alla cartella del codice. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Passo 3**: Esegui il file eseguibile. .. raw:: html .. code-block:: sudo python3 1.1.3_LedBarGraph.py Dopo l'esecuzione del codice, vedrai i LED sulla barra LED accendersi e spegnersi regolarmente. .. warning:: Se appare l’errore ``RuntimeError: Cannot determine SOC peripheral base address``, consulta :ref:`faq_soc` **Codice** .. note:: 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. .. raw:: html .. code-block:: python #!/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. ``LED`` da ``gpiozero`` per il controllo dei LED e ``sleep`` da ``time`` per i ritardi. .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED from time import sleep #. La lista ``led_pins`` contiene i numeri dei pin GPIO. ``leds`` è una lista di oggetti ``LED``, ognuno corrispondente a un pin in ``led_pins``. .. code-block:: python # 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. .. code-block:: python 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. .. code-block:: python 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. .. code-block:: python 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 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. .. code-block:: python 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