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.
