Nota

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

1.1.2 LED RGB

Introduzione

In questo progetto, controlleremo un LED RGB per farlo lampeggiare in vari colori.

Componenti necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/list_rgb_led1.png

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

OGGETTI IN QUESTO KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED RGB

ACQUISTA

Schema elettrico

Dopo aver collegato i pin di R, G e B a una resistenza di limitazione della corrente, collegali rispettivamente a GPIO17, GPIO18 e GPIO27. Il pin più lungo (GND) del LED si collega al GND del Raspberry Pi. Quando i tre pin ricevono valori PWM diversi, il LED RGB visualizzerà colori differenti.

../_images/rgb_led_schematic1.png

Procedure sperimentali

Passo 1: Costruisci il circuito.

../_images/image611.png

Passo 2: Vai alla cartella del codice.

cd ~/raphael-kit/nodejs/

Passo 3: Esegui il codice.

sudo node rgb_led.js

Dopo l’esecuzione del codice, vedrai che il LED RGB visualizza rosso, verde, blu, giallo, rosa e ciano.

Codice

const Gpio = require('pigpio').Gpio;
const ledred = new Gpio(17, { mode: Gpio.OUTPUT });
const ledgreen = new Gpio(18, { mode: Gpio.OUTPUT });
const ledblue = new Gpio(27, { mode: Gpio.OUTPUT });

function colorset(r, g, b) {
    ledred.pwmWrite(r);
    ledgreen.pwmWrite(g);
    ledblue.pwmWrite(b);
}

var color_index = -1;

setInterval(() => {
color_index += 1;
switch (color_index) {
    case 0:
        colorset(0xff, 0x00, 0xFF);
        break;
    case 1:
        colorset(0x00, 0xff, 0x00);
        break;
    case 2:
        colorset(0x00, 0x00, 0xff);
        break;
    case 3:
        colorset(0xff, 0xff, 0x00);
        break;
    case 4:
        colorset(0xff, 0x00, 0xff);
        break;
    case 5:
        colorset(0xc0, 0xff, 0x3e);
        break;
    default:
        color_index=-1;
    }
}, 500);

Spiegazione del codice

const ledred = new Gpio(17,{mode: Gpio.OUTPUT});
const ledgreen = new Gpio(18,{mode: Gpio.OUTPUT});
const ledblue = new Gpio(27,{mode: Gpio.OUTPUT});

Inizializza i pin 17, 18 e 27 in modalità output, e assegnali rispettivamente alle costanti ledred, ledgreen e ledblue.

function colorset(r,g,b){
    ledred.pwmWrite(r);
    ledgreen.pwmWrite(g);
    ledblue.pwmWrite(b);
}

Implementa una funzione colorset(r,g,b), utilizzata per scrivere valori di impulso sui pin 17, 18, 27. La libreria Gpio incapsula la funzione pwmWrite() per scrivere valori di impulso sui pin, con valori compresi tra 0x00 e 0xff. Puoi quindi scrivere valori RGB sul LED RGB tramite la funzione colorset(r,g,b), in modo da farlo visualizzare vari colori.

Nota

Per domande sull’RGB, fai riferimento al sito web: https://www.rapidtables.com/web/color/RGB_Color.html

var color_index = -1;

setInterval(() => {
color_index += 1;
switch (color_index) {
    case 0:
        colorset(0xff, 0x00, 0xFF);
        break;
    case 1:
        colorset(0x00, 0xff, 0x00);
        break;
    case 2:
        colorset(0x00, 0x00, 0xff);
        break;
    case 3:
        colorset(0xff, 0xff, 0x00);
        break;
    case 4:
        colorset(0xff, 0x00, 0xff);
        break;
    case 5:
        colorset(0xc0, 0xff, 0x3e);
        break;
    default:
        color_index=-1;
    }
}, 500);

Il LED RGB è controllato da colorset() che viene eseguito ogni 500ms. Un’istruzione switch case viene utilizzata qui per selezionare il colore emesso dai LED RGB. Poiché color_index viene incrementato di uno a ogni ciclo, il colore di questo LED RGB cambierà in sequenza.

Immagine del fenomeno

../_images/image621.jpeg