Common Project - Xmas 2013 Music
Revision as of 21:57, 25 November 2013 by Paulmaidment (talk | contribs) (→Christmas tunes on an Arduino)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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. }