Circuit du SON 😊😊

pinMode(boutonPlus, INPUT);
pinMode(boutonMoins, INPUT);
pinMode(boutonAlarme, INPUT);

pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
bool etatPlus = digitalRead(boutonPlus);
bool etatMoins = digitalRead(boutonMoins);
bool etatAlarme = digitalRead(boutonAlarme);

// ===== BOUTON 1 =====
// son plus aigu
if (etatPlus == HIGH && ancienEtatPlus == LOW)
{
frequence = frequence + 100;

if (frequence > 2000)
{
  frequence = 2000;
}

tone(buzzer, frequence, 200);

digitalWrite(LED_BUILTIN, HIGH);
delay(50);
digitalWrite(LED_BUILTIN, LOW);

}

// ===== BOUTON 2 =====
// son plus grave
if (etatMoins == HIGH && ancienEtatMoins == LOW)
{
frequence = frequence – 100;

if (frequence < 100) // Limite basse pour éviter les fréquences négatives
{
  frequence = 100;
}

tone(buzzer, frequence, 200);

digitalWrite(LED_BUILTIN, HIGH);
delay(50);
digitalWrite(LED_BUILTIN, LOW);

}

// Mise à jour des anciens états pour le prochain tour de boucle
ancienEtatPlus = etatPlus;
ancienEtatMoins = etatMoins;
ancienEtatAlarme = etatAlarme;
}

Voici l’explication ligne par ligne de votre code Arduino. Pour que ce soit plus simple Ă  comprendre, je l’ai dĂ©coupĂ© par sections logiques.


1. Déclaration des composants (Broches)

Ces lignes associent un nom comprĂ©hensible au numĂ©ro de la prise (broche/pin) de l’Arduino oĂč est branchĂ© chaque composant.

  • int buzzer = 8; Indique que le buzzer est branchĂ© sur la broche numĂ©rique 8.
  • int boutonPlus = A0;Indique que le bouton pour augmenter le son est branchĂ© sur la broche analogique A0.
  • int boutonMoins = A1; Indique que le bouton pour baisser le son est branchĂ© sur la broche analogique A1.
  • int boutonAlarme = A2; Indique qu’un troisiĂšme bouton (alarme) est branchĂ© sur la broche analogique A2.

2. Variables de configuration et d’Ă©tat

Ces lignes permettent Ă  l’Arduino de garder des informations en mĂ©moire (la frĂ©quence du son et si on a dĂ©jĂ  appuyĂ© sur les boutons).

  • int frequence = 400; CrĂ©e une variable pour stocker la hauteur du son (en Hertz). Elle dĂ©marre Ă  400 Hz.
  • bool ancienEtatPlus = LOW;
  • bool ancienEtatMoins = LOW;
  • bool ancienEtatAlarme = LOW;Ces trois lignes servent Ă  mĂ©moriser l’Ă©tat prĂ©cĂ©dent de chaque bouton (au repos : LOW). Cela permettra au programme de dĂ©tecter le moment prĂ©cis oĂč vous appuyez sur le bouton, et d’Ă©viter que le son ne s’emballe si vous laissez votre doigt posĂ© dessus.

3. La configuration initiale (void setup)

Cette section s’exĂ©cute une seule fois au dĂ©marrage de l’Arduino pour configurer le rĂŽle de chaque broche (entrĂ©e ou sortie).

  • void setup() {Ouvre la fonction de configuration.
  • pinMode(buzzer, OUTPUT); Configure la broche du buzzer en SORTIE (l’Arduino va lui envoyer de l’Ă©lectricitĂ© pour faire du bruit).
  • pinMode(boutonPlus, INPUT);
  • pinMode(boutonMoins, INPUT);
  • pinMode(boutonAlarme, INPUT); Configurent les broches des boutons en ENTRÉE (l’Arduino « écoute » si de l’Ă©lectricitĂ© arrive quand on appuie dessus).
  • pinMode(LED_BUILTIN, OUTPUT); Configure la petite LED directement intĂ©grĂ©e sur la carte Arduino en SORTIE pour pouvoir l’allumer.
  • }À quoi ça sert : Ferme la fonction de configuration.

4. La boucle principale (void loop)

Cette partie s’exĂ©cute en boucle et Ă  l’infini tant que l’Arduino est allumĂ©.

  • void loop() {Ouvre la boucle principale du programme.

Lecture de l’Ă©tat actuel des boutons

  • bool etatPlus = digitalRead(boutonPlus);
  • bool etatMoins = digitalRead(boutonMoins);
  • bool etatAlarme = digitalRead(boutonAlarme); L’Arduino regarde en temps rĂ©el si un bouton est enfoncĂ© (HIGH) ou relĂąchĂ© (LOW), et stocke cette rĂ©ponse instantanĂ©e dans trois nouvelles variables (etat...).

Action du Bouton 1 (Augmenter le son)

  • // ===== BOUTON 1 ===== et // son plus aigu Ce sont des commentaires pour l’humain, l’Arduino les ignore.
  • if (etatPlus == HIGH && ancienEtatPlus == LOW) { C’est la condition magique : « Si le bouton est appuyĂ© MAINTENANT (HIGH) ET qu’il Ă©tait relĂąchĂ© juste AVANT (LOW) ». Cela permet de ne dĂ©clencher l’action qu’une seule fois par clic.
  • frequence = frequence + 100;Augmente la valeur de la frĂ©quence de 100 Hz (le son sera plus aigu).
  • if (frequence > 2000) { frequence = 2000; } SĂ©curitĂ© : si la frĂ©quence dĂ©passe 2000 Hz, on la bloque Ă  2000 Hz pour que ça ne devienne pas trop strident ou inaudible.
  • tone(buzzer, frequence, 200); Fait sonner le buzzer Ă  la frĂ©quence calculĂ©e pendant une durĂ©e de 200 millisecondes.
  • digitalWrite(LED_BUILTIN, HIGH); Allume la LED de la carte Arduino pour faire un retour visuel.
  • delay(50); Met le programme en pause pendant 50 millisecondes.
  • digitalWrite(LED_BUILTIN, LOW);Éteint la LED de la carte.
  • }À quoi ça sert : Ferme le bloc d’action du bouton 1.

5. Fin du code (Ajouts pour la logique)

  • // ===== BOUTON 2 ===== DĂ©but de la zone pour programmer le bouton qui baisse le son (la logique est identique au bouton 1, mais en faisant - 100).
  • ancienEtatPlus = etatPlus;
  • ancienEtatMoins = etatMoins;
  • ancienEtatAlarme = etatAlarme;Juste avant de recommencer la boucle, on dit Ă  l’Arduino : « L’Ă©tat actuel devient maintenant l’ancien Ă©tat ». C’est ce qui permet de savoir ce qu’il s’est passĂ© au tour prĂ©cĂ©dent.
  • } Ferme la boucle principale (loop). Le programme repart immĂ©diatement Ă  la ligne 24.