Nota

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 [Qui] e unisciti subito!

1.1.3 Barra LED

Introduzione

In questo progetto, accenderemo progressivamente le luci della Barra LED.

Componenti

../_images/list_led_bar2.png

Schema Elettrico

../_images/schematic_led_bar2.png

Procedura Sperimentale

Passo 1: Costruisci il circuito.

Nota

Presta attenzione alla direzione durante il collegamento. Se la colleghi al contrario, non si accenderà.

../_images/image662.png

Passo 2: Vai alla cartella del codice.

cd ~/davinci-kit-for-raspberry-pi/nodejs/

Passo 3: Compila il codice.

sudo node led_bar_graph.js

Dopo aver eseguito il codice, vedrai i LED sulla barra accendersi e spegnersi regolarmente.

Codice

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

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.

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.

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.

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.

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

../_images/image671.jpeg