#include <stdio.h>
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
// Definiciones de pines
#define LED_RED 2 // Pin GPIO para el LED rojo
#define LED_BLUE 4 // Pin GPIO para el LED blue
#define BTN_RED 13 // Pin GPIO para el botón rojo
// Variable global para indicar si se ha presionado el botón
volatile bool botonEstado = false;
// Manejador de interrupciones para el botón
static void interrupcionBoton() {
botonEstado = true; // Marca que el botón ha sido presionado
}
// Configuración del botón
void button_config() {
printf("configurando botón\n");
gpio_set_direction(BTN_RED, GPIO_MODE_INPUT); // Configura el pin del botón como entrada
gpio_pullup_en(BTN_RED); // Habilita la resistencia pull-up interna para el botón
//Configuracion de la Interrupcion
gpio_install_isr_service(0); // Instala el servicio de interrupciones GPIO
gpio_set_intr_type(BTN_RED, GPIO_INTR_NEGEDGE); // Configura la interrupción para el flanco de bajada (cuando se presiona el botón)
gpio_set_intr_type(BTN_BLUE, GPIO_INTR_NEGEDGE);
gpio_isr_handler_add(BTN_RED, interrupcionBoton, NULL); // Añade el manejador de interrupciones para el botón
printf("configuración completa\n");
}
// Configuración del LED
void led_config() {
gpio_set_direction(LED_RED, GPIO_MODE_OUTPUT); // Configura el pin del LED como salida
gpio_set_level(LED_RED, 0); // Inicializa el LED en estado apagado (nivel bajo)
}
// Función principal del programa
void app_main() {
uint8_t led_valor = 0; // Variable para almacenar el estado del LED (encendido/apagado) 00000000
//00000001
button_config(); // Configura el botón
led_config(); // Configura el LED
while (1) {
if (botonEstado) {
printf("*\n"); // Imprime un asterisco cuando el botón es presionado
botonEstado = false; // Reinicia el estado de la variable botonEstado
led_valor = !led_valor; // Cambia el estado del LED de 1 a 0 o de 0 a 1
gpio_set_level(LED_RED, led_valor); // Actualiza el nivel del LED según el estado
}
vTaskDelay(1000 / portTICK_PERIOD_MS); // Espera antes de la próxima iteración del bucle
}
}