APA106 led ed Arduino

by luca
3 comments

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:

apa-1

Il collegamento è molto semplice: l’alimentazione (5V e massa) va collegata ai PIN VDDGND.

I PIN DINDOUT (data-indata-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):

apa-2

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:

add-library-1

Con la funzione di ricerca è possibile trovare la libreria Adafruit NeoPixel ed installarla:

add-library-2

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:

[youtube id=”rUyfD6lRqJk” width=”600″ height=”350″]

Related Posts

3 comments

mirco ughi 8 marzo 2016 - 13:02

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

Reply
luca 9 marzo 2016 - 12:04

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 😉

Reply
mirco ughi 11 marzo 2016 - 00:43

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

Reply

Leave a Comment

due × 3 =