The APA106 is a smart RGB-LED with an integrated controller chip, allowing full-color control via a single digital data line. It supports 24-bit color (8 bits per channel) and can be daisy-chained for addressable lighting effects. Operating at 5V, it’s similar to the WS2812 but offers faster response times and better PWM dimming performance, making it ideal for animations and displays.
Type: | Addressable RGB LED |
---|---|
Controller: | APA106 IC (integrated) |
Diameter: | 8mm (through-hole) |
Input voltage: | 5V DC |
Current consumption: | Up to 60mA (full brightness, all colors) |
Color resolution: | 8-bit per channel (256 levels) |
Protocol: | Single-wire, WS2811/WS2812 compatible |
Data rate: | Up to 800 kbps |
Refresh rate: | 30 fps (512 LEDs low-speed, 1024 high-speed) |
📄 APA106 RGB-LED datasheet (266 kB)
Pin No | Pin | Description |
---|---|---|
1 | DIN | "Data In": Data input signal (connects to the microcontroller) |
2 | VDD | Power supply from +4.5V to +6V |
3 | GND | Ground connection |
4 | DO / DOUT | "Data Out": Data output signal (can be connected to DIN of the next APA106 LED) |
The following sketch demonstrates cycling through the primary colors of the LED module one after another.
The Adafruit_NeoPixel library is used to control
the RGB module. Note that when creating the Adafruit_NeoPixel object, the constant
NEO_RGB
is used to ensure the correct color order for the LED.
This may vary from module to module and might require experimentation.
#include <Adafruit_NeoPixel.h>
#define LED_PIN 9 // or any other PWM capable pin
#define LED_AMOUNT 2
#define BRIGHTNESS 50 // [1..255]
#define DEMO_DELAY 1000 // in milliseconds
Adafruit_NeoPixel apaLeds = Adafruit_NeoPixel(LED_AMOUNT, LED_PIN, NEO_RGB + NEO_KHZ800);
void setup() {
apaLeds.begin();
}
void loop() {
for (byte i=0; i<LED_AMOUNT; i++) {
apaLeds.setPixelColor(i, apaLeds.Color(0, 0, 0));
apaLeds.show();
delay(DEMO_DELAY);
apaLeds.setPixelColor(i, apaLeds.Color(BRIGHTNESS, 0, 0));
apaLeds.show();
delay(DEMO_DELAY);
apaLeds.setPixelColor(i, apaLeds.Color(0, BRIGHTNESS, 0));
apaLeds.show();
delay(DEMO_DELAY);
apaLeds.setPixelColor(i, apaLeds.Color(0, 0, BRIGHTNESS));
apaLeds.show();
delay(DEMO_DELAY);
}
}