Étape 13 : Matériel le module 2 - niveau sonore
La dernière partie de cette matrice, j’ai voulu, est quelques animations de réagir à des niveaux sonores. J’ai voulu que la LED s à clignoter jusqu’au niveau du son.
J’ai trouvé ce instructable qui semblait convenir à mes besoins, j’ai utilisé la première moitié de son circuit et trop le connecté qu’à la dernière entrée restante épingler sur l’Arduino et de sortie de l’ampli-op première. Le deuxième circuit d’amplificateur opérationnel peut être ignoré. Le seul changement que j’ai faite a été de substituer le 470K travers la broche d’entrée et de sortie de l’ampli-op première avec un potentiomètre 0 - 500K d’une valeur. Cela m’a permis de régler la sensibilité du circuit.
Une fois que vous avez construit le circuit, branchez-le à l’entrée pin restant à gauche sur l’Arduino. Broche A1 dans mon cas. J’ai testé le circuit avant d’intégrer dans l’esquisse de matrice de LED principale en créant une nouvelle esquisse et en ajoutant le code suivant
int sensorPin = A1 ;
void steup() {}
Serial.Begin(9600) ;
}
void loop() {}
int soundValue = 0 ;
soundValue = analogRead(sensorPin) ;
Si {(soundValue > 500)
Serial.println(soundValue) ;
}
}
Ce code lit la valeur analogique sur l’entrée pin A1. Exécutez cette esquisse et charger le serial monitor. Lorsque vous jouez de la musique, vous devriez voir les valeurs étant imprimées dans le moniteur de la série.
J’ai trouvé que la musique à un niveau raisonnable produit toujours une valeur supérieure à 500. Si vous n’obtenez rien imprimé sur le moniteur de la série puis modifiez cette valeur à un plus faible jusqu'à ce que vous obtenez des valeurs en cours d’impression. pour l’animation, j’ai voulu que la LED s à clignoter dans les différents volumes dans la chanson. Alors prenez note des niveaux qui sont en cours d’impression pendant les parties plus forts de la chanson.
À l’esquisse de matrice de LED principale, j’ai ajouté les variables suivantes sous les déclarations de tableau
int sensorPin = A1 ;
int soundValue = 0 ;
delayOn int = 30 ;
J’ai ensuite ajouté la fonction suivante
void loopReadSoundLevel() {}
int soundValue = 0 ;
soundValue = analogRead(sensorPin) ; lire la valeur du pot
Si (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) ; attendre 100 millisecondes avant la prochaine boucle
}
Cette fonction lit la valeur analogique du circuit.
Puis, en fonction de la valeur reçue, il affichera l’effet que je veux. Voir le croquis ci-joint pour obtenir le code pour les déclarations de ces effets.
Avec le potentiomètre dans le circuit, vous pouvez ajuster la sensibilité du circuit afin de modifier le volume lorsque ces effets sont affichés. Vous pouvez également modifier les valeurs de la fonction. J’ai trouvé ce circuit et le code de la LED de flash dans le niveau moyen de la musique. Les aigus et les graves ne pas vraiment effet lorsque le témoin clignote.
Pour obtenir ce son animation pour exécuter, vous devez ajouter la fonction dans le tableau des fonctions déclarées précédemment. Le schéma ci-dessous, j’ai ajouté tout le code et il attribua à la touche 3, donc il s’exécutera sans cesse.