Stap 13: Hardware Add-on 2 - geluidsniveau
Het laatste deel aan deze matrix die ik wilde, is sommige animaties om te reageren op de sterkte van geluid. Ik wilde dat de LED's knipperen op het niveau van het geluid.
Ik vond dit instructable die leek te passen mijn eisen, ik gebruikte de eerste helft van zijn circuit en ook de output van de eerste opamp- en verbonden dat op de laatste resterende ingang pin op de Arduino. Het tweede circuit van de opamp kan worden genegeerd. De enige verandering die ik heb gemaakt was ter vervanging van de 470K over de uitvoer en invoer pin van de eerste opamp met een potentiometer ter waarde van 0 - 500K. Dit stond me toe om de gevoeligheid van het circuit.
Zodra u het circuit gebouwd, steek de stekker in de resterende invoer pin liet op de Arduino. PIN A1 in mijn geval. Ik testte het circuit voor het integreren van de belangrijkste LED matrix schets door het creëren van een nieuwe schets en de volgende code toe te voegen
int sensorPin = a1 worden verkregen;
ongeldig steup() {}
Serial.begin(9600);
}
void loop {}
int soundValue = 0;
soundValue = analogRead(sensorPin);
Als (soundValue > 500) {}
Serial.println(soundValue);
}
}
Deze code leest de analoge waarde op de invoer pin A1. uitvoeren van deze schets en laadt u de seriële monitor. Wanneer u muziek afspelen moet u de waarden in de seriële monitor wordt afgedrukt.
Ik vond dat de muziek op een redelijk niveau altijd een waarde van meer dan 500 geproduceerd. Als je niet iets afgedrukt op de seriële monitor wijzigt deze waarde naar een lagere totdat u sommige waarden wordt afgedrukt. voor de animatie wilde ik dat de LED's knipperen op de verschillende volumes binnen het liedje. Dus maak een notitie van de niveaus die worden afgedrukt tijdens het luider delen van de song.
Tot de belangrijkste LED matrix schets voegde ik de volgende variabelen onder de matrix-verklaringen
int sensorPin = a1 worden verkregen;
int soundValue = 0;
int delayOn = 30;
Vervolgens voegde ik de volgende functie
ongeldig loopReadSoundLevel() {}
int soundValue = 0;
soundValue = analogRead(sensorPin); luiden naar de waarde van de pot
Als (soundValue > 500 & & 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); wachten van 100 milliseconden voordat de next-lus
}
Deze functie leest de analoge waarde van het circuit.
Vervolgens afhankelijk van de waarde ontvangen zal tonen het effect dat ik wil. Zie de bijgevoegde schets voor de code voor deze verklaringen effect.
U kunt de gevoeligheid van het circuit om te veranderen het volume wanneer deze effecten worden weergegeven met behulp van de potentiometer in het circuit aanpassen. Ook kunt u de waarden in de functie. Ik vond dit circuit en de code die de LED's flash in het midden-niveau van de muziek. De treble en bass niet echt effect als het licht knipperen.
Om dit geluid moet animatie uitvoeren u de functie toevoegen aan de matrix van functies eerder verklaard. Ik heb in de schets hieronder alle code toegevoegd en toegewezen aan sleutel 3, zodat het voortdurend zal draaien.