.. 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