8×8 & 16×16 WS2812 RGB LED-Matrix Animationen mit Arduino und Excel programmieren
Komponenten und Zubehör
| Arduino UNO | × | 1 |
| WS2812 8×8 RGB LED-Matrix | × | 1 |
| Male/Female Jumper-Kabel (Schwarz-GND, Rot-5V, Grün-Daten) | × | 3 |
| 9V Batterie (generisch) | × | 1 |
| 9V auf Hohlstecker Adapter | × | 1 |
| Male Header 5-polig – 1 Reihe – Lang (0,1") (nur 3 Pins benötigt) | × | 1 |
Benötigte Werkzeuge und Maschinen
- Lötkolben (generisch)
- Lötzinn, bleifrei
Über dieses Projekt
Als ich meine erste WS2812 8×8 RGB LED-Matrix kaufte, erwartete ich, sie als traditionelles XY-Koordinatensystem ansprechen zu können. Stattdessen sind die 64 LEDs in acht Reihen zu je acht LEDs in Reihe geschaltet (daisy-chained). Ich entdeckte, dass Kevin Darrahs Excel-Utility, ursprünglich für eine 16×16-Matrix entworfen, für ein 8×8-Array angepasst werden konnte. Durch Modifikation sowohl der Tabelle als auch des begleitenden Arduino-Sketches schuf ich ein vielseitiges Tool, mit dem Sie LED-Animationen ohne externe Bibliotheken programmieren können.
Das aktualisierte Excel-Arbeitsbuch LED_Utility.xlsm unterstützt nun:
- Individuelle RGB-Zuweisung für jede LED.
- Dynamische Eigenschaftsänderungen via VBA-Scripting.
- XY-Verschiebung zur Simulierung von Bewegung.
- Eingebaute Farbpaletten für schnelle Farbauswahl.
- Duale Unterstützung für 8×8 und 16×16 Matrizen.
Unten finden Sie Schritt-für-Schritt-Anleitungen für Hardware-Aufbau, Konfiguration des Excel-Utilities und Hochladen des Arduino-Sketches. Jedes Projekt baut auf dem vorherigen auf und führt Konzepte wie Schleifen, Bedingungen und modulare Funktionen ein.
Hardware zusammenbauen
Befestigen Sie die 8×8-Matrix an einem Arduino UNO mit einem 5-poligen Header:
- DIN an Pin 8 des Arduino anschließen.
- +5V an den 5V-Pin anschließen.
- GND an den GND-Pin anschließen.
Bei diesem Setup bezieht sich Koordinate (0,0) auf die obere linke Ecke der Matrix.
Excel-Utility Übersicht
Öffnen Sie LED_Utility.xlsm – es enthält drei Blätter:
- Eight – 8×8 Matrix-Oberfläche.
- Sixteen – 16×16 Matrix-Oberfläche.
- ColMap – praktische Referenz gängiger RGB-Codes.
Die Arbeitsmappe ist standardmäßig schreibgeschützt, um Ihre Arbeit zu schützen. Nutzen Sie Datei → Speichern unter nach der Code-Generierung, um Ihr Design zu bewahren.
Wichtige Funktionen auf dem Eight-Blatt:
- Show – zeigt RGB-Werte für ausgewählte Zellen (0–255).
- Var Map – akzeptiert numerische oder variable Eingaben, zeigt aber keine Ausgabe.
- Wrap Map – fügt Modulo-Funktion hinzu für Koordinaten-Überlauf und unterstützt Variablen für spätere Nutzung.
- Clear – leert beide Eingabe-Gitter.
Jeder Button generiert einen Block C++-Code, den Sie in den Arduino-Sketch kopieren. Der Code ist für die benutzerdefinierte mapLEDXY()-Funktion formatiert, die XY-Koordinaten in den passenden LED-Index umwandelt.
Arduino Sketch
Der Kern-Sketch (LED_Arduino.ino) enthält folgende Elemente:
// Pin-Definition
#define WS2812_pin 8
// Gesamtzahl LEDs
#define numberOfLEDs 64
// RGB-Puffer (3 Bytes pro LED)
byte RGB[192];
// Vorwärtsdeklarationen
void RGB_update(int LED, byte RED, byte GREEN, byte BLUE);
void mapLEDXY(int x, int y, byte RED, byte GREEN, byte BLUE);
void clearLEDs();
Die mapLEDXY()-Routine ordnet ein Koordinatenpaar dem linearen Array zu, unter Berücksichtigung des Zickzack-Verdrahtungsmusters, das bei WS2812-Matrizen üblich ist.
Nach dem Kopieren Ihres generierten Codes in die loop()-Funktion laden Sie den Sketch hoch. Die Matrix reagiert sofort auf die Anweisungen.
Projekt 1 – Statisches rotes Quadrat
Erstellen Sie ein 3×3 rotes Quadrat bei Koordinaten (2,2) bis (4,4). In Excel setzen Sie die entsprechenden Zellen auf 255 für Rot und 0 für Grün/Blau. Kopieren Sie den generierten Code in Zeile 40 des Sketches:
mapLEDXY(2,2,255,0,0);mapLEDXY(2,3,255,0,0);mapLEDXY(2,4,255,0,0);
mapLEDXY(3,2,255,0,0);mapLEDXY(3,3,255,0,0);mapLEDXY(3,4,255,0,0);
mapLEDXY(4,2,255,0,0);mapLEDXY(4,3,255,0,0);mapLEDXY(4,4,255,0,0);
Hochladen und das Quadrat leuchten sehen. Experimentieren Sie mit Löschen des Gitters, Farbänderungen oder Hinzufügen eines Rahmens.
Projekt 2 – Zweifarbige Quadrate
Duplizieren Sie den Sketch als Colour_Sq.ino und modifizieren Sie das Excel-Blatt, um ein zweites, größeres Quadrat zu erstellen. Nutzen Sie den Show-Button zur Code-Generierung und fügen Sie ihn in den Sketch ein. Fügen Sie ein einfaches Delay und clearLEDs() hinzu, um zwischen den beiden Formen zu wechseln.
Projekt 3 – Wachsendes Quadrat
Im Grow.ino Sketch entwerfen Sie ein kleineres inneres Quadrat und umgeben es mit einem Rahmen Ihrer Wahl. Entfernen Sie die Werte des inneren Quadrats, generieren Sie den äußeren Code und fügen Sie beide Blöcke in den Sketch ein. Das Ergebnis ist ein animiertes Quadrat, das sich ausdehnt und zusammenzieht.
Projekt 4 – Spiral-Animation
Für komplexe Muster kapseln Sie jeden Frame in eine separate Funktion und rufen sie aus loop() auf. Das Beispiel Spiral.ino nutzt fünf Hilfsfunktionen, um eine 5-Schicht-Spirale zu bauen. Dieser modulare Ansatz hält die Hauptschleife übersichtlich und erleichtert spätere Änderungen.
Projekt 5 – Variable Helligkeitsschleife
Führen Sie eine for-Schleife ein, um Helligkeit zu animieren:
for (int r=0; r<256; r++) {
mapLEDXY(3,3,r,0,0);mapLEDXY(3,4,r,0,0);
mapLEDXY(4,3,r,0,0);mapLEDXY(4,4,r,0,0);
RGB_update(-1,0,0,0);
delay(50);
}
for (int r=255; r>=0; r--) {
mapLEDXY(3,3,r,0,0);mapLEDXY(3,4,r,0,0);
mapLEDXY(4,3,r,0,0);mapLEDXY(4,4,r,0,0);
RGB_update(-1,0,0,0);
delay(50);
}
Das Quadrat blendet automatisch auf und ab.
Projekt 6 – Ausblendender Rahmen
Kombinieren Sie for-Schleifen mit einer gemeinsamen g-Variable, um einen umgebenden Rahmen auszublenden:
for (int g=0; g<256; g++) {
b=g;
mapLEDXY(...); // Rahmen-Zellen
RGB_update(-1,0,0,0);
delay(50);
}
for (int g=255; g>=0; g--) {
b=g;
mapLEDXY(...); // Rahmen-Zellen
RGB_update(-1,0,0,0);
delay(50);
}
Hier verfolgt der blaue Kanal den grünen für einen sanften Übergang.
Projekt 7 – Farbübergang
Nutzen Sie ein if-Statement, um mittige Rahmenzellen von Grün zu Gelb zu ändern, sobald ein Schwellenwert erreicht ist:
for (int r=0; r<256; r++) {
g=r;
if (g>64) {
g=65;
l=r;
}
mapLEDXY(...); // Zellen
RGB_update(-1,0,0,0);
delay(50);
}
Experimentieren Sie mit verschiedenen Schwellenwerten für variierte Effekte.
Projekt 8 – Bewegter Pfeil
Erzeugen Sie einen bewegten Pfeil durch Parametrisierung der X-Koordinate:
for (int x=0; x<8; x++) {
mapLEDXY((x+0)%8,3,0,255,255);
mapLEDXY((x+1)%8,1,255,128,128);
mapLEDXY((x+1)%8,3,0,255,255);
mapLEDXY((x+1)%8,5,255,128,128);
mapLEDXY((x+2)%8,2,255,128,128);
mapLEDXY((x+2)%8,3,0,255,255);
mapLEDXY((x+2)%8,4,255,128,128);
mapLEDXY((x+3)%8,3,255,128,128);
RGB_update(-1,0,0,0);
delay(100);
}
Nutzen Sie die Wrap Map-Funktion in der Tabelle für Koordinaten-Überlauf.
16×16 Matrix-Nutzung
Alle oben genannten Konzepte übertragen sich direkt auf eine 16×16-Matrix. Ersetzen Sie LED_Arduino.ino durch LED_Arduino16.ino und wechseln Sie im Arbeitsbuch zum Sixteen-Blatt. Die einzige Anpassung betrifft die numberOfLEDs-Definition und die RGBlocation-Berechnung in mapLEDXY().
Erweiterungen & Tipps
Während dieser Leitfaden sich auf 8×8 und 16×16 Arrays konzentriert, gilt die gleiche Methodik für andere Größen (z. B. 8×32). Für jede neue Größe aktualisieren Sie die numberOfLEDs-Konstante und passen die Indexberechnung an das Verdrahtungsmuster der Matrix an. Halten Sie das Arbeitsbuch im Schreibschutz-Modus, um versehentlichen Verlust von benutzerdefiniertem Code zu vermeiden. Ziehen Sie ein kleineres Board wie Arduino Nano in Betracht, wenn Stromverbrauch ein Problem ist.
Herstellungsprozess
- Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
- Arduino-basiertes Schalter- & LED-Panel für Microsoft Flight Simulator 2020
- 8×8 & 16×16 WS2812 RGB LED-Matrix Animationen mit Arduino und Excel programmieren
- Globales IoT sichern: Drei wesentliche Schritte
- Top 3 Digital Manufacturing Trends, die 2020 prägen
- Top 3 Strategien für KMU, um international erfolgreich zu expandieren
- Drei wesentliche Lektionen für Händler in Zeiten anhaltender Störungen
- "Geh-Weg-Roboter" – Einfaches Arduino-Starterset für Kinder
- Top 3 unverzichtbare Tipps für industrielle Instandhaltung & Sicherheit
- Unverzichtbarer Leitfaden: 3 bewährte Strategien beim Kauf schwerer Industrieanlagen