How to Make a LED VU Meter Using Arduino




Introduction: How to Make a LED VU Meter Using Arduino

About: Be enthusiastic about electronic design, enjoy the process in bringing a design to life. Always being happy to share good stuffs with others.

VU Meter or Volume Meter is very popular and fun project in Electronics. We can consider the Volume Meter as an Equalizer, which is present in the Music systems. Volume Meter (VU) is an indicator or representation of the intensity of sound level over LEDs and can also serve as a volume measurement device.

This time we are building VU Meter using Arduino and taking the audio input from 3.5 mm jack, so that you easily provide audio input from your Mobile or Laptop using AUX cable or 3.5 mm audio jack. You can easily build it on Breadboard but here we are designing it on PCB as a Arduino Shield using EasyEDA online PCB designer.

Step 1: Components Required:

  • Arduino UNO
  • VU Meter Arduino Shield (Self Designed)
  • Power Supply

Components for VU Meter Arduino shield:

  • 3.5mm Audio Jack
  • SMD type Resistors 100 ohm (10)
  • LEDs
  • Burg strips

Step 2: Designing Volume Meter (VU) Shield for Arduino:

For designing VU Meter Shield for Arduino, we have used EasyEDA, in which first we have designed a Schematic and then converted that into the PCB layout by Auto Routing feature of EasyEDA.

In this VU Meter Arduino Shield, we have used 8 LEDs, in which 2 LEDs are of Red color for Higher Audio Signal, 2 Yellow LEDs are for mediate audio signal and 4 Green LEDs are for Lower audio Signal. We can add some more option in this Shield by connecting LCD, ESP8266 Wi-Fi module, DHT11 H&T Module, voltage regulator, more VCC, +5v, +3.3v and GND pins. But here in demonstration of this project we have assembled only LEDs, audio jack and power LED. Here in this shield, we have used some SMD components that are resistors and LEDs. Also we have two options to apply audio signal to this board that are direct to pins or by using audio jack.
Circuit for this project is very simple, we have a connected 8 LEDs at pin numbers D3-D10. Audio Jack is directly connected at analog pin A5 of Arduino. If you need to connect LCD then you can connect the LCD at J1 and J7 (see below circuit) with connections like lcd(14, 15,16,17,18,2).

We have made the Circuit and PCB design of this VU Meter Shield public, so you can just follow the link to access the Circuit Diagram and PCB layouts. The Snapshot of Top layer of PCB layout from EasyEDA, you can view any Layer (Top, Bottom, Topsilk, bottomsilk etc) of the PCB by selecting the layer form the ‘Layers’ Window.

Step 3: PCB Ordering:

After completing the design of PCB, click on the “Fabrication Output” button in the PCB editor window, you’ll be taken to a page where you can order the PCB. You’ll also be given choices for copper thickness, PCB thickness, color, order quantity, and other parameters.

I ordered 5 PCBs and the cost came to $17.10 USD. Manufacturing and shipping took about 10 days. The boards came out great. The traces are routed precisely and all of the printing is very clear.

Step 4: The Boards After Manufacturing:

After getting the PCBs, we have mounted and soldered all the required components and burg strips over the PCB, you can have a final look at above images.

Now we just need to place this VU Meter Shield over the Arduino. Align the Pins of this Shield with the Arduino and firmly press it over the Arduino. Now just upload the code to the Arduino and power on circuit and you are done! Your VU Meter is ready to dance on music.

Step 5: Programming Explanation:

Program of this Arduino VU Meter is very easy. Here in this code we haven’t given any name to particular LED. I just keep in mind the connection and write code directly.

In the given void setup() function we initialize the output pins for LEDs. Here we can see a for loop in which we initialize the value of i=3 and run it to 10. Here i=3 is the third pin of Arduino and whole for loop will initialize the pin D3-D10 of Arduino.

void setup() {


pinMode(i, OUTPUT);


Now in void loop() function we read the analog value from the A5 pin of Arduino and store that value in a variable namely ‘value’. Now this ‘value’ is divided by 10 to get a result and this result is directly used to get pin no of Arduino using for loop.

void loop() {

int value=analogRead(A5);



digitalWrite(i, HIGH);


digitalWrite(i, LOW);


It can be explained by example, like suppose the analog value is 50, now
divide it by 10, we will get:

Value = 50

Value = value/10

Value = 50/10 = 5

Now we have used for loop like:

digitalWrite(i, HIGH);

In above ‘for’ loop i=3 is D3 and Value=5 means D5.
So it means loop will go from D3 to D5 and LEDs that are connected at D3, D4 and D5 will be ‘ON’

And in below ‘for’ loop i=value+1 means value=5+1 means D6 and i<=10 means D10.

digitalWrite(i, LOW);

Means loop will go from D6 to D10 and LEDs that are connected at D6-D10 will be ‘OFF’.

Step 6: Demonstration Video for Arduino Based LED VU Meter Project:

So that’s how we can build our own VU Meter Arduino Shield, in which LEDs will glow according to the intensity of the sound like you can check in Video below. You can directly provide input from your mobile or laptop by using 3.5 mm audio jack or AUX cable and have fun with the beautiful lighting effect.

Hope you enjoy the LED VU meter!

Be the First to Share


    • Pocket-Sized Speed Challenge

      Pocket-Sized Speed Challenge
    • Super-Size Speed Challenge

      Super-Size Speed Challenge
    • Audio Challenge 2020

      Audio Challenge 2020

    2 Discussions


    3 years ago

    I see couple of problems: it's dangerous to directly connect audio output to analog input pin. You definitely should use some kind of opamp before analog input. It is important to cut off negative voltage of sinewave! And if you don!t do that you can destroy arduino very easy