Circuit:

Code de mon circuit :
int buzzer = 8;
int boutonPlus = A0;
int boutonMoins = A1;
int boutonAlarme = A2;
int frequence = 400;
bool ancienEtatPlus = LOW;
bool ancienEtatMoins = LOW;
bool ancienEtatAlarme = LOW;
void setup()
{
pinMode(buzzer, OUTPUT);
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;
}
Explication du code
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 aiguCe 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.





