
Je vous propose aujourd'hui quelques mélodies de Noël qui pourraient s'avérer utile à l'intérieur d'un projet Arduino (carte de souhait musicale ou autre).
Les 5 mélodies sont:
- Vive le vent (Jingle Bells)
- We Wish You a Merry Christmas
- Le petit Renne au nez rouge
- Petit papa Noël
- Au royaume du bonhomme hiver
Le circuit
Il s'agit de brancher un haut-parleur ou un piézo à la broche 8 de l'Arduino.
À cause de la très faible impédance d'un haut-parleur, il est fortement déconseillé de le brancher directement à l'Arduino: utilisez plutôt un circuit comportant un transistor, tel qu'illustré ci-dessous (plus d'informations ici).
Cette précaution n'est pas utile si vous utilisez un piézo, puisque son impédance est très élevée.
Le sketch
Le sketch utilise la fonction tone() pour produire des notes. Chaque mélodie a été définie à l'intérieur de sa propre fonction, pour faciliter le copier/coller de la mélodie désirée dans votre propre sketch.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/********************************************************** | |
5 mélodies de Noël jouées par l'Arduino | |
https://electroniqueamateur.blogspot.com/2018/12/arduino-chante-noel.html | |
************************************************************/ | |
#define sortie 8 // sortie du son à la broche 8 de l'Arduino | |
// fréquence associée à chaque note | |
// do, do#, ré, ré#, mi, fa, fa#, sol, sol#, la, la#, si | |
const float note[12] = {65.41, 69.30, 73.42, 77.78, 82.41, 87.31, 92.50, 98.00, 103.83, 110.00, 116.54, 123.47 | |
}; | |
// chaque note de la mélodie comporte 3 paramètres: | |
// note (de 0 à 11: 0 pour do, 1 pour do#, etc) | |
// octave (1 à 3) | |
// durée (1 pour croche, 2 pour noire, 4 pour ronde) | |
void jingleBells(void) { | |
// Vive le vent | |
const int nombreDeNotes = 49; | |
const int tempo = 150; // plus c'est petit, plus c'est rapide | |
const int melodie[][3] = { {4, 2, 2}, {4, 2, 2}, {4, 2, 4}, {4, 2, 2}, {4, 2, 2}, {4, 2, 4}, | |
{4, 2, 2}, {7, 2, 2}, {0, 2, 3}, {2, 2, 1}, {4, 2, 8}, | |
{5, 2, 2}, {5, 2, 2}, {5, 2, 3}, {5, 2, 1}, {5, 2, 2}, {4, 2, 2}, {4, 2, 3}, | |
{4, 2, 1}, {4, 2, 2}, {2, 2, 2}, {2, 2, 2}, {4, 2, 2}, {2, 2, 4}, {7, 2, 4}, | |
{4, 2, 2}, {4, 2, 2}, {4, 2, 4}, {4, 2, 2}, {4, 2, 2}, {4, 2, 4}, | |
{4, 2, 2}, {7, 2, 2}, {0, 2, 3}, {2, 2, 1}, {4, 2, 8}, | |
{5, 2, 2}, {5, 2, 2}, {5, 2, 3}, {5, 2, 1}, {5, 2, 2}, {4, 2, 2}, {4, 2, 3}, | |
{4, 2, 1}, {7, 2, 2}, {7, 2, 2}, {5, 2, 2}, {2, 2, 2}, {0, 2, 8} | |
}; | |
int frequence; | |
for ( int i = 0; i < nombreDeNotes ; i++ ) { | |
frequence = round(note[melodie[i][0]] * 2 * (melodie[i][1] - 1)); | |
tone(sortie, frequence); | |
delay(tempo * melodie[i][2] - 50); | |
noTone(sortie); | |
delay(50); | |
} | |
} | |
void weWishYou (void) { | |
// We wish you a merry Christmas | |
const int nombreDeNotes = 29; | |
const int tempo = 150 ; // plus c'est petit, plus c'est rapide | |
const int melodie[][3] = { {7, 2, 2}, {0, 3, 2}, {0, 3, 1}, {2, 3, 1}, {0, 3, 1}, {11, 2, 1}, | |
{9, 2, 2}, {9, 2, 2}, {9, 2, 2}, {2, 3, 2}, {2, 3, 1}, {4, 3, 1}, {2, 3, 1}, {0, 3, 1}, | |
{11, 2, 2}, {7, 2, 2}, {7, 2, 2}, {4, 3, 2}, {4, 3, 1}, {5, 3, 1}, {4, 3, 1}, {2, 3, 1}, | |
{0, 3, 2}, {9, 2, 2}, {7, 2, 2}, {9, 2, 2}, {2, 3, 2}, {11, 2, 2}, {0, 3, 4} | |
}; | |
int frequence; | |
for ( int i = 0; i < nombreDeNotes ; i++ ) { | |
frequence = round(note[melodie[i][0]] * 2 * (melodie[i][1] - 1)); | |
tone(sortie, frequence); | |
delay(tempo * melodie[i][2] - 50); | |
noTone(sortie); | |
delay(50); | |
} | |
} | |
void petitRenne (void) { | |
// le petit renne au nez rouge | |
const int nombreDeNotes = 56; | |
const int tempo = 200 ; // plus c'est petit, plus c'est rapide | |
const int melodie[][3] = { {7, 2, 2}, {9, 2, 1}, {7, 2, 1}, {4, 2, 2}, {0, 3, 2}, {9, 2, 2}, {7, 2, 6}, | |
{7, 2, 1}, {9, 2, 1}, {7, 2, 1}, {9, 2, 1}, {7, 2, 2}, {0, 3, 2}, {11, 2, 6}, | |
{5, 2, 2}, {7, 2, 1}, {5, 2, 1}, {2, 2, 2}, {11, 2, 2}, {9, 2, 2}, {7, 2, 6}, | |
{7, 2, 1}, {9, 2, 1}, {7, 2, 1}, {9, 2, 1}, {7, 2, 2}, {9, 2, 2}, {4, 2, 6}, | |
{7, 2, 2}, {9, 2, 1}, {7, 2, 1}, {4, 2, 2}, {0, 3, 2}, {9, 2, 2}, {7, 2, 6}, | |
{7, 2, 1}, {9, 2, 1}, {7, 2, 1}, {9, 2, 1}, {7, 2, 2}, {0, 3, 2}, {11, 2, 6}, | |
{5, 2, 2}, {7, 2, 1}, {5, 2, 1}, {2, 2, 2}, {11, 2, 2}, {9, 2, 2}, {7, 2, 6}, | |
{7, 2, 1}, {9, 2, 1}, {7, 2, 1}, {9, 2, 1}, {7, 2, 2}, {2, 3, 2}, {0, 3, 6}, | |
}; | |
int frequence; | |
for ( int i = 0; i < nombreDeNotes ; i++ ) { | |
frequence = round(note[melodie[i][0]] * 2 * (melodie[i][1] - 1)); | |
tone(sortie, frequence); | |
delay(tempo * melodie[i][2] - 50); | |
noTone(sortie); | |
delay(50); | |
} | |
} | |
void petitPapa(void) { | |
// petit papa noël | |
const int nombreDeNotes = 58; | |
const int tempo = 250 ; // plus c'est petit, plus c'est rapide | |
const int melodie[][3] = { {7, 2, 2}, {0, 3, 2}, {0, 3, 2}, {0, 3, 2}, {2, 3, 2}, {0, 3, 6}, | |
{0, 3, 1}, {2, 3, 1}, {4, 3, 2}, {4, 3, 2}, {4, 3, 2}, {5, 3, 2}, {4, 3, 6}, | |
{2, 3, 2}, {0, 3, 3}, {0, 3, 1}, {0, 3, 1}, {0, 3, 1}, {11, 2, 1}, {9, 2, 1}, {7, 2, 6}, | |
{7, 2, 1}, {7, 2, 1}, {0, 3, 4}, {0, 3, 1}, {0, 3, 1}, {11, 2, 1}, {0, 3, 1}, {2, 3, 6}, | |
{7, 2, 2}, {0, 3, 2}, {0, 3, 2}, {0, 3, 2}, {2, 3, 2}, {0, 3, 6}, | |
{0, 3, 1}, {2, 3, 1}, {4, 3, 2}, {4, 3, 2}, {4, 3, 2}, {5, 3, 2}, {4, 3, 6}, | |
{2, 3, 2}, {0, 3, 3}, {0, 3, 1}, {0, 3, 1}, {0, 3, 1}, {11, 2, 1}, {9, 2, 1}, {7, 2, 6}, | |
{7, 2, 1}, {7, 2, 1}, {0, 3, 4}, {0, 3, 1}, {0, 3, 1}, {2, 3, 1}, {2, 3, 1}, {0, 3, 6}, | |
}; | |
int frequence; | |
for ( int i = 0; i < nombreDeNotes ; i++ ) { | |
frequence = round(note[melodie[i][0]] * 2 * (melodie[i][1] - 1)); | |
tone(sortie, frequence); | |
delay(tempo * melodie[i][2] - 50); | |
noTone(sortie); | |
delay(50); | |
} | |
} | |
void auRoyaume (void) { | |
//Au royaume du bonhomme hiver (Winter Wonderland) | |
const int nombreDeNotes = 33; | |
const int tempo = 150 ; // plus c'est petit, plus c'est rapide | |
const int melodie[][3] = { {7, 2, 2}, {7, 2, 1}, {7, 2, 9}, {7, 2, 2}, {7, 2, 1}, {4, 2, 2}, {7, 2, 6}, | |
{7, 2, 2}, {7, 2, 1}, {7, 2, 9}, {7, 2, 2}, {7, 2, 1}, {5, 2, 2}, {7, 2, 6}, | |
{7, 2, 1}, {11, 2, 2}, {11, 2, 1}, {11, 2, 2}, {9, 2, 6}, | |
{9, 2, 1}, {7, 2, 2}, {7, 2, 1}, {7, 2, 2}, {5, 2, 6}, | |
{4, 2, 2}, {4, 2, 1}, {4, 2, 2}, {4, 2, 1}, {2, 2, 2}, {2, 2, 1}, {2, 2, 1}, {2, 2, 1}, {0, 2, 9}, | |
}; | |
int frequence; | |
for ( int i = 0; i < nombreDeNotes ; i++ ) { | |
frequence = round(note[melodie[i][0]] * 2 * (melodie[i][1] - 1)); | |
tone(sortie, frequence); | |
delay(tempo * melodie[i][2] - 50); | |
noTone(sortie); | |
delay(50); | |
} | |
} | |
void setup() { | |
} | |
void loop() { | |
jingleBells(); | |
delay (2000); | |
weWishYou (); | |
delay (2000); | |
petitRenne(); | |
delay (2000); | |
petitPapa(); | |
delay (2000); | |
auRoyaume(); | |
delay (2000); | |
} |
Bonjour j'ai un problème !!!!!!! J'assai de téléverser mon code sur une carte Arduino NANO 33 loT et ça me met ce code erreur
RépondreSupprimer"Atmel SMART device 0x10010005 found
Device : ATSAMD21G18A
Chip ID : 10010005
Version : v2.0 [Arduino:XYZ] Apr 19 2019 14:38:48
Address : 8192
Pages : 3968
Page Size : 64 bytes
Total Size : 248KB
Planes : 1
Lock Regions : 16
Locked : none
Security : false
Boot Flash : true
BOD : true
BOR : true
Arduino : FAST_CHIP_ERASE
Arduino : FAST_MULTI_PAGE_WRITE
Arduino : CAN_CHECKSUM_MEMORY_BUFFER
Erase flash
done in 0.850 seconds
Write 17280 bytes to flash (270 pages)
[==============================] 100% (270/270 pages)
done in 0.142 seconds
Verify 17280 bytes of flash with checksum.
Verify successful
done in 0.016 seconds
CPU reset.
" Je me demandais si vous pouviez m'aider
Super bien en plus on approche de noel!
RépondreSupprimer