Da qualche tempo esistono in commercio dei led che racchiudono anche un chip di controllo (WS2811, WS2812, APA106…).
I vantaggi principali di questi led sono:
[checklist]
- è possibile controllarli con un solo PIN digitale
- possono essere collegati in cascata ed essere comunque controllabili singolarmente
- possono essere alimentati a 5V senza richiedere resistenze esterne (come i comuni led)
[/checklist]
I led
Troniqa vende del led RGB da 8mm contenenti il chip APA106: in questo breve tutorial vi mostrerò come controllarli con Arduino.
I led hanno 4 PIN:
Il collegamento è molto semplice: l’alimentazione (5V e massa) va collegata ai PIN VDD e GND.
I PIN DIN e DOUT (data-in e data-out) sono i PIN di controllo: per collegare i led in cascata, al PIN DOUT del led precedente va collegato il PIN DIN del led seguente. Il PIN DIN del primo led della catena va collegato ad Arduino mentre il PIN DOUT dell’ultimo led può essere lasciato non collegato.
In questo esempio utilizzerò un solo led, effettuando i collegamenti su breadboard (userò il PIN 6 di Arduino per controllare il led):
Arduino
Adafruit ha sviluppato una comoda libreria per Arduino (NeoPixel) per controllare questi led.
Se avete un IDE recente, l’installazione della libreria può essere fatta via Library Manager:
Con la funzione di ricerca è possibile trovare la libreria Adafruit NeoPixel ed installarla:
L’utilizzo è molto semplice: basta definire il numero di led collegati in cascata, il PIN di Arduino a cui sono collegati e istanziare un oggetto Adafruit_NeoPixel:
#define PIN 6 #define NUMPIXELS 1 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { pixels.begin(); } |
Adafruit ha reso disponibile un ottimo tutorial che illustra tutte le funzionalità della libreria. Come demo per questo articolo ho preparato uno sketch (lo trovate su Github) che cambia il colore del led attraversando tutto lo spettro visibile:
ciao Luca
ho scoperto questi led grazie al tuo blog, comprati ed arrivato. Spero di provarli stasera
Stavo leggendo sul link a github il file ESP8266.c. che tu sappia è il nome dell’integrato che gestisce il led? cercando con san google esp8266 mi sembra essere un modulo wifi.. proverò a cercare meglio. è interessante la temporizzazione fatta con i cicli di clock. Forse è una cosa scontata per molti, ma per me è una novità. potrebbe essere usata al posto del millis in temporizzazioni ultrabrevi? sarebbe interessante un tutorial a riguardo
torno a studiare, intanto complimenti per il blog e per il lavoro svolto. ho imparato diverse cose grazie a te.
se avrà la parvenza di qualcosa di funzionate ti mostrerò cosa volevo fare con i led.
buon lavoro
mirco
Ciao Mirco… che link hai seguito per andare su Github? ESP8266 è un integrato wifi, non ha legami con i led (che hanno come chip di controllo appunto l’APA106). grazie per i complimenti 😉
ciao luca
ho preso un granchio
evidentemente avevo bisogno di un caffe…
sono andato su github cliccando sulla parola neopixel della frase “Adafruit ha sviluppato una comoda libreria per Arduino (NeoPixel) per controllare…” e li ho aperto il file ESP8266.c
Questo fine settimana voglio provare a comandare i led montati in una placca di un punto luce del garage dove ci sono tre pulsanti tutti e tre luminosi.
la mia idea idea era di usare i colori dei led per indicare se i pulsanti sono attivi per comandare la luce oppure se è attivo un eventuale sensore di presenza per l’accensione automatica della luce.
voglio vedere se 4/5 metri di cavo tra l’arduino ed i led raccoglieranno abbastanza disturbi per far si che non funzioni nulla… con un po di fortuna…
spero di darti presto notizie positive.
buon lavoro,
mirco