// LECTURE 08 WHAT DOES THIS CODE DO PB NEWTONE LED BUZZER INTERRUPT
#include <TimerOne.h>
#include <NewTone.h>
const byte LED = 3; // LED
const byte PB = 2; // PUSHBUTTON
const byte PIEZO = 7; // PASSIVE BUZZER
volatile bool state = HIGH;
volatile unsigned long futureTime = millis();
void setup() {
pinMode(LED, OUTPUT);
pinMode(PB, INPUT_PULLUP);
pinMode(PIEZO, OUTPUT);
attachInterrupt(digitalPinToInterrupt(PB), pinISR, CHANGE);
Timer1.initialize(5000000); // 5 seconds on 5 seconds off
Timer1.attachInterrupt(timerISR);
}
void loop() {
}
void timerISR() {
state = ! state;
digitalWrite(LED, state);
}
void pinISR() {
if (millis() > futureTime) {
NewTone(PIEZO, 1000, 500); // 1000 hz every 500 millisec
futureTime = millis() + 500; // o.5 second tone
}
}