Difference between revisions of "Common Project - Xmas 2013 Music"
Jump to navigation
Jump to search
Paulmaidment (talk | contribs) (Created page with "= Christmas tunes on an Arduino = The circuit is simple, an 8 ohm speaker is connected to Arduino pin 8, with the cathode connected to the ground.") |
Paulmaidment (talk | contribs) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
= Christmas tunes on an Arduino = | = Christmas tunes on an Arduino = | ||
The circuit is simple, an 8 ohm speaker is connected to Arduino pin 8, with the cathode connected to the ground. | The circuit is simple, an 8 ohm speaker is connected to Arduino pin 8, with the cathode connected to the ground. | ||
+ | |||
+ | /* Modified Tone Sketch from Tom Igoe - Taken from the Arduino SDK examples */ | ||
+ | /* Modded by NJA Hackers to play Jingle Bells*/ | ||
+ | #include "pitches.h" | ||
+ | |||
+ | // notes in the melody: | ||
+ | int melody[] = { | ||
+ | NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_G5,NOTE_C5,NOTE_D5,NOTE_E5, | ||
+ | NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_D5,NOTE_D5, | ||
+ | NOTE_E5,NOTE_D5,NOTE_G5, | ||
+ | NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_G5,NOTE_C5,NOTE_D5,NOTE_E5, | ||
+ | NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_G5,NOTE_G5,NOTE_F5, | ||
+ | NOTE_D5,NOTE_C5, | ||
+ | }; | ||
+ | |||
+ | // note durations: 4 = quarter note, 8 = eighth note, etc.: | ||
+ | int noteDurations[] = { | ||
+ | 2,2,4,2,2,4,2,2,2,2,8, | ||
+ | 2,2,2,2,2,2,2,2,2,2,2, | ||
+ | 2,4,4, | ||
+ | 2,2,4,2,2,4,2,2,2,2,8, | ||
+ | 2,2,2,2,2,2,2,2,2,2,2, | ||
+ | 2,8, | ||
+ | }; | ||
+ | |||
+ | void setup() { | ||
+ | int numberOfNotes = sizeof(melody)/sizeof(int); | ||
+ | // iterate over the notes of the melody: | ||
+ | for (int thisNote = 0; thisNote < numberOfNotes; thisNote++) { | ||
+ | |||
+ | // to calculate the note duration, take one second | ||
+ | // divided by the note type. | ||
+ | //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. | ||
+ | int noteDuration = 200*noteDurations[thisNote]; | ||
+ | tone(8, melody[thisNote],noteDuration); | ||
+ | |||
+ | // to distinguish the notes, set a minimum time between them. | ||
+ | // the note's duration + 30% seems to work well: | ||
+ | int pauseBetweenNotes = noteDuration * 0.8; | ||
+ | delay(pauseBetweenNotes); | ||
+ | // stop the tone playing: | ||
+ | noTone(8); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // no need to repeat the melody. | ||
+ | } |
Latest revision as of 21:57, 25 November 2013
Christmas tunes on an Arduino
The circuit is simple, an 8 ohm speaker is connected to Arduino pin 8, with the cathode connected to the ground.
/* Modified Tone Sketch from Tom Igoe - Taken from the Arduino SDK examples */ /* Modded by NJA Hackers to play Jingle Bells*/ #include "pitches.h" // notes in the melody: int melody[] = { NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_G5,NOTE_C5,NOTE_D5,NOTE_E5, NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_D5,NOTE_D5, NOTE_E5,NOTE_D5,NOTE_G5, NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_G5,NOTE_C5,NOTE_D5,NOTE_E5, NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_F5,NOTE_E5,NOTE_E5,NOTE_E5,NOTE_G5,NOTE_G5,NOTE_F5, NOTE_D5,NOTE_C5, }; // note durations: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = { 2,2,4,2,2,4,2,2,2,2,8, 2,2,2,2,2,2,2,2,2,2,2, 2,4,4, 2,2,4,2,2,4,2,2,2,2,8, 2,2,2,2,2,2,2,2,2,2,2, 2,8, }; void setup() { int numberOfNotes = sizeof(melody)/sizeof(int); // iterate over the notes of the melody: for (int thisNote = 0; thisNote < numberOfNotes; thisNote++) { // to calculate the note duration, take one second // divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 200*noteDurations[thisNote]; tone(8, melody[thisNote],noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 0.8; delay(pauseBetweenNotes); // stop the tone playing: noTone(8); } } void loop() { // no need to repeat the melody. }