Eine Audio LightShow ist schon was Feines und es ist gar nicht so schwer etwas derartiges selbst zu basteln. Kurz zur Erklärung, was ein VU Meter eigentlich ist. Mit einem VU-Meter (Volume Unit) kann man die Lautstärke von Audiosignalen sichtbar machen. Wie man sich solch ein Arduino VU meter selber basteln kann, zeige ich in diesem Beitrag.
Arduino – VU meter









Folgende Teile brauchen wir wir dieses Projekt.
- 1 x Lautsprecherkabel mit 3 Litzen,
- 1 x Drehpotentiometer,
- 10 x LEDs,
- 10 x Widerstände,
- 1 x Arduino
- 1 x Breadboard,
- viele Kabel
Aufbau
LEDs
kurzes Bein über einen Widerstand an einen digitalen Pin des Arduino. Langes Bein an GND.
Die 5 LEDs für den linken Audio-Ausgang habe ich an den Pins 4 – 8 und die 5 LEDs für den rechten Audio-Ausgang an den Pins 9 – 13 angeschlossen.
Drehpotentiometer
Über den Drehpotentiometer kann man die Intensität des Ausschlags anpassen. Mein Drehpoti hat 3 Anschlüsse. Den mittleren habe ich an den analogen Port 5 des Arduino, den rechten an +5V und den linken an GND angeschlossen.
Audiokabel (3 Adern)
Das Audiokabel hat eine weiße, eine rote und eine Kupferader. Die Kupferader habe ich mit GND, die Weiße mit dem analogen Port 0 und die Rote mit dem analogen Port 1 verbunden.
Arduino Sketch
//Audiokabel mit 3 Adern, weiß=A0, rot=A1, Kupfer=GNR //5 LEDs für den linken Kanal an den digitalen Pins 4 - 8 //5 LEDs für den rechten Kanal an den digitalen Pins 9 - 13 int ledCountLeft = 5; // Anzahl der Leds für den linken Audio-Eingang int ledCountRight = 5; // Anzahl der Leds für den rechten Audio-Eingang int ledsLeftChannel[5] = { 4, 5, 6, 7, 8 }; // Pins der LEDs für linken Audio-Eingang int ledsRightChannel[5] = { 9, 10, 11, 12, 13 }; // Pins der LEDs für rechten Audio-Eingang int potiPin = 5; // Analoger Pin für Poti zur Einstellung der Intensität int leftChannelPin = 0; // Analoger Pin für Linken Audio-Eingang int rightChannelPin = 1; // Analoger Pin für Rechten Audio-Eingang int i; void setup() { pinMode(potiPin, INPUT); pinMode(leftChannelPin, INPUT); pinMode(rightChannelPin, INPUT); for (i = 0; i < ledCountLeft; i++) pinMode(ledsLeftChannel[i], OUTPUT); for (i = 0; i < ledCountRight; i++) pinMode(ledsRightChannel[i], OUTPUT); Serial.begin(9600); } void loop() { int intensity = analogRead(potiPin); int left = analogRead(leftChannelPin); int right = analogRead(rightChannelPin); Serial.println("LEFT: " + String(left) + " RIGHT: " + String(right)); left = left / intensity; right = right / intensity; if (left == 0) // Wenn Lautstärke = 0 dann alle LEDs des linken Eingangs ausschalten for(i = 0; i < ledCountLeft; i++) digitalWrite(ledsLeftChannel[i], LOW); else { for (i = 0; i < left; i++) // LEDs einschalten, je höher die Lautstärke, desto mehr LEDs werden eingeschaltet digitalWrite(ledsLeftChannel[i], HIGH); for(i = i; i < ledCountLeft; i++) // LEDs ausschalten, je niedriger die Lautstärke, desto mehr LEDs werden ausgeschaltet digitalWrite(ledsLeftChannel[i], LOW); } if (right == 0) // Wenn Lautstärke = 0 dann alle LEDs des rechten Eingangs ausschalten for(i = 0; i < ledCountRight; i++) digitalWrite(ledsRightChannel[i], LOW); else { for (i = 0; i < left; i++) // LEDs einschalten, je höher die Lautstärke, desto mehr LEDs werden eingeschaltet digitalWrite(ledsRightChannel[i], HIGH); for(i = i; i < ledCountRight; i++) // LEDs ausschalten, je niedriger die Lautstärke, desto mehr LEDs werden ausgeschaltet digitalWrite(ledsRightChannel[i], LOW); } }
Video auf YouTube
In diesem Video kann man schön den Ausschlag der LEDs sehen. Leider ohne Musik da ich das Sperren des Videos durch die GEMA nicht riskieren wollte.
Mittlerweile findet man ja kaum noch Videos die nicht gesperrt sind. Einfach traurig was heutzutage los ist.
The post Arduino VU meter – Audio-LightShow appeared first on Fluuux - TechBlog.