.. note:: 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 [|link_sf_facebook|] e unisciti oggi stesso! .. _1.1.1_py_pi5: 1.1.1 LED Lampeggiante ============================ Introduzione ----------------- In questo progetto impareremo a programmare un LED lampeggiante. Grazie alle tue impostazioni, il LED potrà produrre una serie di fenomeni interessanti. Ora, mettiti al lavoro! Componenti Necessari ------------------------------ Per questo progetto, avremo bisogno dei seguenti componenti. .. image:: ../python_pi5/img/1.1.1_blinking_led_list.png :width: 800 :align: center È decisamente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - COMPONENTI NEL KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link sottostanti. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK D'ACQUISTO * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_led` - |link_led_buy| Schema Elettrico --------------------- In questo esperimento, colleghiamo il pin GPIO 17 del Raspberry Pi all'anodo (pin lungo) del LED, poi il catodo (pin corto) del LED a una resistenza, e infine colleghiamo l'altro capo della resistenza al pin GND sul Raspberry Pi. Per accendere il LED dobbiamo impostare GPIO17 su alto (3,3V). Possiamo ottenere questo risultato programmando. .. note:: **Pin11** si riferisce all'11° pin del Raspberry Pi da sinistra a destra, e i suoi numeri di pin **BCM** corrispondenti sono mostrati nella seguente tabella. Per il contenuto relativo al linguaggio Python, BCM 17 è 17 nella colonna BCM della seguente tabella. Allo stesso tempo, corrisponde all'11° pin del Raspberry Pi, Pin 11. ============ ======== === T-Board Name physical BCM GPIO17 Pin 11 17 ============ ======== === .. image:: ../python_pi5/img/1.1.1_blinking_led_schematic.png :width: 800 :align: center Procedure Sperimentali ----------------------------- **Passo 1:** Costruisci il circuito. .. image:: ../python_pi5/img/1.1.1_blinking_led_circuit.png :width: 800 :align: center **Passo 2:** Vai nella cartella del codice ed eseguilo. 1. Se utilizzi uno schermo, ti consigliamo di seguire i seguenti passaggi. Trova ``1.1.1_BlinkingLed_zero.py`` e fai doppio clic per aprirlo. Ora ti trovi nel file. Clicca su **Esegui** ->\ **Esegui modulo** nella finestra e appariranno i seguenti contenuti. Per interrompere l'esecuzione, basta cliccare sul pulsante X in alto a destra per chiudere e tornare al codice. Se modifichi il codice, prima di cliccare su **Esegui modulo (F5)** è necessario salvarlo. Quindi puoi vedere i risultati. 2. Se accedi in remoto al Raspberry Pi, digita il comando: .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 .. note:: Cambia directory nel percorso del codice in questo esperimento tramite ``cd``. **Passo 3:** Esegui il codice .. raw:: html .. code-block:: sudo python3 1.1.1_BlinkingLed_zero.py .. note:: Qui sudo - superuser do, e python significa eseguire il file tramite Python. Dopo l'esecuzione del codice, vedrai il LED lampeggiare. **Passo 4:** Se vuoi modificare il file di codice ``1.1.1_BlinkingLed_zero.py``, premi ``Ctrl + C`` per interrompere l'esecuzione del codice. Quindi digita il seguente comando per aprire ``1.1.1_BlinkingLed_zero.py``: .. raw:: html .. code-block:: nano 1.1.1_BlinkingLed_zero.py .. note:: nano è uno strumento di editor di testo. Il comando viene utilizzato per aprire il file di codice ``1.1.1_BlinkingLed_zero.py`` tramite questo strumento. Premi ``Ctrl+X`` per uscire. Se hai modificato il codice, verrà visualizzato un prompt che chiede se salvare le modifiche o meno. Digita ``Y`` (salva) oppure ``N`` (non salvare). Quindi premi ``Invio`` per uscire. Digita nano ``1.1.1_BlinkingLed_zero.py`` di nuovo per vedere l'effetto dopo la modifica. .. warning:: Se viene visualizzato l'errore ``RuntimeError: Cannot determine SOC peripheral base address``, fare riferimento a :ref:`faq_soc`. **Code** Il seguente è il codice del programma: .. note:: 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. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED from time import sleep # Inizializza un LED collegato al pin GPIO 17 utilizzando la libreria GPIO Zero. led = LED(17) try: # Avvia un ciclo infinito per alternare lo stato del LED. while True: # Accendi il LED e stampa un messaggio sulla console. led.on() print('...LED ON') # Attendi 0,5 secondi con il LED acceso. sleep(0.5) # Spegni il LED e stampa un messaggio sulla console. led.off() print('LED OFF...') # Attendi 0,5 secondi con il LED spento. sleep(0.5) except KeyboardInterrupt: # Gestisci in modo elegante un'interruzione da tastiera (Ctrl+C) interrompendo il ciclo. # GPIO Zero si occupa automaticamente della pulizia delle impostazioni GPIO all'uscita. pass **Spiegazione del Codice** #. Quando il sistema rileva questo, cercherà il percorso di installazione di python nelle impostazioni dell'ambiente, quindi chiamerà l'interprete corrispondente per completare l'operazione. Serve a prevenire che l'utente non abbia installato python nel percorso predefinito ``/usr/bin``. .. code-block:: python #!/usr/bin/env python3 #. Queste righe importano le classi e le funzioni necessarie. ``LED`` da ``gpiozero`` per il controllo del LED e ``sleep`` da ``time`` per le pause. .. code-block:: python from gpiozero import LED from time import sleep #. Questa riga crea un oggetto LED collegato al pin GPIO 17. .. code-block:: python # Inizializza un LED collegato al pin GPIO 17 utilizzando la libreria GPIO Zero. led = LED(17) #. Viene avviato un ciclo infinito utilizzando ``while True:``. All'interno del ciclo, il LED viene acceso (``led.on()``) e viene stampato un messaggio. Il programma quindi si interrompe per 0,5 secondi (``sleep(0.5)``). Successivamente, il LED viene spento (``led.off()``), viene stampato un altro messaggio e il programma si interrompe di nuovo per 0,5 secondi. .. code-block:: python try: # Avvia un ciclo infinito per alternare lo stato del LED. while True: # Accendi il LED e stampa un messaggio sulla console. led.on() print('...LED ON') # Attendi 0,5 secondi con il LED acceso. sleep(0.5) # Spegni il LED e stampa un messaggio sulla console. led.off() print('LED OFF...') # Attendi 0,5 secondi con il LED spento. sleep(0.5) #. Il blocco ``except`` cattura un'``interruzione da tastiera`` (come premere Ctrl+C) ed esce in sicurezza dal ciclo. Il comando ``pass`` viene utilizzato qui come segnaposto per indicare che non viene intrapresa alcuna azione specifica all'interruzione. .. code-block:: python except KeyboardInterrupt: # Gestisci in modo elegante un'interruzione da tastiera (Ctrl+C) interrompendo il ciclo. # GPIO Zero si occupa automaticamente della pulizia delle impostazioni GPIO all'uscita. pass