Audio VU Meter Using Arduino
by hIOTron IoT in Circuits > Arduino
894 Views, 6 Favorites, 0 Comments
Audio VU Meter Using Arduino
A VU meter is a device that displays a description of the signal level in audio equipment.
Supplies
Hardware Components
Arduino Uno
10K ohm potentiometer
16X2 LCD
Connecting wires
Software Used
Arduino IDE
About Project
A VU meter or standard volume indicator (SVI) is a device that displays a description of the signal level in audio equipment.
In this project, the intensity of left-channel and right-channel audio signals provided as input to the Arduino UNO board is presented as bars on the 16×2 LCD. In this Arduino circuit, analog input pins of the Arduino UNO board are utilized for the measurement of audio-signal levels.
Audio-signal inputs are presented at analog input pin A2 and pin A4 of the Arduino UNO board. These can be in the order of voice coming from a microphone through an amplifier or as direct output from a music player.
Audio signals at pin A2 and pin A4 are prepared by ATmega328 microcontroller on the Arduino UNO board and after comparing the signals, estimations are done.
Finally, identical values are presented by ATmega328 to a 16×2 LCD for displaying audio intensity bars as shown in below implementation.
Learn more about IoT Training in Pune which will easy to build an IoT Solutions.
The height of the bars will vary as per the voltage of the audio input signal at pins A2 and pin A4 of the Arduino UNO board. L is presented on the LCD for the left channel and similarly, R is presented for the right channel.
Connections of pin A2 and pin A4 of the Arduino UNO board must be done carefully so that proper channel audio input is presented to the circuit. To present bars on the LCD screen, custom characters are designed for the 16×2 LCD, which is described in the programming section.
The Potentiometer is utilized for controlling the contrast of the display and so, can be modified as per requirement.
Run a Program
int led[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int input, i;
void setup()
{
for (i = 0; i < 11; i++)
pinMode(led[i], OUTPUT);
//Serial.begin(9600);
}
void loop()
{
input = analogRead(A0);
//Serial.println(s);
input = input / 12; //By changing the denomintor the sensitivity can be changed
if (input < 12)
{
if (input == 0)
{
for (i = 0; i < 11; i++)
{
digitalWrite(led[i], LOW);
}
}
else
{
for (i = 0; i < input; i++)
{
digitalWrite(led[i], HIGH);
delay(4);
}
for (i = i; i < 11; i++)
{
digitalWrite(led[i], LOW);
}
}
}
}