martes, 27 de diciembre de 2011

Vúmetro – Leds al ritmo de la música

Como primer proyecto para el blog haremos una cosa bastante fácil, un vúmetro. Un vúmetro no es mas que un instrumento el cual nos indica el nivel de la señal de audio. Nosotros lo que haremos será representarlo con unos leds para que sea mas vistoso. 

Para realizar esto necesitaremos:
  • Arduino
  • Leds
  • Resistencias. Yo he usado de 1 kΩ por cada led
  • Cable de audio
  • Una fuente de audio. Un pc, reproductor, etc
Cosas como la protoboard o cables para hacer las conexiones no creo que haga falta ponerlos :)
El esquema seria una cosa así:



Como podeis ver en la imagen yo no he "pelado" un cable de audio sino que he utilizado un conector de audio que extraje de un lector de cd antiguo, es bastante mas comodo.

Código:

//www.playingwitharduino.blogspot.com

//Declaramos los leds

int LED1 = 3;

int LED2 = 4;

int LED3 = 5;

int LED4 = 6;

int LED5 = 7;

int LED6 = 8;

int LED7 = 9;

int LED8 = 10;



//Las variables que usaremos para el silencio

int Valor;

int Valor1;

int Valor2;

int Valor3;

int Valor4;



//Configuramos los pines y el serial para poder visualizar la entrada analogica

void setup (){

 Serial.begin(9600);

 pinMode(LED1,OUTPUT);

 pinMode(LED2,OUTPUT);

 pinMode(LED3,OUTPUT);

 pinMode(LED4,OUTPUT);

 pinMode(LED5,OUTPUT);

 pinMode(LED6,OUTPUT);

 pinMode(LED7,OUTPUT);

 pinMode(LED8,OUTPUT);

}



void loop (){

  //Leemos el valor

 Valor = analogRead(A0);

 //Transferimos los valores para saber cual era el estado anterior

 Valor4 = Valor3;

 Valor3 = Valor2;

 Valor2 = Valor1;

 Valor1 = Valor;



//Visualizamos los valores en Serial Monitor

 Serial.print("Valor: ");

 Serial.print(Valor);

 Serial.print("\t Valor1: ");

 Serial.print(Valor1);

 Serial.print("\t Valor2: ");

 Serial.print(Valor2);

 Serial.print("\t Valor3: ");

 Serial.print(Valor3);

 Serial.print("\t Valor4: ");

 Serial.println(Valor4);

 

 //Condicionamos que si el programa lee 4 veces seguidas 0 que se apagen los leds, si no ponemos esto los leds parpadearan mucho

if (Valor1+Valor2+Valor3+Valor4==0){

  digitalWrite(LED1,LOW);

  digitalWrite(LED2,LOW);

  digitalWrite(LED3,LOW);

  digitalWrite(LED4,LOW);

  digitalWrite(LED5,LOW);

  digitalWrite(LED6,LOW);

  digitalWrite(LED7,LOW);

  digitalWrite(LED8,LOW);

}

//Encendemos los leds segun el valor de entrada. En este caso la salida de mi pc como mucho me llega a 400 asi que lo dividimos entre ocho leds.

else{

 if (Valor>0){

   digitalWrite(LED1, HIGH);

 }

 else{

   digitalWrite(LED1, LOW);

 }



 if (Valor>50){

   digitalWrite(LED2, HIGH);

 }

 else{

   digitalWrite(LED2, LOW);

 }

 if (Valor>100){

   digitalWrite(LED3, HIGH);

 }

 else{

   digitalWrite(LED3, LOW);

 }



 if (Valor>150){

   digitalWrite(LED4, HIGH);

 }

 else{

   digitalWrite(LED4, LOW);

 }



 if (Valor>200){

   digitalWrite(LED5, HIGH);

 }

 else{

   digitalWrite(LED5, LOW);

 }



 if (Valor>250){

   digitalWrite(LED6, HIGH);

 }

 else{

   digitalWrite(LED6, LOW);

 }



 if (Valor>300){

   digitalWrite(LED7, HIGH);

 }

 else{

   digitalWrite(LED7, LOW);

 }



 if (Valor>350){

   digitalWrite(LED8, HIGH);

 }

 else{

   digitalWrite(LED8, LOW);

}

}




Este es el resultado final:




Espero que os haya gustado.

23 comentarios:

NK34 dijo...

Hola. Muy bueno. Lo acabo de hacer y lo puse detras del monitor (tengo un mueble con fondo) y cuando se apagan las luces quedan re bien. Puse 3 rojos, 3 azules y 2 blancos, en ese orden. El salto del color rojo a azul no quedo muy bien, pero esta buenisimo. Alumbra tanto que si se apagan las luces se ilumina todo. Lo re recomiendo. Solo una aclaracion, en la conexion del 3.5mm creo que tendrias que aclarar que hay que conectar el negativo (el que viene suelto, o de color amarillo) al GND (cualquiera de los 2) en donde dice "POWER" y en el "ANALOG 0" el izquierdo o derecho(cable rojo, blanco, etc).

Saludos

Unknown dijo...

Hola amigo crees que me puedes dar mas informacion para hacerlo es que e pensado hacerlo en mi feria de ciencia del colegio. espero tu respuesta lo mas antes posible, de antemano gracias.

Unknown dijo...

a que te refieres con que la salida de tu pc llega a 400 ??
y sabes alguna manera de meterle mas modos de encendido??

AlexLPD dijo...

Oye disculpa me queda claro el código y todo lo demás, pero tengo una duda en cuanto a la conexión del jack... Por lo que veo tu conectas el canal al puerto analógico para leer la señal, la tierra al gnd del arduino... Pero a dónde envías los 5v de salida de el arduino¿.. Pudieras decirme, he buscado en la red pero la mayoría habla de un amplificador, y le e intentado con un cable de audio, pero sólo he conectado el gnd de el jack al gnd del uno, el canal a leer en el puerto analógico... Pero como o dónde conecto los 5+????

NK34 dijo...

Alejandro Santiago la señal 5V es suministrada por el puerto USB del Arduino (que va conectada a una PC)

Melchiah dijo...
Este comentario ha sido eliminado por el autor.
kamicase2007 dijo...
Este comentario ha sido eliminado por el autor.
kamicase2007 dijo...

excelente aporte

ChralyMC dijo...

pero en donde conectas los 5v a eso se refiere

ChralyMC dijo...

pero en donde conectas los 5v a eso se refiere

J dijo...

Puedo conectar tiras led en vez de bombillas?

J dijo...

Puedo conectar tiras led en vez de bombillas?

Laury Robles dijo...

como podría aplicar esto a un cubo 5x5x5

Unknown dijo...

podrías responder a esta pregunta que hicieron antes:

a que te refieres con que la salida de tu pc llega a 400 ??

Unknown dijo...

Olle tengo me pareció estupendo pero tengo un problema y es que intento que funcione pero no se iluminan nada mas que el primer les y de vez en cuando el segundo con el volumen al máximo como podría arreglarlo

Unknown dijo...

Olle tengo me pareció estupendo pero tengo un problema y es que intento que funcione pero no se iluminan nada mas que el primer les y de vez en cuando el segundo con el volumen al máximo como podría arreglarlo

Unknown dijo...

tengo una duda, prenden los leds aunque no halla puesto musica!

Unknown dijo...

como se llama esa cancion?

Israel dijo...

Buenas noches amigo, disculpe ,e podria ayudar con la simulacion del Vumetro.

tazma dijo...

hola estoy intentado cargar el sketch pero sueta este error
avrdude: verification error, first mismatch at byte 0x0000
0x0c != 0xff
avrdude: verification error; content mismatch

que puede ser

Lugo_Chile dijo...

Aun puedes ayudar...

Lo quiero hacer pero con un microfono... es decir que escuche la musica...

Unknown dijo...

me salavaste la vida es mi cumple se rompio el lm3914 y arduino se combiertio en heroe de nuevo

DARWIN dijo...

me puede decir cual es la diferencia de un vumetro de dos canales con este

Publicar un comentario