Dynamische LED-Dreieckskunst: 45 RGB-LEDs (APA106) mit Arduino UNO steuern
Komponenten & Werkzeuge
- 45× APA-106 programmierbare RGB-LEDs (8 mm)
- 1× Arduino UNO
- 1× Sperrholz-Dreieck (30 cm Kantenlänge, 6 mm Dicke)
- 1× 22 AWG verzinntes Kupferdraht (für Daten- & Stromleitungen)
- Lötkolben, Heißklebepistole, Heat-Sink-Clips (zum Schutz der LEDs beim Löten)
Projektidee
45 APA-106 LEDs werden in einem gleichseitigen Dreieck (1 Zoll Abstand) angeordnet und über einen einzigen Datenpin (D6) des Arduino angesteuert. Die Adafruit NeoPixel-Bibliothek übernimmt die Kommunikation. Bei 30 % Helligkeit (von 255) reicht die USB-Stromversorgung (5 V/1 A) für alle LEDs.
Hardware-Aufbau
Platine vorbereiten
Im Sperrholz werden 8 mm Löcher im 1‑Zoll-Raster gebohrt (9 Reihen: 1+2+3+4+5+6+7+8+9 = 45 LEDs). Die LEDs werden fest hineingedrückt.
LED-Anschlüsse (APA-106)
- Längster Pin = GND
- Pin rechts neben der Abflachung = Data Out
- Erster Pin links = Data In
- Zweiter Pin von links = +5 V
Die Pins werden wie abgebildet gebogen (GND mit zweiter Biegung zur Kennzeichnung).
Verdrahtung
Die Datenleitung schlängelt sich zeilenweise (ungerade Zeilen ←, gerade Zeilen →). Daher wechseln auch die Stromschienen: Ungerade Zeilen – GND nach oben, +5 V nach unten; gerade Zeilen umgekehrt. Alle GND-Leitungen werden links, +5 V rechts zusammengefasst (empfohlen: GND rechts, +5 V links, damit Datenleitungen nicht kreuzen).
Der Arduino wird mit kleinen Kunststoffabstandshaltern auf der Platine fixiert (Heißkleber). Ein optionales 3D-gedrucktes Gehäuse (STL-Datei vorhanden) schützt die Konstruktion.
Software
Dank der Adafruit NeoPixel-Bibliothek ist die Programmierung einfach: setPixelColor(index, color) und show(). Farben werden als 32-Bit-Wert (8 Bit pro Kanal) codiert. Für Effekte wird eine eigene Palette (0–43: Regenbogen, 0=Aus, 43=Weiß) genutzt.
LED-Nummerierung
Die physische Datenleitung läuft hin‑und‑her, logisch werden die LEDs jedoch zeilenweise von 0 (Spitze) bis 44 (Basis) durchnummeriert. Eine Hilfsfunktion übersetzt logische Indizes in physische Positionen.
Animationen
Fast alle Effekte sind tabellenbasiert (in PROGMEM gespeichert). Tabellen definieren z. B. Sweep-Richtung von den drei Ecken, äußere/innere Dreiecke, Rotationsmuster. Der gemeinsame Teiler der LED-Anzahlen (24+15+6=45) ist 120 – in 120 Schritten lässt sich das gesamte Dreieck um 360° rotieren. Die rotation()-Routine erzeugt durch Variation von Startmuster, Richtung & Geschwindigkeit 26 verschiedene Animationen (ca. 5 Minuten Loop).
Code-Struktur (4 Tabs in Arduino IDE)
- Declarations: Tabellen, Setup, Pin-Definitionen
- Main Loop: Aufruf der Animations-Sequenz
- Animations: Effekt-Funktionen (alle basieren auf
rotation()) - Utilities: Hilfsfunktionen (Farbumrechnung, Tabellenzugriff, Timing)
Der vollständige Sketch (inkl. Test-Routine & 26 Animationen) liegt als ZIP-Datei bei. Eine Anleitung zur NeoPixel-Bibliothek ist enthalten.
Herstellungsprozess
- Rechtwinklige Dreiecks-Trigonometrie: Grundlagen & Formeln
- Sinus- und Cosinussatz: Jedes Dreieck lösen
- Programmierbare Logiksteuerungen (PLCs): Moderne digitale Steuerung für Industriesysteme
- Dynamische Speicherallokation in C: malloc, calloc, realloc & free meistern
- Walabasquiat: Interaktive generative Kunst mit Walabot, Raspberry Pi & Android
- C++ Dynamischer Speicher: Stack vs. Heap erklärt
- G.AL® C330 Dynamic: Hochfeste Aluminiumlegierung für Präzisionsanwendungen
- G.AL® C210 Dynamic: Premium Mittelstarke Aluminiumplatte mit Hervorragender Gleichmäßigkeit & Niedrigen Spannungen
- Horizontales Fräsen meistern: Produktionseffizienz steigern
- Dynamische vs. Verdrängerpumpen: Wesentliche Unterschiede erklärt