8x8 LED Matrix Animations (13 / 14 steg)
Steg 13: Hårdvara tillägg 2 - ljudnivå
Den sista delen i denna matris som jag ville, är vissa animeringar att reagera på ljudnivåer. Jag ville lampan för att blinka till nivån på ljudet.
Jag hittade den här instructable som tycktes passa mina krav jag använde den första halvan av hans krets och för den produktion av första op-amp och anslutna till de sista återstående ingången pin på Arduino. Andra op-amp kretsen kan ignoreras. Den enda förändringen jag gjorde var att ersätta de 470K över output och input PIN-koden av första op-amp med en potentiometer värde av 0 - 500K. Detta får mig att justera känsligheten av kretsen.
När du byggt kretsen, Anslut den till den återstående ingångsstift kvar på Arduino. PIN A1 i mitt fall. Jag testade banan innan integrera det i främsta LED matrix skiss genom att skapa en ny skiss och lägga till följande kod
int sensorPin = A1;
void steup() {
Serial.BEGIN(9600);
}
void loop() {
int soundValue = 0;
soundValue = analogRead(sensorPin);
om (soundValue > 500) {
Serial.println(soundValue);
}
}
Denna kod läser analoga värdet på ingångsstift A1. Kör denna skiss och ladda den seriella monitorn. När du spelar musik bör du se de värden som skrivs ut i den seriella monitorn.
Jag hittade att musik på en rimlig nivå alltid fram ett värde över 500. Om du inte få något tryckt på serial monitorn sedan ändra detta värde till ett lägre tills du får vissa värden som skrivs ut. för animeringen ville jag lampan för att blinka med de olika volymerna inom sången. Så notera nivåer som skrivs ut under de högre delarna av låten.
På främsta LED matrix skissen lagt jag följande variabler under deklarationerna som array
int sensorPin = A1;
int soundValue = 0;
int delayOn = 30.
Jag la sedan följande funktion
void loopReadSoundLevel() {
int soundValue = 0;
soundValue = analogRead(sensorPin); läsa värdet pot
om (soundValue > 500 & & soundValue < 510) {
DrawBox1On();
Delay(delayOn);
resetLEDS();
} else om (soundValue > 500 & & soundValue < 510) {
DrawBox2On();
Delay(delayOn);
resetLEDS();
} else om (soundValue > 510 & & soundValue < 520) {
DrawBox3On();
Delay(delayOn);
resetLEDS();
} else om (soundValue > 520) {
DrawAllOn();
Delay(delayOn);
resetLEDS();
}
Delay(100); vänta 100 millisekunder innan nästa slingan
}
Denna funktion läser analoga värdet från kretsen.
Beroende på värdet som fick visar den sedan den effekt som jag vill. Se bifogade skissen för koden för förklaringarna effekt.
Med potentiometern i krets kan du justera känsligheten för kretsen att ändra volymen när dessa effekter visas. Du kan också ändra värdena i funktionen. Jag hittade denna krets och kod gjorde LED's flash i mitten av nivån på musiken. Den diskant- och faktiskt inte effekt när ljuset blinkar.
För att få detta ljud måste animering för att köra dig du lägga till funktionen till utbudet av funktioner som förklarats tidigare. I skissen nedan har jag lagt all kod och tilldelats det nyckel 3, så det kommer att köras hela tiden.