El NeoPixel és un LED RGB (és a dir, un LED tricolor) que incorpora un circuit intern que permet controlar si està encès o no i el seu color.
El control dels NeoPixels es fa des d'una única sortida digital del microcontrolador de manera que deixa totes les altres potes lliures per a altres funcions. A més, els NeoPixels es poden posar en cadena (connectant la sortida de l'un amb l'entrada del següent) i això permet controlar individualment un nombre elevat de LED fent servir una única sortida.
Per fer servir un NeoPixel cal connectar el born + (superior a la foto) al born positiu de l'alimentació, el born - (central a la foto) al negatiu de l'alimentació i el born In (el de baix a l'esquerra a la foto) amb una sortida digital del microcontrolador. Si fem una cadena connectarem el born marcat O d'un amb el born marcat In del següent.
Per fer servir els NeoPixels ens caldrà la NeoPixel library. Si ja hem instal·lat la versió de l'entorn de programació Arduino que proporciona Adafruit és probable que ja tinguem aquesta biblioteca instal·lada. Podem comprovar-ho en la pestanya Sketch del menú:

Un cop ja tinguem la biblioteca, podem fer els nostres programes. A la part inicial, hem de carregar la biblioteca corresponent:
#include <Adafruit_NeoPixel.h>
A la part de declaració de variables, hem de crear un objecte Adafruit_NeoPixel per a cada cadena de LED. Considerem que formen una cadena tots els que estan connectats un després de l'altra a una mateixa sortida del microcontrolador.
Adafruit_NeoPixel cadena = Adafruit_NeoPixel(3, 1, NEO_GRB + NEO_KHZ800);
En aquest cas l'objecte s'anomena cadena i correspon a un conjunt de 3 NeoPixels (primer valor dins el parèntesi) connectats a la pota 1 del microcontrolador (segon paràmetre dins el parèntesi). El tercer paràmetre (NEO_GRB + NEO_KHZ800) indica quin tipus de NeoPixels fem servir i com es comuniquen. Els que estan actualment disponibles són els NeoPixel v2 que es corresponen amb els indicats en el programa d'exemple. Actualment hi ha també NeoPixel (especialment en combinacions) que incorporen un quart LED de color blanc. En aquests casos serà necessari posar NEO_RGBW + NEO_KHZ800 o bé NEO_GRBW + NEO_KHZ800. Si no tenim clar quina de les tres opcions és, les podem anar provant fins trobar la que dóna el resultat esperat.
Encara que no és imprescindible, es recomana inicialitzar els NeoPixels de la cadena. Això ho podem fer a la inicialització (setup) del programa amb les següents instruccions:
void setup() {
cadena.begin(); // Inicialitza els NeoPixels
cadena.show();
}
El nostre programa s'encarregarà d'anar encenent els NeoPixels amb els colors desitjats. Per exemple les instruccions:
void loop() {
cadena.setPixelColor(0, 255, 0, 0); // Pixel 0 vermell
cadena.setPixelColor(1, 0, 255, 0); // Pixel 1 verd
cadena.show(); // Actualitza
delay(1000); // Espera un segon
cadena.setPixelColor(0, 0, 255, 0); // Pixel 0 verd
cadena.setPixelColor(1, 0, 0, 255); // Pixel 1 blau
cadena.show(); // Actualitza
delay(1000); // Espera un segon
cadena.setPixelColor(0, 0, 0, 255); // Pixel 0 blau
cadena.setPixelColor(1, 255, 0, 0); // Pixel 1 vermell
cadena.show(); // Actualitza
delay(1000); // Espera un segon
}
Les dues primeres instruccions serveixen per indicar el color d'un Pixel concret. El primer paràmetre és el número de Pixel (0 és el més proper al microcontrolador, 1 el segon, etc.) i els altres tres són la codificació RGB del color, és a dir les quantitats de vermell, verd i blau desitjades (valors entre 0, apagat, i 255). La tercera instrucció transfereix de cop tots els canvis; d'aquesta manera, tots els Pixels canviaran simultàniament. Després d'un segon, es modifiquen els colors seguint una seqüència.
A continuació tenim el programa complet:
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel cadena = Adafruit_NeoPixel(3, 1, NEO_GRB + NEO_KHZ800);
void setup() {
cadena.begin(); // Inicialitza els NeoPixels
cadena.show();
}
void loop() {
cadena.setPixelColor(0, 255, 0, 0); // Pixel 0 vermell
cadena.setPixelColor(1, 0, 255, 0); // Pixel 1 verd
cadena.show(); // Actualitza
delay(1000); // Espera un segon
cadena.setPixelColor(0, 0, 255, 0); // Pixel 0 verd
cadena.setPixelColor(1, 0, 0, 255); // Pixel 1 blau
cadena.show(); // Actualitza
delay(1000); // Espera un segon
cadena.setPixelColor(0, 0, 0, 255); // Pixel 0 blau
cadena.setPixelColor(1, 255, 0, 0); // Pixel 1 vermell
cadena.show(); // Actualitza
delay(1000); // Espera un segon
}

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.