Quantcast
Channel: Arduino – Fluuux – TechBlog
Viewing all articles
Browse latest Browse all 40

Arduino VU meter – Audio-LightShow

$
0
0

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

Arduino VU Meter Audikabel - Arduino VU Meter Breadboard - Arduino VU Meter Breadboard - Arduino VU Meter LEDs - Arduino VU Meter LEDs - Arduino VU Meter LEDs - Arduino VU Meter LEDs - Arduino VU Meter LEDs - 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.

Can't see the video in your RSS reader or email? Click Here!

The post Arduino VU meter – Audio-LightShow appeared first on Fluuux - TechBlog.


Viewing all articles
Browse latest Browse all 40

Latest Images

Trending Articles