Nella sezione lezioni di Arduino, qualche giorno fa ho pubblicato un breve lezione che spiega cosa sono i led indirizzabili e come si collegano ad Arduino (per la lezione cliccare qui).
Oggi farò un breve tutorial per vederli in funzione, farò cambiare colore al led tramite un semplice codice che sfrutta la funzione random; questo pemetterà di avere valori casuali per i colori RGB, creando un effetto arcobaleno.
Materiale Necessario
Se siete interessati al materiale, cliccate su questo e sarete indirizzati alla pagina Amazon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <Adafruit_NeoPixel.h> #define LED_COUNT 1 #define LED_PIN 2 int r= 0; int g= 0; int b =0; Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_RGB+ NEO_KHZ800); void setup() { pinMode(LED_PIN, OUTPUT); strip.begin(); strip.show(); strip.setBrightness(50); } void loop() { randomSeed(millis()); r= random(255); g= random(255); b= random(255); strip.setPixelColor(0, r, g, b); strip.show(); delay(250); } |
Analizziamo il codice:
1 2 3 4 5 6 7 |
#include <Adafruit_NeoPixel.h> #define LED_COUNT 1 #define LED_PIN 2 int r= 0; int g= 0; int b =0; |
con il comando #include, includo la libreria di Adafruit per i led, successivamente definisco il numero di led che compone la striscia, nel mio caso 1 solo led, a cui do il nome LED_COUNT, ed il pin in cui collego la striscia pin 2, che chiamo LED_PIN.
Inserisco 3 variabili di tipo int r, g, b
1 2 3 4 5 6 7 8 9 |
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_RGB+ NEO_KHZ800); void setup() { pinMode(LED_PIN, OUTPUT); strip.begin(); strip.show(); strip.setBrightness(50); } |
Finite le dichiarazioni di pin e variabili, configuro la striscia e do ad essa un nome, per comodità la chiamo strip, il comando richiede alcuni dati di tale striscia in particolare: il numero di led (LED_COUNT, il pin di collegamento (LED_PIN), e il tipo di led, NEO_RGB + NEO_KHZ800, questa sigla indica che il led è di tipo RGB (potrebbe essere anche GRB o RGBW), finito questo passo al void setup(), quindi dichiaro il pin 2 come uscita, inizializzo la striscia con il comando strip.begin e spengo il led con strip.show, per ultimo imposto la luminosità con strip.setBrightness, il valore sarà compreso tra 0 e 250.
1 2 3 4 5 6 7 8 9 |
void loop() { r= random(255); g= random(255); b= random(255); strip.setPixelColor(0, r, g, b); strip.show(); delay(250); } |
Finita la parte di setup, passiamo al loop, per ottenere dei numeri casuali, associo alle tre variabili dichiarate inizialmente il comando random, che avrà un valore da 0 a 255.
Dichiarati i valori delle variabili, le associo alla striscia, nel mio caso il singolo led, con il comando strip.setPixelColor che è composto da 4 o 5 variabili, così suddivise:
- primo numero: indica il numero del led da comandare, i numeri vanno da 0 a n, quindi il primo led avrà il numero 0 e il secondo il numero 1 ecc ecc
- secondo numero: il valore per il colore rosso, nel mio esempio sarà dato dalla variabile r
- terzo numero: il valore per il colore verde, dato dalla variabile g
- quarto numero: il valore per il colore blu, dato dalla variabile b
Se il led fosse stato di tipo RGBW, avremmo avuto un quinto valore che comandava il colore bianco, ma in quel caso non la tonalità ma la luminosità del bianco.
Do il comando strip.show per mandare i dati al led, questo comando se inserito nella parte setup avrà la funzione di spegnere i led, mentre inserito nel loop dice al led di eseguire i comandi sopra detti.
Inserisco un delay per osservare il cambiamento di colore.
Nella pagina sono presenti link di affiliazione su cui si ottiene una piccola quota dei ricavi, senza variazioni dei prezzi.