Hai già letto un mio articolo dedicato ai NeoPixel ed alcuni progetti già realizzati è ora di capire come puoi usare un NeoPixel Ring 16 WS2812 per i tuoi progetti ed idee di design
Il primo passo è procurarti un anello di led di tipo NeoPixel Ring 16 WS2812 che ti servirà per iniziare il tuo prossimo progetto luminoso.
Come si collega il NeoPixel Ring 16 WS2812
Il numero di cavi necessari per un singolo anello è tre:
- Alimentazione +5v
- Ground o negativo
- Segale In
Nello schema seguente è indicato non solo come collegare il primo NeoPixel Ring 16 WS2812 ma anche un secondo anello in cascata al primo sfruttando l’OUT del primo anello verso l’IN del secondo.
Nel mio primo esperimento ho deciso di utilizzare un Arduino Uno per collegare i neo pixel e testare la libreria rilasciata da Adafruit per il controllo dei led con chip WS2812.
Ho scelto il pin 6 come vedi in questa foto:
La libreria Adafruit_NeoPixel
Adafruit distribuisce diverse versioni di NeoPixel e rilascia molta documentazione a riguardo, oltre alla libreria che puoi scaricare da questo link: Adafruit_NeoPixel e che contiene oltre alla libreria alcuni semplici esempi da provare subito con i tuoi led WS2812.
Il primo esempio che ho provato è simple.ino che trovi nella dir Adafruit_NeoPixel/examples/simple/simple.ino
Lo sketch simple.ino
ecco come si presenta lo sketch una volta caricato nell’IDE Arduino:
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson // released under the GPLv3 license to match the rest of // the AdaFruit NeoPixel library #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif // Which pin on the Arduino is connected to the NeoPixels? // On a Trinket or Gemma we suggest changing this to 1 #define PIN 6 // How many NeoPixels are attached to the Arduino? #define NUMPIXELS 16 // When we setup the NeoPixel library, we tell it how many pixels, // and which pin to use to send signals. // Note that for older NeoPixel strips you might need to change // the third parameter--see the strandtest // example for more information on possible values. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 500; // delay for half a second void setup() { // This is for Trinket 5V 16MHz, you can remove these three lines // if you are not using a Trinket #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // End of trinket special code pixels.begin(); // This initializes the NeoPixel library. } void loop() { // For a set of NeoPixels the first NeoPixel is 0, second is 1, // all the way up to the count of pixels minus one. for(int i=0;i<NUMPIXELS;i++){ // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255 pixels.setPixelColor(i, pixels.Color(0,150,0)); // Moderately bright green color. pixels.show(); // This sends the updated pixel color to the hardware. delay(delayval); // Delay for a period of time (in milliseconds). } }
iniziando dalla linea 05: includi la libreria Adafruit NeoPixel che ti offre le funzioni che ti serviranno per controllare i led;
linee 06-08: se sei su un sistema che fa uso delle AVR inclidi la libreria avr/power.h, ti ascio approfondire in sede adeguata a cosa serve la power.h, non la tratterò in questo articolo;
linea 12: definisci il pin a cui hai connesso l’anello, nel mio esempio ho scelto il pin 6 come nell’esempio;
linea 15: definisci il valore della costante NUMPIXEL che dice allo sketch il numero dei led di cui è formato il tuo progetto, in questo esempio ho usato un NeoPixel Ring 16 WS2812 in cui il numero 16 indica il numero esatto di led di cui l’anello è composto.
linea 22: inizializza la classe Adafruit_NeoPixel passandole il numero di led, il pin a cui è connesso l’anello di neopixel ed un parametro che indica alla libreria come comunicare con la striscia/anello led;
linea 24: definisci l’intervallo di delay;
linee 26-35: l’unica linea valida in questo esempio è la linea 34 il cui compito è dare inizio all’oggetto pixels creato come istanza della classe Adafruit_NeoPixel alla linea 22;
linea 42: definisci un ciclo da 0 al numero massimo di pixel definiti;
linea 45: per ciascun pixel dell’anello usa il metodo setPixelColor a cui devi indicare il led su cui vuoi agire ed il codice colore da inviare, per inviare il corretto codice colore la libreria Adafruit ti mette a disposizione il metodo Color a cui passi i valori di R,G e B in 255esimi ossia da 0 a 255 con 255 valore massimo;
linea 47: usa il metodo show dell’istanza pixels per visualizzare quanto impostato;
linea 49: per ciascun ciclo for attendi un tempo pari a delayval impostato in precedenza
Al termine dell’invio su arduino e avvio dello sketch se tutto è andato a buon fine ed hai collegato bene il tuo NeoPixel Ring 16 WS2812 dovresti ottenere una immagine simile alla seguente:
4 commenti
Vai al modulo dei commenti
Ciao,
volevo segnalarti, in caso non lo conoscessi, questo sito dove è possibile scaricare un software per gestire molti effetti
http://www.solderlab.de/index.php/software/glediator
Saluti
Autore
Ciao Marco,
grazie per la segnalazione, non lo conoscevo.
Tu hai già realizzato qualcosa con questo sw ? Se hai realizzato un video tutorial su come installarlo,usarlo e qualche effetto demo su matrici di led inviami il link, solo se ne sei l’autore e proprietario ) ti scrivo un articolo di presentazione.
Ciao,
sto aspettando le matrici 8×8 per poter effettuare alcuni esperimenti, appena ho qualcosa ti faccio sapere
Autore
Ottimo Marco !!!