
Vidéo
Schéma du circuit

Code source
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Hymne national turc avec un buzzer
4// ─────────────────────────────────────────
5// Appuie sur le bouton et le buzzer joue les deux premiers couplets de
6// l'hymne national turc note par note. Un potentiomètre en série avec le
7// buzzer règle le volume. Paroles : Mehmet Akif Ersoy, musique : Osman
8// Zeki Ungor.
9//
10// Broches :
11// D7 -> Bouton de lecture, autre patte sur 5V
12// D7 -> Résistance de 10k vers GND (pull-down)
13// D8 -> Potentiomètre (volume) vers Buzzer +
14// Buzzer - sur GND
15
16int buttonPin = 7; // Bouton de lecture
17int buzzer = 8; // Broche de sortie du buzzer
18
19// Fréquences des notes (Hz). Un "d" final signifie dièse (ad = A#), 2 et 3 sont des octaves plus
20// hautes
21int a = 440, ad = 466, b = 494, c = 523, cd = 554, d = 587, dd = 622, e = 659, f = 698;
22int fd = 740, g = 784, gd = 830, a2 = 880, ad2 = 932, b2 = 988, c2 = 1046, cd2 = 1108;
23int d2 = 1174, dd2 = 1244, e2 = 1318, f2 = 1396, fd2 = 1480, g2 = 1568, gd2 = 1660;
24int a3 = 1760;
25
26void setup() {
27 pinMode(buttonPin, INPUT); // Entrée du bouton (pull-down)
28 pinMode(buzzer, OUTPUT);
29}
30
31void loop() {
32 if (digitalRead(buttonPin)) { // Bouton appuyé ?
33 playSong(); // Jouer l'hymne du début à la fin
34 }
35}
36
37// Chaque tone() lance une note et le delay() qui suit est la durée de la note (ms). noTone() ajoute
38// un petit silence.
39void playSong() {
40 // Couplet 1
41 // Paroles
42 tone(buzzer, c);
43 delay(800);
44 tone(buzzer, f);
45 delay(800);
46 tone(buzzer, g);
47 delay(800);
48 tone(buzzer, gd);
49 delay(800);
50 tone(buzzer, e);
51 delay(400);
52 tone(buzzer, g);
53 delay(200);
54 tone(buzzer, f);
55 delay(1600);
56 noTone(buzzer);
57 delay(300);
58
59 // Paroles
60 tone(buzzer, f);
61 delay(800);
62 tone(buzzer, ad2);
63 delay(800);
64 tone(buzzer, c2);
65 delay(800);
66 tone(buzzer, cd2);
67 delay(800);
68 tone(buzzer, a2);
69 delay(400);
70 tone(buzzer, c2);
71 delay(200);
72 tone(buzzer, ad2);
73 delay(1600);
74
75 // Paroles
76 tone(buzzer, c2);
77 delay(200);
78 tone(buzzer, ad2);
79 delay(200);
80 tone(buzzer, c2);
81 delay(200);
82 tone(buzzer, g);
83 delay(400);
84 noTone(buzzer);
85 delay(100);
86 tone(buzzer, g);
87 delay(400);
88 tone(buzzer, ad);
89 delay(200);
90 tone(buzzer, gd);
91 delay(400);
92 tone(buzzer, e);
93 delay(200);
94 tone(buzzer, f);
95 delay(400);
96 tone(buzzer, g);
97 delay(200);
98 tone(buzzer, gd);
99 delay(400);
100 tone(buzzer, ad);
101 delay(200);
102 tone(buzzer, c2);
103 delay(400);
104 tone(buzzer, cd2);
105 delay(200);
106 tone(buzzer, dd2);
107 delay(400);
108 tone(buzzer, f2);
109 delay(200);
110 tone(buzzer, dd2);
111 delay(400);
112
113 // Paroles
114 tone(buzzer, dd);
115 delay(200);
116 tone(buzzer, d);
117 delay(200);
118 tone(buzzer, dd);
119 delay(200);
120 tone(buzzer, c2);
121 delay(800);
122 tone(buzzer, ad);
123 delay(800);
124 tone(buzzer, gd);
125 delay(1600);
126
127 // Paroles
128 tone(buzzer, c);
129 delay(200);
130 tone(buzzer, b);
131 delay(200);
132 tone(buzzer, c);
133 delay(200);
134 tone(buzzer, g);
135 delay(800);
136 tone(buzzer, c);
137 delay(800);
138 tone(buzzer, c2);
139 delay(800);
140 tone(buzzer, ad);
141 delay(200);
142 tone(buzzer, gd);
143 delay(200);
144 tone(buzzer, g);
145 delay(400);
146 tone(buzzer, gd);
147 delay(200);
148 tone(buzzer, f);
149 delay(800);
150
151 // "Dir, Lyrics
152 tone(buzzer, f2);
153 delay(800);
154 tone(buzzer, dd2);
155 delay(200);
156 tone(buzzer, cd2);
157 delay(400);
158 tone(buzzer, c2);
159 delay(200);
160 tone(buzzer, ad);
161 delay(400);
162 tone(buzzer, gd);
163 delay(200);
164 tone(buzzer, g);
165 delay(400);
166 tone(buzzer, f);
167 delay(200);
168 tone(buzzer, c2);
169 delay(400);
170 tone(buzzer, c);
171 delay(800);
172 tone(buzzer, f);
173 delay(1600);
174
175 // Couplet 2
176 // Paroles
177 tone(buzzer, c);
178 delay(800);
179 tone(buzzer, f);
180 delay(800);
181 tone(buzzer, g);
182 delay(800);
183 tone(buzzer, gd);
184 delay(800);
185 tone(buzzer, e);
186 delay(400);
187 tone(buzzer, g);
188 delay(200);
189 tone(buzzer, f);
190 delay(1600);
191 noTone(buzzer);
192 delay(300);
193
194 // Paroles
195 tone(buzzer, f);
196 delay(800);
197 tone(buzzer, ad2);
198 delay(800);
199 tone(buzzer, c2);
200 delay(800);
201 tone(buzzer, cd2);
202 delay(400);
203 tone(buzzer, ad2);
204 delay(400);
205 tone(buzzer, a2);
206 delay(400);
207 tone(buzzer, c2);
208 delay(400);
209 tone(buzzer, ad2);
210 delay(800);
211
212 // Paroles
213 tone(buzzer, c2);
214 delay(200);
215 tone(buzzer, ad2);
216 delay(200);
217 tone(buzzer, c2);
218 delay(200);
219 tone(buzzer, g);
220 delay(400);
221 noTone(buzzer);
222 delay(100);
223 tone(buzzer, g);
224 delay(400);
225 tone(buzzer, ad);
226 delay(200);
227 tone(buzzer, gd);
228 delay(400);
229 tone(buzzer, e);
230 delay(200);
231 tone(buzzer, f);
232 delay(400);
233 tone(buzzer, g);
234 delay(200);
235 tone(buzzer, gd);
236 delay(400);
237 tone(buzzer, ad);
238 delay(200);
239 tone(buzzer, c2);
240 delay(400);
241 tone(buzzer, cd2);
242 delay(200);
243 tone(buzzer, dd2);
244 delay(400);
245 tone(buzzer, f2);
246 delay(200);
247 tone(buzzer, dd2);
248 delay(400);
249
250 // Paroles
251 tone(buzzer, dd);
252 delay(200);
253 tone(buzzer, d);
254 delay(200);
255 tone(buzzer, dd);
256 delay(200);
257 tone(buzzer, c2);
258 delay(800);
259 tone(buzzer, ad);
260 delay(800);
261 tone(buzzer, gd);
262 delay(1600);
263
264 // Paroles
265 tone(buzzer, c);
266 delay(200);
267 tone(buzzer, b);
268 delay(200);
269 tone(buzzer, c);
270 delay(200);
271 tone(buzzer, g);
272 delay(800);
273 tone(buzzer, c);
274 delay(800);
275 tone(buzzer, c2);
276 delay(800);
277 tone(buzzer, ad);
278 delay(200);
279 tone(buzzer, gd);
280 delay(200);
281 tone(buzzer, g);
282 delay(400);
283 tone(buzzer, gd);
284 delay(200);
285 tone(buzzer, f);
286 delay(800);
287
288 // Paroles
289 tone(buzzer, f2);
290 delay(800);
291 tone(buzzer, dd2);
292 delay(200);
293 tone(buzzer, cd2);
294 delay(400);
295 tone(buzzer, c2);
296 delay(200);
297 tone(buzzer, ad);
298 delay(400);
299 tone(buzzer, gd);
300 delay(200);
301 tone(buzzer, g);
302 delay(400);
303 tone(buzzer, f);
304 delay(200);
305 tone(buzzer, c2);
306 delay(400);
307 tone(buzzer, c);
308 delay(800);
309 tone(buzzer, f);
310 delay(1600);
311 noTone(buzzer);
312}
313FAQ
Comment les notes sont-elles converties en fréquences ?▾
Chaque note correspond à une fréquence spécifique ; par exemple, dans la 4e octave, le do est d'environ 262 Hz et le la de 440 Hz. Dans le code, les notes sont stockées dans une liste en fonction de leur fréquence, tandis que les durées sont stockées dans une liste distincte, et elles sont jouées les unes après les autres à l'aide de la fonction tone().
Comment modifier la vitesse d'une mélodie ?▾
Les durées des notes sont multipliées par un coefficient de tempo. Si vous réduisez ce coefficient, la mélodie s'accélère ; si vous l'augmentez, elle ralentit. Dans ce projet, le potentiomètre peut être utilisé pour ce type de réglages.
Les notes se collent les unes aux autres, comment puis-je les séparer ?▾
Après chaque note, laisse un court silence correspondant à environ 10 à 30 % de sa durée (noTone et delay). Cela permet de distinguer clairement les notes les unes des autres.
Puis-je ajouter ma propre chanson ?▾
Oui. Il te suffit de trouver les notes de la chanson dans le tableau des notes et des fréquences, puis de les noter dans un tableau, et d'enregistrer leurs durées dans un deuxième tableau. On trouve sur Internet de nombreux tableaux de notes prêts à l'emploi pour Arduino, correspondant à de nombreuses chansons.
