.. 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é Unirsi?**
- **Supporto Esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra community e del nostro team.
- **Impara e Condividi**: Scambia suggerimenti e tutorial per migliorare le tue competenze.
- **Anteprime Esclusive**: Accedi in anteprima agli annunci dei nuovi prodotti.
- **Sconti Speciali**: Approfitta di sconti esclusivi sui nostri nuovi prodotti.
- **Promozioni Festive e Omaggi**: Partecipa a omaggi e promozioni speciali per le festività .
👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti subito!
1.1.3 Barra LED
======================
Introduzione
----------------
In questo progetto, accenderemo progressivamente le luci della Barra LED.
Componenti
----------------
.. image:: img/list_led_bar.png
Schema Elettrico
-------------------------
.. image:: img/schematic_led_bar.png
Procedura Sperimentale
------------------------------
**Passo 1**: Costruisci il circuito.
.. note::
Presta attenzione alla direzione durante il collegamento. Se la colleghi al contrario, non si accenderà .
.. image:: img/image66.png
**Passo 2**: Vai alla cartella del codice.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**Passo 3**: Compila il codice.
.. raw:: html
.. code-block::
sudo node led_bar_graph.js
Dopo aver eseguito il codice, vedrai i LED sulla barra 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é la barra LED utilizza più pin, creiamo un array costante ``pins`` per memorizzarli in gruppo.
.. code-block:: js
var leds = [];
for (let i = 0; i < pins.length; i++) {
leds[i] = new Gpio(pins[i], { mode: Gpio.OUTPUT });
}
Istanziamo questi pin come oggetti ``leds`` utilizzando 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 nelle
posizioni dispari della barra.
.. 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 nelle
posizioni pari della barra.
.. 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 dei LED viene alternato ogni 500 ms.
Immagine del Fenomeno
---------------------------
.. image:: img/image67.jpeg