Un vúmetro es un dispositivo indicador en equipos de audio, sirve para mostrar el nivel de sonido.
En esta entrada encontrarás los pasos claros para crear un vúmetro muy sencillo con arduino usando LEDs como indicadores.
1. Componentes
- 1 Placa Arduino UNO
- 5 LEDs
- 5 Resistencias 220 ohms
- 1 Modulo KY-038 Sensor Micrófono
2. Fundamentos

El sensor KY/038 puede detectar sonido, consiste en el funcionamiento de un detector de ondas sonoras, dichas ondas son recibidas en forma de energía y son enviadas mediante señal eléctrica hacia un aparato receptor/codificador.
Este sensor la señal que nos entrega es digital y analógica, lo cual nos permite decidir cuál utilizar según nuestras necesidades. Si necesitamos saber el valor del sensor, podremos utilizar directamente la salida analógica para conseguir los datos. Sino, podemos utilizar la salida digital, la cual se activa o se desactiva según si el sensor llega a medir la intensidad del sonido que le configuremos, mediante la definición de la sensibilidad del sensor.
3. Circuito
Conectaremos LEDs a salidas digitales y el sensor a una entrada Analógica

4. Implementación y código
Es importante mencionar que con este sensor nos será posible ajustar su sensibilidad (ver el esquema del sensor), para poder programar los LEDs es importante primero detectar los valores que nos devuelve el sensor. Este sensor tiene una sensibilidad mínima de 58 dB y una distancia máxima de medio metro, es importante tener en cuenta antes de probar.
#define MIC A0 // Declaramos el sensor
int sonido = 0; // Declaramos una variable donde guardaremos las lecturas de sonido
void setup() {
// Declaramos el puerto del monitor serie
Serial.begin(9600);
}
void loop() {
sonido= analogRead(MIC); // Leemos lo que mide el sensor de sonido y la guardamos en la variable
Serial.println(sonido); // Lo imprimimos por el monitor serie para ver que valores esta marcando el sensor
}
Con el código anterior podremos ver los valores del sensor en el monitor serie y basado en los valores que nos da al probarlo con mayor o menor sonido, definir la manera en que prenderá más LEDs, en mi caso tengo variables de 75 y 76 sin acercar sonido directo.

Los valores y variables quedaron de la siguiente manera ya en el código
#define MIC A0 // Declaramos el sensor
int sonido = 0; // Declaramos una variable en la que volcaremos los datos que nos proporcione el sensor
int tiempo= 15; // Declaramos una variable que nos servirá para mantener los LEDs encendidos y darle naturalidad
void setup() {
// Declaramos los led que tengamos como OUTPUT
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
// Declaramos el puerto del monitor serie
Serial.begin(9600);
}
// Hacemos una función para controlar los LED
void loop() {
sonido = analogRead(MIC); // Leemos lo que mide el sensor de sonido
Serial.println(sonido); // Lo imprimimos por el monitor serie para ver que valores esta marcando el sensor
// If para controlar los valores, si supera cierto valor, encendemos un pin
//los valores se establecen según las pruebas de monitor serie que vimos anteriormente
//Prendemos cada LED si el sonido va superando cierto valor, apagamos si no es así
if (sonido>76){ digitalWrite(2, HIGH); delay(tiempo);} else{ digitalWrite(2, LOW);delay(tiempo);}
if (sonido>100){ digitalWrite(3, HIGH);delay(tiempo);} else{ digitalWrite(3, LOW);delay(tiempo);}
if (sonido>120){ digitalWrite(4, HIGH);delay(tiempo);} else{ digitalWrite(4, LOW);delay(tiempo);}
if (sonido>200){ digitalWrite(5, HIGH);delay(tiempo);} else{ digitalWrite(5, LOW);delay(tiempo);}
if (sonido>320){ digitalWrite(6, HIGH);delay(tiempo);} else{ digitalWrite(6, LOW);delay(tiempo);}
if (sonido>410){ digitalWrite(7, HIGH);delay(tiempo);} else{ digitalWrite(7, LOW);delay(tiempo);}
}
Si quieres ver el resultado sígueme en Facebook o Instagram y podrás ver el resultado