Marcha imperial para arduino
int ledPin = 13; | |
//led for visualization (use 13 for built-in led) | |
int speakerPin = 11; | |
//speaker connected to one of the PWM ports | |
#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 | |
//frequencies for the tones we're going to use | |
//used http://home.mit.bme.hu/~bako/tonecalc/tonecalc.htm to get these | |
void setup() | |
{ | |
pinMode(ledPin, OUTPUT); | |
// sets the ledPin to be an output | |
pinMode(speakerPin, OUTPUT); | |
//sets the speakerPin to be an output | |
} | |
void loop() // run over and over again | |
{ | |
march(); | |
} | |
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds) | |
{ | |
digitalWrite(ledPin, HIGH); | |
//use led to visualize the notes being played | |
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); | |
} | |
digitalWrite(ledPin, LOW); | |
//set led back to low | |
delay(20); | |
//a little delay to make all notes sound separate | |
} | |
void march() | |
{ | |
//for the sheet music see: | |
//http://www.musicnotes.com/sheetmusic/mtd.asp?ppn=MN0016254 | |
//this is just a translation of said sheet music to frequencies / time in ms | |
//used 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); | |
//first bit | |
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); | |
//second bit... | |
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); | |
//start of the interesting bit | |
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); | |
//more interesting stuff (this doesn't quite get it right somehow) | |
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); | |
//repeat... repeat | |
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); | |
//and we're done \ó/ | |
} |
This comment has been minimized.
This comment has been minimized.
Olha só o que bolei com seu código... https://youtu.be/o9ub7vOU-3k?list=PLYElb7Dlq0wg4MbcggEVRqypDzeOT3AbV |
This comment has been minimized.
This comment has been minimized.
Here's improved timing, typing and 2 notes frequencies that @GeoVa19 mentioned earlier, refactored a bit and added some comments
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
According to https://pages.mtu.edu/~suits/notefreqs.html, with A4 at 440 Hz, aS and b should be at 466 Hz and 494 Hz respectively. Besides that, I ran the code on my Arduino and I liked it very much!