
Schéma
Code du circuit :
int buzzer = 8;
int boutonPlus = A0;
int boutonMoins = A1;
int boutonAlarme = A2;
int frequence = 400;
bool ancienEtatPlus = LOW;
bool ancienEtatMoins = 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 : PLUS AIGU =====
if (etatPlus == HIGH && ancienEtatPlus == LOW)
{
frequence += 100;
if (frequence > 2000)
{
frequence = 2000;
}
tone(buzzer, frequence, 50);
digitalWrite(LED_BUILTIN, HIGH);
delay(5);
digitalWrite(LED_BUILTIN, LOW);
}
// ===== BOUTON 2 : PLUS GRAVE =====
if (etatMoins == HIGH && ancienEtatMoins == LOW)
{
frequence -= 100;
if (frequence < 100)
{
frequence = 100;
}
tone(buzzer, frequence, 50);
digitalWrite(LED_BUILTIN, HIGH);
delay(5);
digitalWrite(LED_BUILTIN, LOW);
}
// ===== BOUTON 3 : ALARME NUCLEAIRE =====
if (etatAlarme == HIGH)
{
// montée + descente ultra rapide
for (int i = 0; i < 3; i++)
{
// montée
for (int f = 600; f <= 1800; f += 25)
{
tone(buzzer, f);
digitalWrite(LED_BUILTIN, HIGH);
delay(1);
if (digitalRead(boutonAlarme) == LOW)
{
noTone(buzzer);
digitalWrite(LED_BUILTIN, LOW);
return;
}
}
// descente
for (int f = 1800; f >= 600; f -= 25)
{
tone(buzzer, f);
digitalWrite(LED_BUILTIN, LOW);
delay(1);
if (digitalRead(boutonAlarme) == LOW)
{
noTone(buzzer);
digitalWrite(LED_BUILTIN, LOW);
return;
}
}
}
}
else
{
noTone(buzzer);
digitalWrite(LED_BUILTIN, LOW);
}
ancienEtatPlus = etatPlus;
ancienEtatMoins = etatMoins;
delay(1);
}
Explication du programme Arduino (ligne par ligne)
int buzzer = 8;
➡️ Définit la broche 8 de l’Arduino comme sortie pour le buzzer (haut-parleur).
int boutonPlus = A0;
➡️ Le bouton connecté à A0 sert à augmenter la fréquence du son (son plus aigu).
int boutonMoins = A1;
➡️ Le bouton connecté à A1 sert à diminuer la fréquence du son (son plus grave).
int boutonAlarme = A2;
➡️ Le bouton connecté à A2 sert à activer ou désactiver l’alarme.
int frequence = 400;
➡️ Définit la fréquence de départ du son (400 Hz).
bool ancienPlus = HIGH;
➡️ Stocke l’ancien état du bouton plus pour détecter un nouvel appui.
bool ancienMoins = HIGH;
➡️ Stocke l’ancien état du bouton moins pour détecter un nouvel appui.
bool alarmeActive = false;
➡️ Variable qui indique si l’alarme est activée ou non.
⚙️ setup()
void setup()
➡️ Fonction exécutée une seule fois au démarrage de l’Arduino.
pinMode(buzzer, OUTPUT);
➡️ Configure le buzzer en sortie pour produire du son.
pinMode(boutonPlus, INPUT_PULLUP);
➡️ Configure le bouton A0 en entrée avec résistance interne (INPUT_PULLUP).
pinMode(boutonMoins, INPUT_PULLUP);
➡️ Configure le bouton A1 en entrée avec résistance interne.
pinMode(boutonAlarme, INPUT_PULLUP);
➡️ Configure le bouton A2 en entrée avec résistance interne.
pinMode(LED_BUILTIN, OUTPUT);
➡️ Configure la LED intégrée de l’Arduino comme sortie.
🔁 loop()
void loop()
➡️ Fonction qui s’exécute en boucle infinie.
bool plus = digitalRead(boutonPlus);
➡️ Lit l’état actuel du bouton plus (appuyé ou non).
bool moins = digitalRead(boutonMoins);
➡️ Lit l’état actuel du bouton moins.
bool alarme = digitalRead(boutonAlarme);
➡️ Lit l’état du bouton alarme.
🚨 Gestion de l’alarme
if (alarme == LOW && alarmeActive == false)
➡️ Si on appuie sur le bouton alarme et qu’elle est désactivée.
alarmeActive = true;
➡️ Active l’alarme.
else if (alarme == LOW && alarmeActive == true)
➡️ Si on réappuie sur le bouton alarme.
alarmeActive = false;
➡️ Désactive l’alarme.
🚨 Mode alarme
int f = 600 + (millis() % 1200);
➡️ Crée une variation automatique de fréquence pour faire une sirène.
tone(buzzer, f);
➡️ Produit le son du buzzer avec la fréquence calculée.
digitalWrite(LED_BUILTIN, millis() % 100 < 50);
➡️ Fait clignoter la LED comme un gyrophare.
🔼 Bouton plus (aigu)
if (plus == LOW && ancienPlus == HIGH)
➡️ Détecte un nouvel appui sur le bouton A0.
frequence += 100;
➡️ Augmente la fréquence (son plus aigu).
tone(buzzer, frequence);
➡️ Joue le son avec la nouvelle fréquence.
🔽 Bouton moins (grave)
if (moins == LOW && ancienMoins == HIGH)
➡️ Détecte un nouvel appui sur le bouton A1.
frequence -= 100;
➡️ Diminue la fréquence (son plus grave).
tone(buzzer, frequence);
➡️ Joue le son modifié.
🔊 Maintien du son
tone(buzzer, frequence);
➡️ Maintient le son actif en continu même sans appuyer.
🔁 Mise à jour des états
ancienPlus = plus;
➡️ Sauvegarde l’état actuel du bouton plus.
ancienMoins = moins;
➡️ Sauvegarde l’état du bouton moins.
⏱️ Pause
delay(10);
➡️ Petite pause pour stabiliser le programme.
