APA106 RGB-LED

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.

APA106 RGB-LED (8mm)
Fig.: APA106 RGB-LED (8mm)

Features/Specifications

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)

Connections

Terminal diagram of the APA106 RGB-LED (8mm)
Fig.: Terminal diagram of the APA106 RGB-LED (8mm)
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)

Used Components

Setup & Programming

Circuit diagram for connecting a APA106 RGB LED with a microcontroller
Fig.: Circuit diagram for connecting a APA106 RGB LED with a microcontroller

Simple Color Test

Arduino Uno

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);
    }
}
Last edited by Christian Grieger on 2025-05-17
X
  1. [top]
  2. Features/Specifications
  3. Connections
  4. Used Components
  5. Setup & Programming