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.

Difficulté :

Matériel nécessaire

On va maintenant le matériel nécessaire pour le projet :

Schéma du projet

A quoi sert les résistances ?

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.

Comment fonctionne le buzzer ?

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.

Programme du projet

/* 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
}

Comment mettre le programme sur votre carte Arduino ?

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).

Comment modifier le nombre de notes ?

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);
  }

Comment changer les fréquences des notes ?

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 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.

Simulation

Voici la simulation du piano sur tinkercad :

Conclusion

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.