Construire un Visualiseur Audio Matrice RGB avec Arduino – Guide Pas à Pas
Composants et fournitures
| Composant | Quantité | Notes |
|---|---|---|
| Arduino UNO | 1 | |
| Shield Adafruit NeoPixel pour Arduino | 1 | 40 RGB NeoPixels (WS2812) |
| SparkFun Spectrum Shield | 1 | 2 filtres MSGEQ7, 7 bandes par canal |
| Boîtier ProtoStax pour Arduino | 1 | Enclosure modulaire empilable (Uno/Mega) |
| Bouton poussoir SPST OFF-(ON) bleu | 1 | |
| Jack stéréo 3.5mm isolé montage panneau | 2 | |
| Câbles aux 3.5mm coudés 90° | 2 | |
| Câble patch 3.5mm stéréo mâle-mâle 6ft | 1 |
Outils nécessaires
- Perceuse/visseuse sans fil
À propos de ce projet

Dans cet article, j'explique comment construire un visualiseur audio à matrice LED RGB en utilisant un Arduino, un Shield Matrice LED RGB Adafruit, et un Shield Analyseur de Spectre Audio SparkFun, le tout intégré dans un boîtier pour obtenir un projet fini à afficher près de votre système audio pour un spectacle lumineux synchronisé avec votre musique !
Analyse de spectre audio
J'utilise le SparkFun Spectrum Shield avec deux filtres MSGEQ7 qui divisent une entrée audio stéréo en 7 bandes (par canal) et lisent l'amplitude de chacune via l'ADC de l'Arduino. Fourni avec des exemples de code Arduino.
Matrice LED RGB
J'utilise le Adafruit NeoPixel Shield : 40 RGB NeoPixels (WS2812). LED rouge, verte, bleue + puce de contrôle intégrées dans un boîtier CMS, pilotées par un seul fil. Chaînées sur le shield. Bibliothèque Adafruit_NeoMatrix pour simplifier le contrôle.
Boîtier ProtoStax
Système d'enceinte modulaire empilable pour Arduino. Supporte différentes phases de prototypage : protection + accès ouvert au début, possibilité d'ajouter parois latérales et couvercle plus tard. Empilable côte à côte ou verticalement. En acrylique transparent, robuste, avec patins en caoutchouc. Parfait pour afficher le visualiseur avec votre système audio !
Étape 1 – Monter l'Arduino sur la base du boîtier
Montez l'Arduino (Uno) sur la plaque de base. Configuration "Plateforme" : protection + accès total. Ajoutez les pieds et matériel. Voir diaporama pour étapes détaillées.

Animation GIF : 
Étape 2 – Préparer le SparkFun Spectrum Shield
Le Spectrum Shield n'a pas de connecteurs. Heureusement, le NeoPixel Shield fournit des connecteurs à empilement (stacking) et standards. J'utilise les standards pour le NeoPixel (au-dessus, affleurant) et les stacking pour le Spectrum Shield (en dessous).
Problème : les ports USB/Alimentation de l'Uno gênent. Solutions :
- Couper l'extrémité du Spectrum Shield au-dessus des ports USB/Alimentation (zone prototypage inutilisée)
- Raccourcir légèrement les pattes des connecteurs stacking
Résultat : ajustement parfait !


Étape 3 – Insérer le Adafruit NeoPixel Shield
Le NeoPixel Shield va au-dessus du Spectrum Shield. Soudez les connecteurs standards fournis. J'ai aussi soudé le connecteur terminal, mais ici j'alimente via l'Arduino (pas toutes les LED allumées simultanément).
Étape 4 – Code de démonstration
Dépôt GitHub : ProtoStax_Audio_Visualizer_Demo
Deux parties principales :
- Analyse de spectre et sauvegarde des résultats
- Traduction en schéma d'affichage/couleurs pour la matrice 8x5 NeoPixel
Analyse de spectre
En envoyant une séquence numérique aux broches STROBE et RESET, on initialise les puces MSGEQ7. On lit ensuite l'amplitude de chaque bande de fréquence (7 bandes). Chaque bande lue → pulsation STROBE pour la suivante. Valeurs stockées dans Frequencies_One[7] et Frequencies_Two[7] (stéréo). Lecture via ADC 10 bits (0-1023).
Les 7 bandes : 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz, 16kHz.
Regroupement en 3 plages :
- BASSES (Bass) : 60-250 Hz → bandes 1-2
- MÉDIUMS (Mid-range) : 500 Hz-2 kHz → bandes 3-5
- AIGUS (Treble) : 6.25-16 kHz → bandes 6-7
Matrice RGB
Point clé : système de coordonnées NeoMatrix. [0,0] = toujours coin supérieur gauche. Largeur (WIDTH) puis Hauteur (HEIGHT). Position de la LED physique #0 (logo Adafruit). Progression : ROWS (horizontal) ou COLUMNS (vertical).
Notre config : 7 bandes de fréquence, matrice 8x5 (ou 5x8). Affichage des 7 bandes sur la dimension 8 (1 inutilisée), amplitude sur dimension 5. Origine en bas à gauche (plus bas fréquence, plus bas amplitude) → rotation mentale : WIDTH=5, HEIGHT=8, TOP-RIGHT, COLUMNS PROGRESSIVE.
Code principal :
#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();
}
void loop() {
static int scheme = 0;
while (Serial.available() > 0) scheme = Serial.parseInt();
Graph_Frequencies(ALL, scheme);
delay(50);
}
Pour chaque bande (ligne), on prend le max des deux canaux (0-1023). Mapping vers 5 colonnes : division par FREQ_DIV_FACTOR = 204 (1023/204 ≈ 5). Affichage via matrix.drawPixel().
Couleurs HSV pour transitions fluides : matrix.ColorHSV(hue) retourne uint32_t, mais drawPixel attend uint16_t. Solution : matrix.setPassThruColor(couleur32bit) puis drawPixel(col, row, 0).
3 schémas de couleurs :
MAGNITUDE_HUE: vert → rouge/rose selon amplitudeMAGNITUDE_HUE_2: gamme rose/bleu décaléeHSV_COLOR_WHEEL: cycle complet roue des couleurs
Étape 6 – Tests
Vidéo de test disponible dans l'article original.
Étape 7 – Fermer le boîtier
Installer renforts supérieurs, parois latérales, câbles audio et couvercle. Voir diaporama et GIF animé.

Étape 8 – Exposez votre création !
Vous avez maintenant un visualiseur audio amusant à afficher près de votre système audio pour sublimer votre musique avec des effets lumineux faits maison !
Étape 9 – Aller plus loin
- Ajouter des jacks stéréo montage panneau sur paroi latérale pour câblage interne propre
- Plus de schémas de couleurs/motifs
- Sélection plages fréquentielles via entrée série
- Bouton poussoir pour changer schéma de couleurs (percer paroi latérale)
- Second bouton pour changer plage fréquentielle (BASSES/MÉDIUMS/AIGUS/TOUTES)
- Poncer légèrement le couvercle pour effet diffuseur de lumière plus doux
Si intérêt suffisant, je mettrai à jour le projet avec jacks audio, boutons et couvercle diffuseur opaque. Dites-le-moi en commentaire !
Code
ProtoStax Audio Visualizer Demo
Dépôt GitHub : https://github.com/protostax/ProtoStax_Audio_Visualizer_Demo
Processus de fabrication
- Capteur CO2 K30 : Surveillance en temps réel de la qualité de l'air intérieur
- Faciliter la communication sourd-aveugle avec 1Sheeld et Arduino
- Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
- Construire une console Pong 24×16 LED avec Arduino Nano et MAX7219
- Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
- Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
- Intégrer un capteur d'empreintes capacitif DFRobot (ID809) avec Arduino ou ESP8266
- Comment lire de l'audio avec Arduino UNO et DFPlayer Mini – Guide étape par étape
- Animez Votre Poisson Billy Bass avec N'importe Quelle Source Audio – Guide Pas à Pas