Introduction: Audio VU Meter Using Arduino

About: hIOTron is an IoT Based company that offers IoT Platforms, IoT Solutions, IoT Training.

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

Step 1: 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 aboutIoT Training in Punewhich will easy to build anIoT 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.

Step 2: 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);

}

}

}

}