DIY RGB Leuchtschrift mit Arduino
Dieses kleine DIY-Projekt ist ein echter Hingucker, egal ob für die eigene Wohnung, als Geschenk oder als Dekoration in Geschäftsräumen – Leuchtbuchstaben sind der Hit.
Über einen Arduino oder anderen einen anderen Microcontroller lassen sich die adressierbaren LED einzeln ansteuern und können so tolle Lichteffekte erzeugen.
Je nach verwendetem Microcontroller und anderen Erweiterungen lassen sich die Leuchtbuchstaben auch per App ansteuern oder können beispielsweise über einen Bewegungsmelder ausgelöst werden.
Benötigte Komponenten
- Filament in beliebigen Farben
- Lötzinn
- WS2812B LED Streifen
- yourDroid UNO R3 Entwicklungsboard
- Dupont / Jumper Kabel Buchse Stecker
- Kabel
- Netzteil
- USB Kabel
Benötigtes Werkzeug
- 3D-Drucker
- Heißkleber
- Lötstation
- Seitenschneider
- Abisolierzange
- Dritte Hand / Löthilfe
Bauanleitung
Schritt 1
Zunächst muss man die Buchstaben auf dem 3D-Drucker in beliebiger Größe ausdrucken. Hierfür haben wir diese kostenlose Vorlage von Thingiverse verwendet.
Zwingend benötigt werden dabei die einzelnen Buchstaben sowie die dazugehörigen Abdeckungen, also zum Beispiel die Dateien Letter_R.stl und Letter_R_lens.stl für den Buchstaben R
Schritt 2
Der LED Streifen wird, je nach für den einzelnen Buchstaben benötigter Länge, entlang des Lötpads in Stücke geschnitten. An die Lötpads des ersten Streifens werden drei Dupontkabel mit Stecker angelötet, die später an den Arduino angeschlossen werden. An die andere Seite, die später zum nächsten Buchstaben führt kommt ein normales Kabel, dass dann wieder an den LED-Streifen angelötet wird.
Dabei ist es hilfreich zunächst die abisolierten Kabelenden zu verdrillen und mit etwas Lötzinn zu benetzen.
Auch auf die Lötpads des LED-Streifens kann man vorab etwas Lötzinn geben. So muss man nur kurz das bereits aufgetragene Zinn wieder erhitzen und die Kabel und der LED-Streifen verbinden sich leichter.
Extrem wichtig ist, dass man auf die durch Pfeile gekennzeichnete Richtung der LED-Streifen achtet.
Schritt 3
Der LED-Streifen wird nun mit etwas Heißkleber seitlich im Buchstaben fixiert, die LED nach innen gerichtet und die Kabel durch die vorhandenen Löcher geführt. Beim nächsten Buchstaben wird das oben beschriebene Wiederholt, bis alle Buchstaben mit LED-Streifen bestückt sind.
Schritt 4
Nun werden die Abdeckkappen auf in die Buchstaben gesteckt.
Schritt 5
Die an den ersten Buchstaben angelöteten Dupontkabel werden nun mit dem Arduino verbunden.
“5V“ vom LED-Streifen kommt an den 5 Volt Anschluss des Arduino.
“G“ wird an GND angeschlossen und “D“ stecken wir an Pin 6 des Arduino.
Den Arduino Programmieren
Der Arduino wird an den USB-Anschluss des Computers angeschlossen und wir starten die Programmierumgebung “Arduino IDE“
Für unser Besipiel benötigen wir zunächst die Bibliothek “Adafruit Neopixel“, die wir über “Werkzeuge“ > “Bibliotheken verwalten...“ hinzufügen
Anschließend fügen wir folgenden Code in den Sketch ein und editieren noch den Wert hinter “#define LED_COUNT“. Dort wird die Anzahl der in der Leuchtschrift verbauten LED eingetragen. Anschließend laden wir den Code auf den Arduino:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define LED_PIN 6 // Der Pin an den "D" vom LED Streifen angeschlossen ist
#define LED_COUNT 80 // Anzahl der in der Leuchtschrift verbauten LED
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
strip.begin();
strip.show();
strip.setBrightness(80); // Helligkeit 0 - 100
}
void loop() {
rainbow(10);
theaterChaseRainbow(50);
}
void colorWipe(uint32_t color, int wait) {
for(int i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, color);
strip.show();
delay(wait);
}
}
void theaterChase(uint32_t color, int wait) {
for(int a=0; a<10; a++) {
for(int b=0; b<3; b++) {
strip.clear();
for(int c=b; c<strip.numPixels(); c += 3) {
strip.setPixelColor(c, color);
}
strip.show();
delay(wait);
}
}
}
void rainbow(int wait) {
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
for(int i=0; i<strip.numPixels(); i++) {
int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
}
strip.show();
delay(wait);
}
}
void theaterChaseRainbow(int wait) {
int firstPixelHue = 0;
for(int a=0; a<30; a++) {
for(int b=0; b<3; b++) {
strip.clear();
for(int c=b; c<strip.numPixels(); c += 3) {
int hue = firstPixelHue + c * 65536L / strip.numPixels();
uint32_t color = strip.gamma32(strip.ColorHSV(hue));
strip.setPixelColor(c, color);
}
}
}
}