.. note::
Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
**Perché unirti a noi?**
- **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra comunità e del nostro team.
- **Impara e condividi**: Scambia suggerimenti e tutorial per migliorare le tue competenze.
- **Anteprime esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.
- **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
- **Promozioni festive e concorsi**: Partecipa a concorsi e promozioni durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso!
.. _1.1.1_py:
1.1.1 LED Lampeggiante
=========================
Introduzione
-----------------
In questo progetto, impareremo a far lampeggiare un LED tramite la programmazione.
Attraverso le tue impostazioni, il LED può produrre una serie di fenomeni interessanti.
Adesso, cominciamo.
Componenti Necessari
------------------------------
In questo progetto, abbiamo bisogno dei seguenti componenti.
.. image:: ../img/blinking_led_list.png
:width: 800
:align: center
È sicuramente comodo acquistare un kit completo, ecco il link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nome
- ARTICOLI IN QUESTO KIT
- LINK
* - Kit Raphael
- 337
- |link_Raphael_kit|
Puoi anche acquistarli separatamente dai link qui sotto.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUZIONE AI COMPONENTI
- LINK PER L'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, collega una resistenza da 220Ω all'anodo (il pin lungo del LED),
poi la resistenza ai 3,3 V, e collega il catodo (il pin corto) del LED al GPIO17 del
Raspberry Pi. Pertanto, per accendere il LED, dobbiamo impostare GPIO17 al livello basso
(0V). Possiamo ottenere questo fenomeno tramite la programmazione.
.. note::
**Pin11** si riferisce all'11° pin del Raspberry Pi da sinistra a destra, e i corrispondenti numeri di pin **wiringPi** e **BCM** sono mostrati nella tabella seguente.
Nella programmazione in C, consideriamo GPIO0 equivalente a 0 in wiringPi. Nel contesto del
linguaggio Python, BCM 17 corrisponde a 17 nella colonna BCM della tabella seguente. Allo
stesso tempo, essi corrispondono all'11° pin del Raspberry Pi, Pin 11.
============ ======== ======== ===
T-Board Name physical wiringPi BCM
GPIO17 Pin 11 0 17
============ ======== ======== ===
.. image:: ../img/image48.png
:width: 800
:align: center
Procedure Sperimentali
-----------------------------
**Passo 1:** Costruisci il circuito.
.. image:: ../img/image49.png
:width: 800
:align: center
**Passo 2:** Vai alla cartella del codice e avvialo.
1. Se usi uno schermo, ti consigliamo di seguire i seguenti passi.
Trova 1.1.1_BlinkingLed.py e fai doppio clic per aprirlo. Ora sei nel file.
Clicca su **Run** -> **Run Module** nella finestra e appariranno i seguenti contenuti.
Per interrompere l'esecuzione, fai semplicemente clic sul pulsante X in alto a destra per
chiuderlo e tornerai al codice. Se modifichi il codice, prima di fare clic su **Run Module
(F5)** devi salvarlo. Poi potrai vedere i risultati.
2. Se accedi al Raspberry Pi da remoto, digita il seguente comando:
.. raw:: html
.. code-block::
cd ~/raphael-kit/python
.. note::
Cambia directory al percorso del codice in questo esperimento tramite ``cd``.
**Passo 3:** Esegui il codice
.. raw:: html
.. code-block::
sudo python3 1.1.1_BlinkingLed.py
.. note::
Qui "sudo" significa superuser do, e "python" indica di 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.py, premi ``Ctrl + C``
per interrompere l'esecuzione del codice. Poi digita il seguente comando per aprire 1.1.1_BlinkingLed.py:
.. raw:: html
.. code-block::
nano 1.1.1_BlinkingLed.py
.. note::
nano è uno strumento di editor di testo. Il comando viene utilizzato per aprire il file di codice 1.1.1_BlinkingLed.py con questo strumento.
Premi ``Ctrl+X`` per uscire. Se hai modificato il codice, apparirà un messaggio che
chiederà se vuoi salvare le modifiche. Digita ``Y`` (salva) o ``N`` (non salvare).
Poi premi ``Enter`` per uscire. Digita di nuovo nano 1.1.1_BlinkingLed.py per vedere l'effetto dopo la modifica.
**Codice**
Il seguente è il codice del programma:
.. note::
Puoi **Modificare/Reimpostare/Copiare/Eseguire/Interrompere** il codice qui sotto. Ma prima, devi andare al percorso del codice come ``raphael-kit/python``. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l'effetto.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
LedPin = 17
def setup():
# Imposta le modalità GPIO su numerazione BCM
GPIO.setmode(GPIO.BCM)
# Imposta la modalità del LedPin come output e il livello iniziale su High (3,3 V)
GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
# Definisce una funzione principale per il processo principale
def main():
while True:
print ('...LED ON')
# Accende il LED
GPIO.output(LedPin, GPIO.LOW)
time.sleep(0.5)
print ('LED OFF...')
# Spegne il LED
GPIO.output(LedPin, GPIO.HIGH)
time.sleep(0.5)
# Definisce una funzione destroy per pulire tutto dopo il termine dello script
def destroy():
# Spegne il LED
GPIO.output(LedPin, GPIO.HIGH)
# Libera le risorse
GPIO.cleanup()
# Se si esegue direttamente questo script, eseguire:
if __name__ == '__main__':
setup()
try:
main()
# Quando viene premuto 'Ctrl+C', verrà eseguita la funzione destroy().
except KeyboardInterrupt:
destroy()
**Spiegazione del Codice**
.. code-block:: python
#!/usr/bin/env python3
Quando il sistema rileva questo, cercherà il percorso di installazione di python nelle
impostazioni dell'env, quindi chiamerà l'interprete corrispondente per completare
l'operazione. Serve a prevenire che l'utente non installi python nel percorso predefinito ``/usr/bin``.
.. code-block:: python
import RPi.GPIO as GPIO
In questo modo, importiamo la libreria RPi.GPIO e definiamo una variabile, GPIO,
per sostituire RPI.GPIO nel codice seguente.
.. code-block:: python
import time
Importa il pacchetto time, per utilizzare la funzione di ritardo nel programma seguente.
.. code-block:: python
LedPin = 17
Il LED è collegato al GPIO17 della scheda di estensione a forma di T, cioè BCM
17.
.. code-block:: python
def setup():
GPIO.setmode(GPIO.BCM)
GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
Imposta la modalità del LedPin come output e il livello iniziale su High (3,3 V).
Ci sono due modi di numerare i pin IO su un Raspberry Pi all'interno di RPi.GPIO:
numeri BOARD e numeri BCM. Nei nostri progetti, usiamo i numeri BCM. Devi configurare
ogni canale che usi come input o output.
.. code-block:: python
GPIO.output(LedPin, GPIO.LOW)
Imposta GPIO17 (BCM17) a 0V (livello basso). Poiché il catodo del LED è collegato a
GPIO17, il LED si accenderà.
.. code-block:: python
time.sleep(0.5)
Ritarda per 0,5 secondi. Qui, l'istruzione è la funzione di ritardo in linguaggio C, l'unità è il secondo.
.. code-block:: python
def destroy():
GPIO.cleanup()
Definisce una funzione destroy per pulire tutto dopo il termine dello script.
.. code-block:: python
if __name__ == '__main__':
setup()
try:
main()
# Quando viene premuto 'Ctrl+C', verrà eseguita la funzione destroy().
except KeyboardInterrupt:
destroy()
Questa è la struttura generale di esecuzione del codice. Quando il programma inizia a
essere eseguito, inizializza il pin eseguendo setup(), e poi esegue il codice nella
funzione main() per impostare il pin su livelli alti e bassi. Quando si preme ``Ctrl+C``,
il programma eseguirà la funzione destroy().
Immagine del Fenomeno
----------------------------
.. image:: ../img/image54.jpeg
:width: 800
:align: center