/* Generating a melody with Arduino Tone() and the pitches library */ #include "pitches.h" const int speaker = 3; //speaker to arduino pin 3 // notes in the melody: int melody[] = { NOTE_DS4, NOTE_DS4, NOTE_DS4, NOTE_DS4, NOTE_B3, NOTE_CS4, NOTE_DS4, NOTE_CS4, NOTE_DS4 }; // note durations: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = { 8, 8, 8, 2, 2, 2, 3, 8, 2 }; void setup(){ pinMode(speaker, OUTPUT); } void loop(){ noTone(speaker); // Stop sound... delay(1000); // ...for 1sec for (int thisNote = 0; thisNote < 9; 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 = 1000 / noteDurations[thisNote]; tone(speaker, 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 * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(speaker); } }