Paso 13: Hardware Add-on 2 - nivel de sonido
La parte final de esta matriz que quería, es algunas animaciones para reaccionar ante niveles de ruido. Quería que el LED de la flash en el nivel del sonido.
Me encontré con este instructable que parecía para adaptarse a mis necesidades he utilizado la primera mitad de su circuito y también la salida de la primera op-amp y conectado a la entrada restante pasada perno en el Arduino. El segundo circuito de amplificador operacional puede ser ignorado. El único cambio que hice fue sustituir el K 470 a través de la clavija de entrada y salida de la primera op-amp con un potenciómetro de valor 0 - 500K. Esto me permitió ajustar la sensibilidad del circuito.
Una vez había construido el circuito, enchufe la clavija de entrada restante en el Arduino. PIN A1 en mi caso. He probado el circuito antes de integrarla en el bosquejo principal de matriz de LED creando un esquema nuevo y añadiendo el siguiente código
int sensorPin = A1;
void steup() {}
Serial.Begin(9600);
}
void loop() {}
int soundValue = 0;
soundValue = analogRead(sensorPin);
Si {} (soundValue > 500)
Serial.println(soundValue);
}
}
Este código lee el valor analógico en la clavija de entrada A1. ejecutar este bosquejo y carga al monitor serie. Al reproducir música debería ver los valores en el monitor serie.
He encontrado que la música en un nivel razonable produce siempre un valor superior a 500. Si usted no recibe nada en el monitor serial entonces cambiar este valor a otra inferior hasta conseguir unos valores de impresión. para la animación que quería el LED de la flash en los distintos volúmenes dentro de la canción. Así que tome nota de los niveles que aparecen en las partes más fuertes de la canción.
El dibujo de matriz de LED principal he añadido las siguientes variables por debajo de las declaraciones de matriz
int sensorPin = A1;
int soundValue = 0;
int delayOn = 30;
Luego añadí la siguiente función
void loopReadSoundLevel() {}
int soundValue = 0;
soundValue = analogRead(sensorPin); leer el valor del pote
Si (> 500 soundValue & & soundValue < 510) {}
DrawBox1On();
Delay(delayOn);
resetLEDS();
} else if (soundValue > 500 & & soundValue < 510) {}
DrawBox2On();
Delay(delayOn);
resetLEDS();
} else if (soundValue > 510 & & soundValue < 520) {}
DrawBox3On();
Delay(delayOn);
resetLEDS();
} else if (soundValue > 520) {}
DrawAllOn();
Delay(delayOn);
resetLEDS();
}
Delay(100); espera 100 milisegundos antes del siguiente bucle
}
Esta función lee el valor analógico del circuito.
Luego dependiendo el valor recibido mostrará el efecto que quiero. Ver el dibujo adjunto el código para estas declaraciones de efecto.
Mediante el potenciómetro en el circuito puede ajustar la sensibilidad del circuito para cambiar el volumen cuando se muestran estos efectos. También puede cambiar los valores de la función. Encontré este circuito y el código de hecho el LED del flash en el nivel medio de la música. Los graves y agudos realmente no efecto cuando se enciende la luz.
Para conseguir este sonido animación para ejecutar le tendrá que agregar la función a la matriz de funciones declaradas anteriormente. En el bosquejo a continuación he añadido todo el código y asignado a tecla 3, para que corra constantemente.