1
+ /*
2
+ Melody
3
+
4
+ Plays a melody
5
+
6
+ circuit:
7
+ * 8-ohm speaker on digital pin 8
8
+
9
+ created 21 Jan 2010
10
+ modified 30 Aug 2011
11
+ by Tom Igoe
12
+
13
+ This example code is in the public domain.
14
+
15
+ http://www.arduino.cc/en/Tutorial/Tone
16
+
17
+ */
18
+ /* ************************************************
19
+ * Public Constants
20
+ *************************************************/
21
+
22
+ #define NOTE_B0 31
23
+ #define NOTE_C1 33
24
+ #define NOTE_CS1 35
25
+ #define NOTE_D1 37
26
+ #define NOTE_DS1 39
27
+ #define NOTE_E1 41
28
+ #define NOTE_F1 44
29
+ #define NOTE_FS1 46
30
+ #define NOTE_G1 49
31
+ #define NOTE_GS1 52
32
+ #define NOTE_A1 55
33
+ #define NOTE_AS1 58
34
+ #define NOTE_B1 62
35
+ #define NOTE_C2 65
36
+ #define NOTE_CS2 69
37
+ #define NOTE_D2 73
38
+ #define NOTE_DS2 78
39
+ #define NOTE_E2 82
40
+ #define NOTE_F2 87
41
+ #define NOTE_FS2 93
42
+ #define NOTE_G2 98
43
+ #define NOTE_GS2 104
44
+ #define NOTE_A2 110
45
+ #define NOTE_AS2 117
46
+ #define NOTE_B2 123
47
+ #define NOTE_C3 131
48
+ #define NOTE_CS3 139
49
+ #define NOTE_D3 147
50
+ #define NOTE_DS3 156
51
+ #define NOTE_E3 165
52
+ #define NOTE_F3 175
53
+ #define NOTE_FS3 185
54
+ #define NOTE_G3 196
55
+ #define NOTE_GS3 208
56
+ #define NOTE_A3 220
57
+ #define NOTE_AS3 233
58
+ #define NOTE_B3 247
59
+ #define NOTE_C4 262
60
+ #define NOTE_CS4 277
61
+ #define NOTE_D4 294
62
+ #define NOTE_DS4 311
63
+ #define NOTE_E4 330
64
+ #define NOTE_F4 349
65
+ #define NOTE_FS4 370
66
+ #define NOTE_G4 392
67
+ #define NOTE_GS4 415
68
+ #define NOTE_A4 440
69
+ #define NOTE_AS4 466
70
+ #define NOTE_B4 494
71
+ #define NOTE_C5 523
72
+ #define NOTE_CS5 554
73
+ #define NOTE_D5 587
74
+ #define NOTE_DS5 622
75
+ #define NOTE_E5 659
76
+ #define NOTE_F5 698
77
+ #define NOTE_FS5 740
78
+ #define NOTE_G5 784
79
+ #define NOTE_GS5 831
80
+ #define NOTE_A5 880
81
+ #define NOTE_AS5 932
82
+ #define NOTE_B5 988
83
+ #define NOTE_C6 1047
84
+ #define NOTE_CS6 1109
85
+ #define NOTE_D6 1175
86
+ #define NOTE_DS6 1245
87
+ #define NOTE_E6 1319
88
+ #define NOTE_F6 1397
89
+ #define NOTE_FS6 1480
90
+ #define NOTE_G6 1568
91
+ #define NOTE_GS6 1661
92
+ #define NOTE_A6 1760
93
+ #define NOTE_AS6 1865
94
+ #define NOTE_B6 1976
95
+ #define NOTE_C7 2093
96
+ #define NOTE_CS7 2217
97
+ #define NOTE_D7 2349
98
+ #define NOTE_DS7 2489
99
+ #define NOTE_E7 2637
100
+ #define NOTE_F7 2794
101
+ #define NOTE_FS7 2960
102
+ #define NOTE_G7 3136
103
+ #define NOTE_GS7 3322
104
+ #define NOTE_A7 3520
105
+ #define NOTE_AS7 3729
106
+ #define NOTE_B7 3951
107
+ #define NOTE_C8 4186
108
+ #define NOTE_CS8 4435
109
+ #define NOTE_D8 4699
110
+ #define NOTE_DS8 4978
111
+
112
+
113
+
114
+
115
+ // notes in the melody:
116
+ int melody[] = {
117
+ NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0 , NOTE_B3, NOTE_C4
118
+ };
119
+
120
+ // note durations: 4 = quarter note, 8 = eighth note, etc.:
121
+ int noteDurations[] = {
122
+ 4 , 8 , 8 , 4 , 4 , 4 , 4 , 4
123
+ };
124
+
125
+ void setup () {
126
+ }
127
+
128
+ void loop () {
129
+ // no need to repeat the melody.
130
+ // iterate over the notes of the melody:
131
+ for (int thisNote = 0 ; thisNote < 8 ; thisNote++) {
132
+
133
+ // to calculate the note duration, take one second
134
+ // divided by the note type.
135
+ // e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
136
+ int noteDuration = 1000 / noteDurations[thisNote];
137
+ tone (3 , melody[thisNote], noteDuration);
138
+
139
+ // to distinguish the notes, set a minimum time between them.
140
+ // the note's duration + 30% seems to work well:
141
+ int pauseBetweenNotes = noteDuration * 1.30 ;
142
+ delay (pauseBetweenNotes);
143
+ // stop the tone playing:
144
+ noTone (3 );
145
+ }
146
+ // for (int thisNote = 0; thisNote < 8; thisNote++) {
147
+ //
148
+ // // to calculate the note duration, take one second
149
+ // // divided by the note type.
150
+ // //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
151
+ // int noteDuration = 1000 / noteDurations[thisNote];
152
+ // tone(9, melody[thisNote], noteDuration);
153
+ //
154
+ // // to distinguish the notes, set a minimum time between them.
155
+ // // the note's duration + 30% seems to work well:
156
+ // int pauseBetweenNotes = noteDuration * 1.30;
157
+ // delay(pauseBetweenNotes);
158
+ // // stop the tone playing:
159
+ // noTone(9);
160
+ // }
161
+ }
0 commit comments