
Video
Schema circuito

Codice sorgente
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Inno nazionale turco con cicalino
4// ─────────────────────────────────────────
5// Premi il pulsante e il buzzer suona i primi due versi dell'Inno
6// nazionale turco nota per nota. Un potenziometro in serie al buzzer
7// regola il volume. Testo: Mehmet Akif Ersoy, musica: Osman Zeki Ungor.
8//
9// Pin:
10// D7 -> Pulsante play, altro piedino a 5V
11// D7 -> Resistenza da 10k a GND (pull-down)
12// D8 -> Potenziometro (volume) al + del buzzer
13// Buzzer - a GND
14
15int buttonPin = 7; // Pulsante play
16int buzzer = 8; // Pin di uscita del buzzer
17
18// Frequenze delle note (Hz). Una "d" finale indica il diesis (ad = La#), 2 e 3 sono ottave più alte
19int a = 440, ad = 466, b = 494, c = 523, cd = 554, d = 587, dd = 622, e = 659, f = 698;
20int fd = 740, g = 784, gd = 830, a2 = 880, ad2 = 932, b2 = 988, c2 = 1046, cd2 = 1108;
21int d2 = 1174, dd2 = 1244, e2 = 1318, f2 = 1396, fd2 = 1480, g2 = 1568, gd2 = 1660;
22int a3 = 1760;
23
24void setup() {
25 pinMode(buttonPin, INPUT); // Ingresso del pulsante (pull-down)
26 pinMode(buzzer, OUTPUT);
27}
28
29void loop() {
30 if (digitalRead(buttonPin)) { // Pulsante premuto?
31 playSong(); // Riprodurre l'inno dall'inizio alla fine
32 }
33}
34
35// Ogni tone() avvia una nota e il delay() successivo è la durata della nota (ms). noTone() aggiunge
36// una breve pausa.
37void playSong() {
38 // Strofa 1
39 // Testo della canzone
40 tone(buzzer, c);
41 delay(800);
42 tone(buzzer, f);
43 delay(800);
44 tone(buzzer, g);
45 delay(800);
46 tone(buzzer, gd);
47 delay(800);
48 tone(buzzer, e);
49 delay(400);
50 tone(buzzer, g);
51 delay(200);
52 tone(buzzer, f);
53 delay(1600);
54 noTone(buzzer);
55 delay(300);
56
57 // Testo della canzone
58 tone(buzzer, f);
59 delay(800);
60 tone(buzzer, ad2);
61 delay(800);
62 tone(buzzer, c2);
63 delay(800);
64 tone(buzzer, cd2);
65 delay(800);
66 tone(buzzer, a2);
67 delay(400);
68 tone(buzzer, c2);
69 delay(200);
70 tone(buzzer, ad2);
71 delay(1600);
72
73 // Testo della canzone
74 tone(buzzer, c2);
75 delay(200);
76 tone(buzzer, ad2);
77 delay(200);
78 tone(buzzer, c2);
79 delay(200);
80 tone(buzzer, g);
81 delay(400);
82 noTone(buzzer);
83 delay(100);
84 tone(buzzer, g);
85 delay(400);
86 tone(buzzer, ad);
87 delay(200);
88 tone(buzzer, gd);
89 delay(400);
90 tone(buzzer, e);
91 delay(200);
92 tone(buzzer, f);
93 delay(400);
94 tone(buzzer, g);
95 delay(200);
96 tone(buzzer, gd);
97 delay(400);
98 tone(buzzer, ad);
99 delay(200);
100 tone(buzzer, c2);
101 delay(400);
102 tone(buzzer, cd2);
103 delay(200);
104 tone(buzzer, dd2);
105 delay(400);
106 tone(buzzer, f2);
107 delay(200);
108 tone(buzzer, dd2);
109 delay(400);
110
111 // Testo della canzone
112 tone(buzzer, dd);
113 delay(200);
114 tone(buzzer, d);
115 delay(200);
116 tone(buzzer, dd);
117 delay(200);
118 tone(buzzer, c2);
119 delay(800);
120 tone(buzzer, ad);
121 delay(800);
122 tone(buzzer, gd);
123 delay(1600);
124
125 // Testo della canzone
126 tone(buzzer, c);
127 delay(200);
128 tone(buzzer, b);
129 delay(200);
130 tone(buzzer, c);
131 delay(200);
132 tone(buzzer, g);
133 delay(800);
134 tone(buzzer, c);
135 delay(800);
136 tone(buzzer, c2);
137 delay(800);
138 tone(buzzer, ad);
139 delay(200);
140 tone(buzzer, gd);
141 delay(200);
142 tone(buzzer, g);
143 delay(400);
144 tone(buzzer, gd);
145 delay(200);
146 tone(buzzer, f);
147 delay(800);
148
149 // "Dir, Lyrics
150 tone(buzzer, f2);
151 delay(800);
152 tone(buzzer, dd2);
153 delay(200);
154 tone(buzzer, cd2);
155 delay(400);
156 tone(buzzer, c2);
157 delay(200);
158 tone(buzzer, ad);
159 delay(400);
160 tone(buzzer, gd);
161 delay(200);
162 tone(buzzer, g);
163 delay(400);
164 tone(buzzer, f);
165 delay(200);
166 tone(buzzer, c2);
167 delay(400);
168 tone(buzzer, c);
169 delay(800);
170 tone(buzzer, f);
171 delay(1600);
172
173 // Strofa 2
174 // Testo della canzone
175 tone(buzzer, c);
176 delay(800);
177 tone(buzzer, f);
178 delay(800);
179 tone(buzzer, g);
180 delay(800);
181 tone(buzzer, gd);
182 delay(800);
183 tone(buzzer, e);
184 delay(400);
185 tone(buzzer, g);
186 delay(200);
187 tone(buzzer, f);
188 delay(1600);
189 noTone(buzzer);
190 delay(300);
191
192 // Testo della canzone
193 tone(buzzer, f);
194 delay(800);
195 tone(buzzer, ad2);
196 delay(800);
197 tone(buzzer, c2);
198 delay(800);
199 tone(buzzer, cd2);
200 delay(400);
201 tone(buzzer, ad2);
202 delay(400);
203 tone(buzzer, a2);
204 delay(400);
205 tone(buzzer, c2);
206 delay(400);
207 tone(buzzer, ad2);
208 delay(800);
209
210 // Testo della canzone
211 tone(buzzer, c2);
212 delay(200);
213 tone(buzzer, ad2);
214 delay(200);
215 tone(buzzer, c2);
216 delay(200);
217 tone(buzzer, g);
218 delay(400);
219 noTone(buzzer);
220 delay(100);
221 tone(buzzer, g);
222 delay(400);
223 tone(buzzer, ad);
224 delay(200);
225 tone(buzzer, gd);
226 delay(400);
227 tone(buzzer, e);
228 delay(200);
229 tone(buzzer, f);
230 delay(400);
231 tone(buzzer, g);
232 delay(200);
233 tone(buzzer, gd);
234 delay(400);
235 tone(buzzer, ad);
236 delay(200);
237 tone(buzzer, c2);
238 delay(400);
239 tone(buzzer, cd2);
240 delay(200);
241 tone(buzzer, dd2);
242 delay(400);
243 tone(buzzer, f2);
244 delay(200);
245 tone(buzzer, dd2);
246 delay(400);
247
248 // Testo della canzone
249 tone(buzzer, dd);
250 delay(200);
251 tone(buzzer, d);
252 delay(200);
253 tone(buzzer, dd);
254 delay(200);
255 tone(buzzer, c2);
256 delay(800);
257 tone(buzzer, ad);
258 delay(800);
259 tone(buzzer, gd);
260 delay(1600);
261
262 // Testo della canzone
263 tone(buzzer, c);
264 delay(200);
265 tone(buzzer, b);
266 delay(200);
267 tone(buzzer, c);
268 delay(200);
269 tone(buzzer, g);
270 delay(800);
271 tone(buzzer, c);
272 delay(800);
273 tone(buzzer, c2);
274 delay(800);
275 tone(buzzer, ad);
276 delay(200);
277 tone(buzzer, gd);
278 delay(200);
279 tone(buzzer, g);
280 delay(400);
281 tone(buzzer, gd);
282 delay(200);
283 tone(buzzer, f);
284 delay(800);
285
286 // Testo della canzone
287 tone(buzzer, f2);
288 delay(800);
289 tone(buzzer, dd2);
290 delay(200);
291 tone(buzzer, cd2);
292 delay(400);
293 tone(buzzer, c2);
294 delay(200);
295 tone(buzzer, ad);
296 delay(400);
297 tone(buzzer, gd);
298 delay(200);
299 tone(buzzer, g);
300 delay(400);
301 tone(buzzer, f);
302 delay(200);
303 tone(buzzer, c2);
304 delay(400);
305 tone(buzzer, c);
306 delay(800);
307 tone(buzzer, f);
308 delay(1600);
309 noTone(buzzer);
310}
311FAQ
Come si convertono le note in frequenza?▾
Ogni nota corrisponde a una determinata frequenza; ad esempio, nella quarta ottava il Do è di circa 262 Hz, mentre il La è di 440 Hz. Nel codice, le note sono memorizzate in una serie in base alla frequenza, mentre le durate sono memorizzate in una serie separata e vengono riprodotte in sequenza tramite la funzione tone().
Come faccio a modificare la velocità della melodia?▾
Le durate delle note vengono moltiplicate per un fattore di tempo. Se si riduce il fattore, la melodia accelera; se lo si aumenta, rallenta. Nel progetto è possibile utilizzare un potenziometro per questo tipo di regolazioni.
Le note si attaccano tra loro, come faccio a separarle?▾
Dopo ogni nota, lascia un breve silenzio pari a circa il 10–30% della sua durata (noTone e delay). Questo permette di distinguere le singole note.
Posso aggiungere una mia canzone?▾
Sì. Basta trovare le note della canzone nella tabella nota-frequenza e inserirle in una matrice, mentre le durate vanno inserite in una seconda matrice. Su Internet si trovano molte matrici di note già pronte per Arduino relative a numerose canzoni.
