🛠 Mélodie sur buzzer LilyPad
Objectifs
Faire jouer une mélodie avec un buzzer cousu : génération d'un signal carré par tone sur une pastille PWM, déclenchement par contact, et respect du budget batterie (la pile intégrée du SimpleSnap ne fait que 110 mAh). On apprend aussi à couper l'oscillation pour ne pas vider la LiPo.
Matériel
- 1 LilyPad SimpleSnap + pile 3,7 V
- 1 buzzer passif (les buzzers LilyPad du commerce sont souvent actifs, une seule note — vérifier l'étiquette)
- 2 boutons-pression pour le contact de déclenchement
- Adaptateur FTDI pour téléverser
- >
Code complet
// Mélodie sur buzzer passif — pastille PWM 10, contact sur 2
const uint8_t BUZZER = 10; // pastille PWM (5/6/9/10/11 sur Simple/SimpleSnap)
const uint8_t BOUTON = 2; // contact cousu vers « − », pull-up interne
const uint16_t MELODIE[] = {523, 659, 784, 1047}; // do mi sol do aigu (Hz)
const uint16_t DUREE[] = {180, 180, 180, 400}; // ms
void setup {
pinMode(BOUTON, INPUT_PULLUP);
pinMode(BUZZER, OUTPUT);
}
void loop {
if (digitalRead(BOUTON) == LOW) { // contact fermé -> on joue
for (uint8_t i = 0; i < 4; i++) {
tone(BUZZER, MELODIE[i], DUREE[i]); // carré ~50 % sur la pastille PWM
delay(DUREE[i] + 40); // petite pause entre les notes
}
noTone(BUZZER); // ne pas laisser la broche osciller
while (digitalRead(BOUTON) == LOW) {} // anti-réenchaînement
}
}
Vérification attendue
Au contact des deux boutons-pression, quatre notes montantes (do–mi–sol–do aigu) retentissent, la dernière plus longue, puis silence total. Le son est net et ne grésille pas en continu : noTone coupe bien l'oscillation. Chaque nouveau contact relance la mélodie une seule fois.
Erreurs fréquentes
- Buzzer actif traité comme passif : un buzzer actif ne joue qu'une seule fréquence fixe ; une mélodie exige un buzzer passif.
- Oublier noTone : la broche continue d'osciller, la batterie 110 mAh se vide vite.
- tone sur une pastille non PWM : son absent ou erratique selon les variantes de la core AVR.
- Anti-réenchaînement absent : la mélodie se relance en boucle tant que le contact est maintenu.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinopwm-respiration.inoArduinoluxmetre-couture.inoArduinointerrupteur-tilt.inoArduinoservo-balayage.inoArduino