#define Buzz 23
#define Button_Pin 32
hw_timer_t *Buzz_timer = NULL;
int i=1;
double multi = 0.5;
// This is the Timer ISR. It is automatically called
// on a timer alarm event.
void IRAM_ATTR onTimer() {
digitalWrite(Buzz, !digitalRead(Buzz));
}
void IRAM_ATTR IO_INT_ISR(){
if(i==5) i=1;
else i++;
if(i==1){
multi = 1;
Serial.println("super slow");
}
else if(i==2){
multi = 0.75 ;
Serial.println("slow");
}
else if(i==3){
multi = 0.5;
Serial.println("medium");
}
else if(i==4){
multi = 0.25;
Serial.println("fast");
}
else if(i==5){
multi = 0.125;
Serial.println("super fast");
}
}
void playnote(double hz,int duration,int stop_timer){
timerAlarmWrite(Buzz_timer, ((1.0 / hz) * 1000000.0) / 2.0 , true); // set alarm every 1 sec
timerAlarmEnable(Buzz_timer); // enable the alarm
delay(duration * multi);
timerAlarmDisable(Buzz_timer);
digitalWrite(Buzz, LOW);
delay(stop_timer * multi);
}
void setup() {
Serial.begin(9600);
pinMode(Buzz, OUTPUT);
Buzz_timer = timerBegin(0, 80, true); // use tiemr 0 and set prescale to 80 so 1 tick is 1 uSec
timerAttachInterrupt(Buzz_timer, &onTimer, true); // point to the ISR
pinMode(Button_Pin, INPUT);
attachInterrupt(Button_Pin, IO_INT_ISR, RISING);
playnote(2093,1500,0);
playnote(1976,500,0);
playnote(1760,500,0);
playnote(1568,1000,0);
playnote(1397,2000,0);
playnote(1568,500,0);
playnote(1760,1000,0);
playnote(2093,1000,0);
playnote(1976,1500,0);
playnote(1760,500,0);
playnote(1568,500,0);
playnote(1397,1000,0);
playnote(1319,4250,0);
playnote(1760,1500,0);
playnote(1568,500,0);
playnote(1397,500,0);
playnote(1319,1000,0);
playnote(1175,2000,0);
playnote(1319,500,0);
playnote(1397,1000,0);
playnote(1760,1000,0);
playnote(1661,1500,0);
playnote(1397,500,0);
playnote(1319,500,0);
playnote(1175,1000,0);
playnote(1047,4000,0);
playnote(1109,500,0);
playnote(1175,500,0);
playnote(1760,500,500);
playnote(1760,4000,0);
playnote(2093,1500,0);
playnote(1976,1000,0);
playnote(1568,7500,0);
playnote(987.8,500,0);
playnote(1047,500,0);
playnote(1397,500,500);
playnote(1397,4000,0);
playnote(1760,1000,0);
playnote(1568,1000,0);
playnote(1397,1500,0);
playnote(1319,4500,0);
playnote(2093,1500,0);
playnote(1976,500,0);
playnote(1760,500,0);
playnote(1568,1000,0);
playnote(1397,2000,0);
playnote(1568,500,0);
playnote(1760,1000,0);
playnote(2093,1000,0);
playnote(1976,1500,0);
playnote(1760,500,0);
playnote(1568,500,0);
playnote(1397,1000,0);
playnote(1319,4250,0);
playnote(1760,1500,0);
playnote(1568,500,0);
playnote(1397,500,0);
playnote(1319,1000,0);
playnote(1175,2000,0);
playnote(1319,500,0);
playnote(1397,1000,0);
playnote(1760,1000,0);
playnote(1661,1500,0);
playnote(1397,500,0);
playnote(1319,500,0);
playnote(1175,1000,0);
playnote(1047,4000,0);
playnote(1109,500,0);
playnote(1175,500,0);
playnote(1760,500,500);
playnote(1760,4000,0);
playnote(2093,1500,0);
playnote(1976,1000,0);
playnote(1568,7500,0);
playnote(987.8,500,0);
playnote(1047,500,0);
playnote(1397,500,500);
playnote(1397,4000,0);
playnote(2093,1000,0);
playnote(1976,1000,0);
playnote(2093,4000,0);
}
void loop() {
}