RGB-Matrix Audio-Visualizer mit Arduino: Schritt-für-Schritt Anleitung
Komponenten und Zubehör
| Arduino UNO | × | 1 |
| Adafruit NeoPixel Shield (40 RGB LEDs, 8×5 Matrix) | × | 1 |
| SparkFun Spectrum Shield (2× MSGEQ7, 7-Band pro Kanal) | × | 1 |
| ProtoStax Gehäuse für Arduino (klares Acryl, stapelbar) | × | 1 |
| Taster (SPST OFF-(ON), Panel Mount) | × | 1 |
| 3,5 mm Klinkenbuchse Panel Mount (Stereo, isoliert) | × | 2 |
| 3,5 mm Winkel-Klinkenkabel | × | 2 |
| 3,5 mm Stereo-Kabel (M-M, 6 ft) | × | 1 |
Benötigte Werkzeuge
- Akku-Bohrer / Schrauber
Über dieses Projekt
Ein RGB-LED-Matrix Audio-Visualizer: Arduino + NeoPixel Shield + Spectrum Shield im ProtoStax Acrylgehäuse. Perfekt als Lichtshow zur Musikanlage.
Funktionsprinzip
- Spektralanalyse: SparkFun Spectrum Shield nutzt zwei MSGEQ7 Chips. Ein Stereo-Signal wird in 7 Frequenzbänder pro Kanal zerlegt (63 Hz, 160 Hz, 400 Hz, 1 kHz, 2,5 kHz, 6,25 kHz, 16 kHz). Die Amplituden werden per 10-bit ADC (0–1023) eingelesen.
- RGB-Matrix: Adafruit NeoPixel Shield mit 40 WS2812 LEDs (8×5), gekettet, Ein-Draht-Steuerung (Pin 6). Adafruit_NeoMatrix Library vereinfacht Adressierung.
- Gehäuse: ProtoStax – modulares, stapelbares Acrylgehäuse. Offener Zugriff während Entwicklung, später mit Seitenwänden & Deckel verschließbar.
Schritt 1: Arduino im Gehäuse-Boden montieren
Arduino auf Bodenplatte schrauben, Gummifüße anbringen. Offene "Platform Configuration" für einfachen Zugriff.
Animierte Anleitung: 
Schritt 2: Spectrum Shield vorbereiten
Spectrum Shield kommt ohne Header. NeoPixel Shield liefert Stapleleisten & normale Header. Da NeoPixel oben sitzen soll, nutzt es normale Header (bündig), Spectrum Shield bekommt Stapelheader.
Problem: USB/Strombuchse des UNO kollidieren. Lösung:
- Ende der Spectrum-Platine über USB/Strombuchse absägen (nur Prototypenbereich).
- Stapelheader-Pins etwas kürzen, damit Shield bündig aufliegt.
Schritt 3: NeoPixel Shield aufstecken
Normale Header an NeoPixel Shield löten. Terminalstecker optional (hier: Versorgung über Arduino, da nicht alle LEDs gleichzeitig an).
Schritt 4: Demo-Code Analyse
Code auf GitHub: ProtoStax_Audio_Visualizer_Demo
Zwei Hauptteile:
- Spektralanalyse & Speicherung der 7 Bänder pro Kanal in Arrays
Frequencies_One[7],Frequencies_Two[7]. - Darstellung auf 8×5 NeoMatrix mit Farbschemata.
Spektralanalyse (Auszug)
#define STROBE 4 #define RESET 5 #define DC_One A0 #define DC_Two A1
int Frequencies_One[7], Frequencies_Two[7];
void setup() {
pinMode(STROBE, OUTPUT); pinMode(RESET, OUTPUT);
digitalWrite(STROBE, LOW); delay(1);
digitalWrite(RESET, HIGH); delay(1);
digitalWrite(STROBE, HIGH); delay(1);
digitalWrite(STROBE, LOW); delay(1);
digitalWrite(RESET, LOW);
}
void Read_Frequencies() {
for(int band=0; band<7; band++) {
Frequencies_One[band] = (analogRead(DC_One) + analogRead(DC_One)) >> 1;
Frequencies_Two[band] = (analogRead(DC_Two) + analogRead(DC_Two)) >> 1;
digitalWrite(STROBE, HIGH); digitalWrite(STROBE, LOW);
}
}
Bänder-Gruppierung: Bass (63+160 Hz), Mitten (400 Hz–2,5 kHz), Höhen (6,25+16 kHz). Max-Werte pro Band werden für Auto-Skalierung gespeichert.
NeoMatrix Konfiguration
Wichtig: Koordinatensystem [0,0] = oben links. Unser Setup: WIDTH=5, HEIGHT=8, Origin TOP-RIGHT, COLUMNS PROGRESSIVE (Spaltenweise Fortschreitung). Entspricht physischem LED #0 oben rechts.
#define NEO_MATRIX_WIDTH 5
#define NEO_MATRIX_HEIGHT 8
#define NEOPIXEL_PIN 6
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(
NEO_MATRIX_WIDTH, NEO_MATRIX_HEIGHT, NEOPIXEL_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
NEO_GRB + NEO_KHZ800
);
void setup() {
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(40);
matrix.fillScreen(0); matrix.show();
}
Grafik-Routine & Farbschemata
enum RANGE { BASS=0, MID_RANGE=1, TREBLE=2, ALL=3 };
enum SCHEME { MAGNITUDE_HUE=0, MAGNITUDE_HUE_2=1, HSV_COLOR_WHEEL=2 };
void loop() {
static int scheme = 0;
while(Serial.available()) scheme = Serial.parseInt();
Read_Frequencies();
Graph_Frequencies(ALL, scheme);
delay(50);
}
void Graph_Frequencies(RANGE r, SCHEME s) {
int from, to;
// from/to je nach Range setzen (BASS: 0-1, MID: 2-4, TREBLE: 5-6, ALL: 0-6)
for(int row=from; row 5) numCol = 5;
for(int col=0; col
Schritt 5: Testen
Video-Demo im Originalartikel. Drei Farbschemata wählbar per Serial Monitor (0, 1, 2).
Schritt 6: Gehäuse schließen
Obere Versteifungen, Seitenwände, Audiokabel, Deckel montieren.
Schritt 7: Fertig – Genießen!
Visualizer neben die Anlage stellen – Musik wird visuell erlebbar.
Schritt 8: Erweiterungsmöglichkeiten
- Panel-Mount Klinkenbuchsen in Seitenwand einbauen → saubere Verkabelung, keine Kabel nach außen.
- Mehr Farbschemata & Muster (Rainbow, Peak-Hold, Wasserfall).
- Frequenzbereich per Taster wählen (Bass/Mitten/Höhen/All).
- Zweiter Taster für Farbschema.
- Lochbohrungen für Buchsen/Taster mit Stufenbohrer (Klinkenbuchse 5/16", Taster 0,47").
- Deckel leicht anschleifen → Diffusor für weicheres Licht.
Bei Interesse aktualisiere ich das Projekt mit Buchsen, Tastern & mattem Deckel. Feedback willkommen!
Code
GitHub Repository: ProtoStax_Audio_Visualizer_Demo
Herstellungsprozess
- K30 CO₂-Sensor: Echtzeit-Luftqualitätsmessung mit Arduino
- Kommunikationshilfe für Taubblinde: 1Sheeld + Arduino + Sprachausgabe & Anzeige
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- 24×16 LED Pong-Konsole mit Arduino Nano & MAX7219 bauen
- Arduino Audio-Frequenz-Detektor – Lauteste Schallpeaks mit hochsensiblem Modul messen
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- DFRobot Kapazitiver Fingerabdrucksensor mit Arduino oder ESP8266 einbinden
- Audio-Wiedergabe mit Arduino UNO und DFPlayer Mini – Schritt-für-Schritt-Anleitung
- Billy Bass Fisch mit Audioquelle animieren – Schritt-für-Schritt-Anleitung
- Arduino RGB-LED-Farbmischer – Einsteigerfreundliches DIY-Projekt