Arduino : Animation lumineuse et sonore – L'hymne national américain
Composants et fournitures
| Composant | Quantité | Notes |
|---|---|---|
| Arduino Nano R3 (ATmega328P, ancien bootloader) | 1 | Cœur du projet |
| Buzzer (16 Ω utilisé) | 1 | Signal sonore |
| Boutons poussoirs 6×6×6 mm | 2 | Sélection mélodie |
| Interrupteur à bascule 250 V 3 A | 1 | Alimentation |
| Résistances 330 Ω | 3 | Limitation courant LED |
| LED (2 rouges, 2 blanches, 2 bleues) | 6 | 2 par couleur en parallèle |
| Plaque à souder mini (ou sans soudure) | 1 | Montage |
| Batterie 9 V + boîtier | 1 | Autonome |
Outils nécessaires
- Fer à souder (optionnel si plaque sans soudure)
À propos du projet
Projet dérivé d'un travail sur guirlandes de Noël programmées. Deux boutons déclenchent deux mélodies via la fonction tone() :
- Bouton 1 : Sonnerie « Charge » (courte, dynamique)
- Bouton 2 : Hymne national américain (The Star-Spangled Banner) complet avec LEDs synchronisées
En attente d'appui, les LEDs clignotent aléatoirement (« twinkle »). Le code utilise massivement des fonctions pour chaque note, facilitant les ajustements de tempo, hauteur, staccato.
Architecture du code
- Boucle principale : lecture boutons → appel fonction mélodie ou twinkle
- Fonction
SingleDWwithNote(): joue une note (fréquence, LED, durée, staccato) - Fonction
USNationalAnthem(): séquence de 100+ appels àSingleDWwithNote()avec tempos, silences, variations de hauteur (montée de 3 demi-tons à la fin) - Fonction
Charge(): mélodie courte « Charge » - Fonction
Twinkle(): clignotement aléatoire RGB en attente
Détails musicaux
Tempo de base : 104 BPM → n = 577 ms (noire). Staccato : x=0,92, y=0,08. Fréquences précises (Hz) pour chaque note (Si♭3 à Fa5). À la fin, toutes les notes sont multipliées par 1,06³ (montée de 3 demi-tons).
Alimentation
Batterie 9 V dans boîtier avec interrupteur externe. Le Nano accepte 7–12 V sur broche VIN.
Code complet
/* Star Spangled Banner with LEDs – Ryan Aebi – Juin 2018 */
const int ChargeButton = 3; // D3 (interrupt)
const int StartButton = 5; // D5
const int BuzzerPin = 9; // D9
const int RedLED = 6; // D6
const int WhiteLED = 7; // D7
const int BlueLED = 8; // D8
int n = 1000;
int DurationOn = n, DurationRest = n;
float x = 0.66, y = 0.34;
int Twinkle_Rate = 250;
int StartButtonState, ChargeButtonState;
// Fréquences (Hz)
int Note1=233, Note2=294, Note3=330, Note4=349, Note5=392;
int Note6=440, Note7=466, Note8=523, Note9=587, Note10=622, Note11=698;
void Charge() { /* ... */ }
void SingleDWwithNote(int HZ, int TurnOn, int Duration, int Staccato) { /* ... */ }
void USNationalAnthem() { /* ~100 lignes – voir source */ }
void Twinkle(int Twinkle_Time) { /* ... */ }
void setup() {
pinMode(ChargeButton, INPUT_PULLUP);
pinMode(StartButton, INPUT_PULLUP);
pinMode(RedLED, OUTPUT);
pinMode(WhiteLED, OUTPUT);
pinMode(BlueLED, OUTPUT);
pinMode(BuzzerPin, OUTPUT);
digitalWrite(RedLED, LOW);
digitalWrite(WhiteLED, LOW);
digitalWrite(BlueLED, LOW);
}
void loop() {
StartButtonState = digitalRead(StartButton);
ChargeButtonState = digitalRead(ChargeButton);
if (StartButtonState == LOW) USNationalAnthem();
else if (ChargeButtonState == LOW) Charge();
else Twinkle(Twinkle_Rate);
}
Le code complet (~300 lignes) est disponible dans la section « Code » du projet original.
Schémas
- Câblage sur breadboard (test)
- Câblage final soudé
- Schéma d'alimentation 9 V
- Tableau des coûts et fournisseurs
Processus de fabrication
- Circuit avec interrupteur : guide pratique des circuits électriques de base
- L'évolution et l'artisanat des illuminations de fêtes : des traditions anciennes à l'ingénierie moderne
- Adoucir les mouchoirs : comment la lotion améliore confort et performance
- Acceed IGS-9822DGP : switch industriel 12 ports Gigabit avec 4 ports SFP – solution réseau haute performance
- Surveillance précise de la température dans un placard serveur avec Raspberry Pi
- Panneau commutateurs et LED pour Microsoft Flight Simulator 2020 basé sur Arduino
- Maîtriser le switch-case en C++ : Syntaxe, utilisation et exemples pratiques
- Comprendre Switch-Case en C : Syntaxe, exemples et bonnes pratiques
- Instruction Switch-Case Java Expliquée : Syntaxe, Exemples et Bonnes Pratiques