.. 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.3_js:
1.1.3 Grafico a barre LED
===============================
Introduzione
--------------------
In questo progetto, illumineremo sequenzialmente le luci sul grafico a barre LED.
Componenti necessari
---------------------------------
In questo progetto, abbiamo bisogno dei seguenti componenti.
.. image:: img/list_led_bar.png
È 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_bar_graph`
- \-
Schema elettrico
-------------------------
.. image:: img/schematic_led_bar.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:: img/image66.png
**Passo 2**: Vai alla cartella del codice.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
**Passo 3**: Compila il codice.
.. raw:: html
.. code-block::
sudo node led_bar_graph.js
Dopo l'esecuzione del codice, vedrai i LED sul grafico a barre accendersi e spegnersi regolarmente.
**Codice**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
var pins = [17, 18, 27, 22, 23, 24, 25, 2, 3, 8];
var leds = [];
for (let i = 0; i < pins.length; i++) {
leds[i] = new Gpio(pins[i], { mode: Gpio.OUTPUT });
}
function oddLedBarGraph() {
for (let i = 0; i < leds.length; i++) {
if (i % 2 == 1) {
leds[i].digitalWrite(1);
} else {
leds[i].digitalWrite(0);
}
}
}
function evenLedBarGraph() {
for (let i = 0; i < leds.length; i++) {
if (i % 2 == 0) {
leds[i].digitalWrite(1);
} else {
leds[i].digitalWrite(0);
}
};
}
var odd_even = 0;
setInterval(() => {
odd_even = (odd_even + 1) % 2;
if (odd_even == 1) {
oddLedBarGraph();
} else {
evenLedBarGraph();
}
}, 500);
**Spiegazione del codice**
.. code-block:: js
var pins = [17,18,27,22,23,24,25,2,3,8];
Poiché il grafico a barre LED utilizzerà più pin, creiamo un array costante ``pins`` per memorizzarli in blocchi.
.. code-block:: js
var leds = [];
for (let i = 0; i < pins.length; i++) {
leds[i] = new Gpio(pins[i], { mode: Gpio.OUTPUT });
}
Istanzia questi pin come oggetti leds con un ciclo for.
.. code-block:: js
function oddLedBarGraph() {
for (let i = 0; i < leds.length; i++) {
if (i % 2 == 1) {
leds[i].digitalWrite(1);
} else {
leds[i].digitalWrite(0);
}
}
}
Implementa una funzione ``oddLedBarGraph()`` per accendere i LED sulle cifre dispari del grafico a barre LED.
.. code-block:: js
function evenLedBarGraph() {
for (let i = 0; i < leds.length; i++) {
if (i % 2 == 0) {
leds[i].digitalWrite(1);
} else {
leds[i].digitalWrite(0);
}
};
}
Implementa una funzione ``evenLedBarGraph()`` per accendere i LED sulle cifre pari del grafico a barre LED.
.. code-block:: js
var odd_even = 0;
setInterval(() => {
odd_even = (odd_even + 1) % 2;
if (odd_even == 1) {
oddLedBarGraph();
} else {
evenLedBarGraph();
}
}, 500);
Lo stato operativo del LED viene alternato ogni 500ms.
Immagine del fenomeno
---------------------------
.. image:: img/image67.jpeg