Dans ce projet on va voir comment faire un piano sur Arduino. Pour cela on va utiliser des boutons poussoirs. Chaque bouton poussoir à sa prore note. On va voir comment changer les notes et en ajouter aussi.
On va maintenant le matériel nécessaire pour le projet :
Les résistances sont utilisées comme résistance de pull-up pour ne pas avoir d’état z lorsque l’on appuie sur le bouton poussoir. Pour avoir plus d’information sur l’état z vous pouvez regarder notre cours dessus.
On utilisera aussi un buzzer qui permet d’émettre du son à partir d’une entrée analogique. En fonction de la tension aux bornes du buzzer celui va émettre un son différent.
/* Code Piano Arduino Factory */
// On définit les boutons poussoirs
int Bouton_1 = 2;
int Bouton_2 = 3;
int Bouton_3 = 4;
int Bouton_4 = 5;
int Bouton_5 = 6;
int Bouton_6 = 7;
int Bouton_7 = 8;
int Bouton_8 = 9;
// On définit le buzzer
int buzzer = 13;
void setup()
{
// On définit les boutons poussoirs en entrée (pull-up)
pinMode(Bouton_1,INPUT);
pinMode(Bouton_2,INPUT);
pinMode(Bouton_3,INPUT);
pinMode(Bouton_4,INPUT);
pinMode(Bouton_5,INPUT);
pinMode(Bouton_6,INPUT);
pinMode(Bouton_7,INPUT);
pinMode(Bouton_8,INPUT);
//On définit le buzzer en sortie
pinMode(buzzer,OUTPUT);
}
void loop()
{
// On lit les valeurs venant des boutons poussoires
int b1 = digitalRead(Bouton_1);
int b2 = digitalRead(Bouton_2);
int b3 = digitalRead(Bouton_3);
int b4 = digitalRead(Bouton_4);
int b5 = digitalRead(Bouton_5);
int b6 = digitalRead(Bouton_6);
int b7 = digitalRead(Bouton_7);
int b8 = digitalRead(Bouton_8);
// Si un est bouton est appuyé on fait sonner le buzzer avec la note correspondante
if( b1 == 1 ){
tone(buzzer,240,100);
}
if( b2 == 1 ){
tone(buzzer,270,100);
}
if( b3 == 1 ){
tone(buzzer,300,100);
}
if( b4 == 1 ){
tone(buzzer,337.5,100);
}
if( b5 == 1 ){
tone(buzzer,360,100);
}
if( b6 == 1 ){
tone(buzzer,400,100);
}
if( b7 == 1 ){
tone(buzzer,450,100);
}
if( b8 == 1 ){
tone(buzzer,470,100);
}
delay(10); // On fait une pause entre chaque musique
}
Pour mettre votre programme sur votre carte, vous aurez besoin du logiciel arduino Ide. Une fois le logiciel installé, il faudra connecter la carte à votre ordinateur, puis le bon port (celui relié à votre carte).
Pour modifier le nombre de notes, vous pouvez ajouter ou enlever des boutons poussoirs. Une fois le nombre de bouton poussoir changé, il va falloir modifier le code.
Pour cela vous devez déclarer votre nouveau bouton :
int Bouton_x = 2;
Vous déclarez votre bouton en entrée dans le void setup :
pinMode(Bouton_x,INPUT);
On lit ensuite la valeur venant du bouton poussoir pour savoir s’il a été appuyé (dans le void loop) :
int bx = digitalRead(Bouton_x);
On ajoute ensuite la fréquence avec le if si le bouton est appuyé :
if( bx == 1 ){
tone(buzzer,votre fréquence,100);
}
On va maintenant voir comment modifier la fréquence pour adapter le piano à votre convenance :
La première chose à faire est de trouver la note que vous souhaitez jouer. Voici une liste des notes à l’octave 2,3 et 4 :
Octave /Note | Do | Ré | Mi | Fa | Sol | La | Si |
---|---|---|---|---|---|---|---|
Octave 2 | 130 hz | 146 hz | 164 hz | 174 hz | 196 hz | 220 hz | 246 hz |
Octave 3 | 261 hz | 293 hz | 329 hz | 349 hz | 392 hz | 440 hz | 493 hz |
Octave 4 | 523 hz | 587 hz | 659 hz | 698 hz | 783 hz | 880 hz | 987 hz |
Pour pouvoir changer une note, il va falloir modifier le programme. Voici la ligne qu’il faut modifier :
if( bx == 1 ){
tone(buzzer,votre fréquence,100);
}
Il vous suffit ensuite de remplacer bx par le nom de votre bouton et votre fréquence par la fréquence choisit.
Voici la simulation du piano sur tinkercad :
Pour conclure, pour avoir un vrai piano il vous manque plus qu’à imprimer un boitier en imprimante 3D ou bien le faire en carton. Il vous suffira de souder vos composants en les protégeants avec des gaînes thermorétractable afin de protéger votre circuit.