#define frequency notes
#define C 65.406
#define A 55.000
#define B 61.735
#define E 82.407
#define F 87.307
#define G 97.499
#define D 73.416
#define R 0
// define pin
int speakerOut = 26;
int DEBUG = 1;
void setup() {
pinMode(speakerOut, OUTPUT);
if (DEBUG) {
Serial.begin(9600);
}
}
double melody[] = {
//add melody notes here
C, D, C, F, E, R,
C, D, C, G, F, R,
C, C, A, F, E, D, R,
B, A, F, G, F, R
};
int MAX_COUNT = sizeof(melody) / 2;
long tempo = 10000;
int paaus = 1000;
int rest_count = 2;
int tone_ = 0;
int beat = 0;
long duration = 0;
void playTone() {
long elapsed_time =0;
if (tone_>0){
while(elapsed_time < duration){
digitalWrite(speakerOut, HIGH);
delay(tone_/2);
digitalWrite(speakerOut, LOW);
delay(tone_/2);
elapsed_time +=(tone_);
}
}
else {
for (int j = 0; j < rest_count; j++) {
delayMicroseconds(duration);
}
}
}
void loop() {
for (int i = 0; i <MAX_COUNT; i++)
{
tone_ = melody[i];
beat =50;
duration = beat*tempo;
playTone();
delayMicroseconds(paaus);
}
}