#include "esp_timer.h"
// Pin definitions
const int ledPin = 2; // GPIO pin for LED
const int buzzerPin = 4; // GPIO pin for Buzzer
// Timer handles
esp_timer_handle_t ledTimer;
esp_timer_handle_t buzzerTimer;
// Callback for LED timer
void ledTimerCallback(void* arg) {
static bool ledState = false;
ledState = !ledState;
digitalWrite(ledPin, ledState); // Toggle LED state
Serial.println(ledState ? "LED ON" : "LED OFF");
}
// Callback for Buzzer timer
void buzzerTimerCallback(void* arg) {
static bool buzzerState = false;
buzzerState = !buzzerState;
digitalWrite(buzzerPin, buzzerState); // Toggle Buzzer state
Serial.println(buzzerState ? "Buzzer ON" : "Buzzer OFF");
}
void setup() {
// Initialize Serial
Serial.begin(115200);
// Set pin modes
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// Turn off LED and Buzzer initially
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
// Create LED timer
const esp_timer_create_args_t ledTimerArgs = {
.callback = &ledTimerCallback,
.arg = nullptr,
.name = "LED Timer"
};
esp_timer_create(&ledTimerArgs, &ledTimer);
esp_timer_start_periodic(ledTimer, 1000000); // 1 second (1,000,000 microseconds)
// Create Buzzer timer
const esp_timer_create_args_t buzzerTimerArgs = {
.callback = &buzzerTimerCallback,
.arg = nullptr,
.name = "Buzzer Timer"
};
esp_timer_create(&buzzerTimerArgs, &buzzerTimer);
esp_timer_start_periodic(buzzerTimer, 500000); // 500 milliseconds (500,000 microseconds)
}
void loop() {
// The timers handle LED and Buzzer toggling in the background
delay(100); // Simulating other tasks
}