#include "esp32-hal-timer.h"
hw_timer_t *timer1 = NULL;
void IRAM_ATTR blinkLED() {
digitalWrite(23, !digitalRead(23));
Serial.printf("[%ld]: %s\n", millis(), __func__);
}
void setup() {
Serial.begin(115200);
Serial.println("Lab 5.4");
pinMode(23, OUTPUT); // Red LED
pinMode(22, OUTPUT); // Blue LED
pinMode(32, INPUT_PULLDOWN); // Pushbutton
timer1 = timerBegin(1000000); // 1 MHz -> 1 microseconds
if (timer1 == NULL) {
Serial.println("Timer initialization failed!");
while(1); // Stop if timer failed
}
timerAttachInterrupt(timer1, &blinkLED);
timerWrite(timer1, 0); // Reset the alarm
timerAlarm(timer1, 5000000, true, 0); // 5 s, autoreload
// timer1 is automatically started by timerAlarm()
}
void loop() {
// Switch blue LED based on pushbutton
digitalWrite(22, digitalRead(32));
}