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);
}
}
}
Espero que os haya gustado.
//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:
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
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.
a que te refieres con que la salida de tu pc llega a 400 ??
y sabes alguna manera de meterle mas modos de encendido??
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+????
Alejandro Santiago la señal 5V es suministrada por el puerto USB del Arduino (que va conectada a una PC)
excelente aporte
pero en donde conectas los 5v a eso se refiere
pero en donde conectas los 5v a eso se refiere
Puedo conectar tiras led en vez de bombillas?
Puedo conectar tiras led en vez de bombillas?
como podría aplicar esto a un cubo 5x5x5
podrías responder a esta pregunta que hicieron antes:
a que te refieres con que la salida de tu pc llega a 400 ??
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
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
tengo una duda, prenden los leds aunque no halla puesto musica!
como se llama esa cancion?
Buenas noches amigo, disculpe ,e podria ayudar con la simulacion del Vumetro.
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
Aun puedes ayudar...
Lo quiero hacer pero con un microfono... es decir que escuche la musica...
me salavaste la vida es mi cumple se rompio el lm3914 y arduino se combiertio en heroe de nuevo
me puede decir cual es la diferencia de un vumetro de dos canales con este
Publicar un comentario