Last active
December 23, 2015 23:09
-
-
Save scudelletti/6708031 to your computer and use it in GitHub Desktop.
Imperial March
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Source => http://www.adafruit.com/forums/viewtopic.php?f=25&t=34567 | |
//code https://gist.github.com/1804108 20121125 @ 1339 | |
//led for visualization (use 13 for built-in led) | |
int ledPin = 13; | |
//speaker connected to one of the pwm ports | |
int speakerPin = 9; | |
//tone frequencies http://home.mit.bme.hu/~bako/tonecalc/tonecalc.htm | |
#define c 261 | |
#define d 294 | |
#define e 329 | |
#define f 349 | |
#define g 391 | |
#define gS 415 | |
#define a 440 | |
#define aS 455 | |
#define b 466 | |
#define cH 523 | |
#define cSH 554 | |
#define dH 587 | |
#define dSH 622 | |
#define eH 659 | |
#define fH 698 | |
#define fSH 740 | |
#define gH 784 | |
#define gSH 830 | |
#define aH 880 | |
void setup() | |
{ | |
// sets the ledPin to be an output | |
pinMode(ledPin, OUTPUT); | |
//sets the speakerPin to be an output | |
pinMode(speakerPin, OUTPUT); | |
} | |
// run over and over again | |
void loop() | |
{ | |
march(); | |
} | |
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds) | |
{ | |
//use led to visualize the notes being played | |
digitalWrite(ledPin, HIGH); | |
int x; | |
long delayAmount = (long)(1000000/frequencyInHertz); | |
long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2)); | |
for (x=0;x<loopTime;x++) | |
{ | |
digitalWrite(speakerPin,HIGH); | |
delayMicroseconds(delayAmount); | |
digitalWrite(speakerPin,LOW); | |
delayMicroseconds(delayAmount); | |
} | |
//set led back to low | |
digitalWrite(ledPin, LOW); | |
//delay to separate notes | |
delay(20); | |
} | |
void march() | |
{ | |
//Sheet music http://www.musicnotes.com/sheetmusic/mtd.asp?ppn=MN0016254 | |
//time in ms | |
//500 ms for a quart note | |
beep(speakerPin, a, 500); | |
beep(speakerPin, a, 500); | |
beep(speakerPin, a, 500); | |
beep(speakerPin, f, 350); | |
beep(speakerPin, cH, 150); | |
beep(speakerPin, a, 500); | |
beep(speakerPin, f, 350); | |
beep(speakerPin, cH, 150); | |
beep(speakerPin, a, 1000); | |
beep(speakerPin, eH, 500); | |
beep(speakerPin, eH, 500); | |
beep(speakerPin, eH, 500); | |
beep(speakerPin, fH, 350); | |
beep(speakerPin, cH, 150); | |
beep(speakerPin, gS, 500); | |
beep(speakerPin, f, 350); | |
beep(speakerPin, cH, 150); | |
beep(speakerPin, a, 1000); | |
beep(speakerPin, aH, 500); | |
beep(speakerPin, a, 350); | |
beep(speakerPin, a, 150); | |
beep(speakerPin, aH, 500); | |
beep(speakerPin, gSH, 250); | |
beep(speakerPin, gH, 250); | |
beep(speakerPin, fSH, 125); | |
beep(speakerPin, fH, 125); | |
beep(speakerPin, fSH, 250); | |
delay(250); | |
beep(speakerPin, aS, 250); | |
beep(speakerPin, dSH, 500); | |
beep(speakerPin, dH, 250); | |
beep(speakerPin, cSH, 250); | |
beep(speakerPin, cH, 125); | |
beep(speakerPin, b, 125); | |
beep(speakerPin, cH, 250); | |
delay(250); | |
beep(speakerPin, f, 125); | |
beep(speakerPin, gS, 500); | |
beep(speakerPin, f, 375); | |
beep(speakerPin, a, 125); | |
beep(speakerPin, cH, 500); | |
beep(speakerPin, a, 375); | |
beep(speakerPin, cH, 125); | |
beep(speakerPin, eH, 1000); | |
beep(speakerPin, aH, 500); | |
beep(speakerPin, a, 350); | |
beep(speakerPin, a, 150); | |
beep(speakerPin, aH, 500); | |
beep(speakerPin, gSH, 250); | |
beep(speakerPin, gH, 250); | |
beep(speakerPin, fSH, 125); | |
beep(speakerPin, fH, 125); | |
beep(speakerPin, fSH, 250); | |
delay(250); | |
beep(speakerPin, aS, 250); | |
beep(speakerPin, dSH, 500); | |
beep(speakerPin, dH, 250); | |
beep(speakerPin, cSH, 250); | |
beep(speakerPin, cH, 125); | |
beep(speakerPin, b, 125); | |
beep(speakerPin, cH, 250); | |
delay(250); | |
beep(speakerPin, f, 250); | |
beep(speakerPin, gS, 500); | |
beep(speakerPin, f, 375); | |
beep(speakerPin, cH, 125); | |
beep(speakerPin, a, 500); | |
beep(speakerPin, f, 375); | |
beep(speakerPin, c, 125); | |
beep(speakerPin, a, 1000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment