Dans ce projet, nous développerons un générateur de sons utilisant Arduino Uno. Nous aurons des boutons interfacés avec l'UNO et chacun d'eux génère une intensité de tonalité différente. La fréquence de la tonalité générée par l'UNO est la même à chaque interne. C'est l'intensité du son qui change à chaque pression. C'est l'un des moyens les plus simples de créer un piano avec Arduino Uno. Vérifiez également ce circuit Piano.
Les tonalités peuvent être augmentées jusqu'à 20. Cela donne la meilleure variation de ton et des changements beaucoup plus doux. L'intensité de la tonalité est modifiée par PWM (Pulse Width Modulation). Un exemple de PWM est présenté dans le graphique ci-dessous.
En PWM, la fréquence du signal ou la période de temps du signal (Ton + Toff) est toujours constante. Seul le rapport entre les heures de mise en marche et d'arrêt change. Par exemple, dans le deuxième graphique de la figure ci-dessus, le temps de mise en marche est de 80% et le temps de mise hors tension est de 20% de la durée totale.
Dans le troisième graphique, le temps de mise en marche est de 50% et le temps de mise hors tension est de 50% de la durée totale. Donc, dans le premier cas, nous avons un taux de service de 80% et dans le second cas, nous avons un taux de service de 20%.
Avec ce changement de rapport cyclique, nous avons un changement de Vrms (valeur quadratique moyenne de tension), lorsque cette tension est donnée au buzzer, elle fait un bruit différent chaque fois qu'il y a un changement de rapport cyclique.
Nous allons programmer l'UNO pour fournir un signal PWM de rapport de service différent pour chacun des boutons. Nous avons donc à portée de main un générateur de sons qui génère une tonalité différente à chaque pression de bouton.
Composants requis
Matériel: Arduino Uno, alimentation (5v), condensateur 1000 uF, condensateur 100 nF, buzzer, boutons (8 pièces).
Logiciel: AURDINO nightly ou Atmel studio 6.2
Schéma de circuit et explication de fonctionnement
Le circuit du générateur de sons est illustré dans le diagramme ci-dessous.
Pour filtrer le bruit des condensateurs de tension d'alimentation, les condensateurs sont placés entre les bornes comme indiqué sur le schéma.
Le PWM d'Arduino Uno peut être obtenu à n'importe laquelle des broches symbolisées par «~» sur la carte PCB. Il existe six canaux PWM dans UNO. Cependant, nous ne pouvons pas utiliser les broches PWM établies sur les broches 0-7, car les broches sont préférées pour l'interface des boutons.
Il y a une raison de sélectionner les broches 0-7 comme entrées, car les broches 0-7 représentent le PORTD du microcontrôleur. Donc, dans ce dernier cas, nous pouvons prendre le BYTE complet de PORTD.
Maintenant, pour obtenir un rapport de service PWM différent, nous allons utiliser la commande suivante.
analogWrite (9, VALUE); |
À partir de la condition ci-dessus, nous pouvons directement obtenir le signal PWM à la broche correspondante. Le premier paramètre entre parenthèses sert à choisir le numéro de broche du signal PWM. Le deuxième paramètre est pour l'écriture du rapport cyclique.
La valeur PWM d'Arduino Uno peut être modifiée de 0 à 255. Avec «0» comme plus bas à «255» comme plus haut. Avec 255 comme rapport de service, nous obtiendrons 5V à PIN9. Si le rapport cyclique est donné à 125, nous obtiendrons 2,5 V à PIN9. Nous allons diviser le rapport cyclique de 0 à 250 entre 8 boutons interfacés à PORTD de UNO. Ici, je choisis 25 incréments pour chaque bouton, mais c'est votre choix.
Avec cela, nous aurons un signal PWM dont le rapport cyclique change avec chaque bouton. Ceci étant donné au buzzer, nous avons un générateur de tonalité. Le fonctionnement de ce générateur de sons basé sur Arduino est expliqué étape par étape dans le code C ci-dessous.