Avec quelques résistances et quelques boutons, il est possible de construire un petit clavier musical !
Il est possible, dans un premier temps, de brancher chacun des boutons sur une entrée numérique différente, sans utiliser de résistance.
Lorsque cela fonctionne, on peut essayer de constuire une échelle de résistance, pour permettre le branchement de tous les boutons sur une seule et même entrée, analogique.
▶ Fiche de présentation du projet
#define BROCHE_BOUTONS A0
#define BROCHE_BUZZER 2
#define NOTE_CS4 277
#define NOTE_DS4 311
#define NOTE_FS4 370
#define NOTE_GS4 415
#define NOTE_AS4 466
int valeurs[6] = {1021, 867, 732, 640, 512, 0};
int notes[5] = {NOTE_CS4, NOTE_DS4, NOTE_FS4, NOTE_GS4, NOTE_AS4};
int identifier_bouton(int valeur)
{
int distance = 0;
int distance_min = abs(valeurs[0] - valeur);
int distance_min_index = 0;
for (int i = 1; i < 6; i++)
{
distance = abs(valeurs[i] - valeur);
if (distance < distance_min)
{
distance_min = distance;
distance_min_index = i;
}
}
return distance_min_index;
}
void setup()
{
pinMode(BROCHE_BOUTONS, INPUT);
pinMode(BROCHE_BUZZER, OUTPUT);
}
void loop()
{
int bouton = identifier_bouton(analogRead(BROCHE_BOUTONS));
if (bouton < 5)
{
tone(BROCHE_BUZZER, notes[bouton]);
}
else
{
noTone(BROCHE_BUZZER);
}
}