#include <stdio.h>
#include "driver/gpio.h"
#include "esp_system.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
// Define GPIO pins
#define LED1_GPIO 2 // LED1 on GPIO 2
#define LED2_GPIO 4 // LED2 on GPIO 4
#define BUTTON_GPIO 18 // Button on GPIO 18
// Function for LED state
void toggleLED(int gpioPin) {
int current_level = gpio_get_level(gpioPin);
//current level == 1 then turn and hold LED
gpio_set_level(gpioPin, !current_level); // GPIO pin state
}
// Function to blink LED
void blinkLED(int gpioPin, int times) {
for (int i = 0; i < times; i++) {
gpio_set_level(gpioPin, 1); // Turn on LED
vTaskDelay(pdMS_TO_TICKS(500));
gpio_set_level(gpioPin, 0); //
vTaskDelay(pdMS_TO_TICKS(500));
}
}
void app_main(void) {
// Initialize GPIO LED1 and LED2 as outputs
gpio_set_direction(LED1_GPIO, GPIO_MODE_OUTPUT);
gpio_set_direction(LED2_GPIO, GPIO_MODE_OUTPUT);
while (1) {
if (gpio_get_level(BUTTON_GPIO) == 0) {
toggleLED(LED1_GPIO);
// Blink LED2 (GPIO 4) 3 times
blinkLED(LED2_GPIO, 3);
vTaskDelay(pdMS_TO_TICKS(300));
}
vTaskDelay(pdMS_TO_TICKS(50));
}
}