73
edits
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) |
||
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. | ||
/* | |||
Melody | |||
Plays a melody | |||
circuit: | |||
* 8-ohm speaker on digital pin 8 | |||
created 21 Jan 2010 | |||
modified 30 Aug 2011 | |||
by Tom Igoe | |||
This example code is in the public domain. | |||
http://arduino.cc/en/Tutorial/Tone | |||
*/ | |||
#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. | |||
} |
edits