.. note::
Ciao, benvenuto nella Community di appassionati di Raspberry Pi, Arduino e ESP32 di SunFounder su Facebook! Approfondisci il tuo viaggio con Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
**Perché unirti a noi?**
- **Supporto esperto**: Risolvi i problemi post-vendita e le sfide tecniche con l'aiuto della nostra community e del nostro team.
- **Impara e Condividi**: Scambia consigli e tutorial per migliorare le tue competenze.
- **Anteprime esclusive**: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime.
- **Sconti speciali**: Godi di sconti esclusivi sui nostri prodotti più recenti.
- **Promozioni e concorsi festivi**: Partecipa a concorsi e promozioni durante le festività.
👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso!
.. _1.1.1_js:
1.1.1 LED lampeggiante
=========================
Introduzione
-----------------
In questo progetto, impareremo come far lampeggiare un LED tramite la programmazione.
Attraverso le tue impostazioni, il LED può produrre una serie di effetti interessanti.
Ora, provaci.
Componenti necessari
------------------------------
In questo progetto, abbiamo bisogno dei seguenti componenti.
.. image:: img/blinking_led_list.png
:width: 800
:align: center
È sicuramente conveniente acquistare un kit completo, ecco il link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nome
- OGGETTI IN QUESTO 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 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),
quindi la resistenza a 3,3 V, e collega il catodo (il pin corto) del LED al GPIO17 del
Raspberry Pi. Pertanto, per accendere il LED, dobbiamo impostare il livello di GPIO17
su basso (0V). Possiamo ottenere questo risultato programmando.
.. 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.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
.. note::
Cambia la directory nel percorso del codice di questo esperimento tramite ``cd``.
**Passo 3:** Esegui il codice
.. raw:: html
.. code-block::
sudo node blink.js
.. 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 desideri modificare il file di codice blink.js, premi ``Ctrl + C`` per
interrompere l'esecuzione del codice. Quindi digita il seguente comando per aprire
blink.js:
.. raw:: html
.. code-block::
nano blink.js
.. note::
nano è uno strumento di editor di testo. Il comando serve per aprire il file di codice
blink.js tramite questo strumento.
Premi ``Ctrl+X`` per uscire. Se hai modificato il codice, verrà visualizzato un messaggio
che ti chiederà se desideri salvare le modifiche o meno. Digita ``Y`` (salva) o ``N``
(non salvare).
Quindi premi ``Invio`` per uscire. Digita nuovamente nano blink.js per vedere l'effetto dopo la modifica.
**Codice**
Il seguente è il codice del programma:
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17,{mode: Gpio.OUTPUT});
var led_state = 0;
function blink_led(){
led.digitalWrite(led_state);
led_state = !led_state;
}
setInterval(blink_led,300);
In alternativa, scrivi il codice come una funzione a freccia più specifica per js:
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17,{mode: Gpio.OUTPUT});
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
**Spiegazione del codice**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
Importa il costruttore Gpio nel pacchetto pigpio in questo modo,
e poi definisci una costante ``Gpio`` per rappresentare questo costruttore.
Con una varietà di costruttori, possiamo utilizzare js per controllare i dispositivi elettronici.
``pigpio`` può essere utilizzato per implementare GPIO veloci, PWM, controllo del servo,
notifica di cambio di stato e gestione delle interruzioni.
* `pigpio - github `_
.. Una libreria wrapper per pigpio in C per abilitare GPIO veloci, PWM, controllo del servo,
.. notifica di cambio di stato e gestione delle interruzioni con JS su Raspberry Pi Zero,
.. 1, 2, 3 o 4.
.. code-block:: js
const led = new Gpio(17,{mode: Gpio.OUTPUT});
La parola chiave ``new`` viene utilizzata per costruire oggetti istanziati della classe.
Collega il LED al GPIO17 della scheda di espansione a forma di T,
imposta la modalità LedPin su output e assegnala alla costante ``led``,
cioè costruisci un oggetto GPIO17 ``led``, e la sua modalità è la modalità di uscita.
Ci sono due modi per numerare i pin IO sul Raspberry Pi:
numero BOARD e numero BCM. Nel nostro progetto, utilizziamo il numero BCM.
È necessario impostare ogni canale utilizzato come input o output.
.. code-block:: js
function blink_led(){
led.digitalWrite(led_state);
led_state = !led_state;
}
setInterval(blink_led,300);
Il metodo ``setInterval()`` può chiamare funzioni o calcolare espressioni con un periodo specificato (in millisecondi).
Qui cambiamo lo stato operativo del LED con un periodo di 300ms.
* `setInerval `_
Il metodo ``gpio.digitalWrite(level)`` imposta il livello gpio su 1 o 0.
.. code-block:: js
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
Riscrivi il codice come funzione a freccia per renderlo più breve.
* `Arrow Functions `_
Immagine del fenomeno
-------------------------
.. image:: img/image54.jpeg
:width: 800
:align: center