WS2812B/APA106 RGB-LEDs mit dem ATtiny

Will man ein WS2812B-Modul oder APA106-RGB-LEDs statt mit einem Arduino UNO mit einem etwas platz- und auch stromsparenderen ATtiny betreiben, so ist dies leicht möglich.

Vorbereitungen und Aufbau

Zunächst sollte man den grundsätzlichen Aufbau von WS2812B-Modul bzw. der APA106-RGB-LED beachten. Weiterhin ist ein Programmer für den ATtiny notwendig, um den Sketch mit der RGB-LED-Steuerung auf den Mikrocontroller zu laden.

Verwendete Bauteile

Sketch und Konfiguration

Der folgende Sketch lässt eine LED eines Neopixel-Moduls in je einer der drei Grundfarben hintereinander kurz aufleuchten. Das Programm kann auf den Arduino UNO geladen werden, sofern man den LED_PIN auf einen PWM-kompatiblen Ausgang gelegt hat, z.B. 9. Will man nun den Sketch für den ATtiny kompilieren und hochladen, muss zunächst der Programmer und die Arduino-IDE entsprechend vorbereitet werden, so dass der ATtiny mittels des Arduino programmiert werden kann. (siehe oben)

Die hier verwendete Library Adafruit_NeoPixel funktioniert jedoch nur mit einer Taktfrequenz von mindestens 8MHz des ATtiny. Diese muss vorher noch richtig eingestellt werden. Nun kann der Sketch kompiliert und hochgeladen werden. Der ATtiny wird nun auf das richtige Breadboard mit dem Neopixel-Aufbau umgesteckt und nach Anschluss einer passenden Stromquelle (hier: 18650 Lithium-Akku mit 3,7V) sollte das Programm seine Tätigkeit aufnehmen.

#define LED_PIN PCINT4

#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel led = Adafruit_NeoPixel(1, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup()
{
    led.begin();
    showColor(led.Color(0, 0, 0));
}

void loop()
{
    showColor(led.Color(255, 0, 0));
    showColor(led.Color(0, 255, 0));
    showColor(led.Color(0, 0, 255));
}

void showColor(uint32_t color)
{
    led.setPixelColor(0, color);
    led.show();
    delay(1000);
}

Als Anwendungsfall könnte man die Anleitung für "Programmable LED Firefly Jar" von "danasf" nachbauen oder modifizieren.

zurück