Clavier musical

Avec quelques résistances et quelques boutons, il est possible de construire un petit clavier musical !

INTERMÉDIAIRE

Photo du circuit

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

Matériel

Circuit

Sch%C3%A9ma_bb

Photo du circuit

Code

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

Article suivant