#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "sdkconfig.h"
#define ledA 0
#define ledB 4
#define ledC 16
#define ledD 17
#define ledE 5
#define ledF 18
#define ledG 19
#define botao 12
int ledState = 0; // Variável global para armazenar o estado do LED
void IRAM_ATTR botao_isr_handler(void *arg) {
// Alterna o estado do LED
ledState = !ledState;
// Envia uma mensagem para o log para fins de depuração
printf("Botão pressionado, estado do LED: %d\n", ledState);
}
void ativaHexa(void *pvParameters) {
while (1) {
if (ledState) {
gpio_set_level(ledA, 1); //aceso 0
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 0); //aceso 1
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 0);
gpio_set_level(ledE, 0);
gpio_set_level(ledF, 0);
gpio_set_level(ledG, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso 2
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 0);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 0);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso 3
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 0);
gpio_set_level(ledF, 0);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 0); //aceso 4
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 0);
gpio_set_level(ledE, 0);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso 5
gpio_set_level(ledB, 0);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 0);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso 6
gpio_set_level(ledB, 0);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso 7
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 0);
gpio_set_level(ledE, 0);
gpio_set_level(ledF, 0);
gpio_set_level(ledG, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso 8
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso 9
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 0);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso A
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 0);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 0); //aceso B
gpio_set_level(ledB, 0);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso C
gpio_set_level(ledB, 0);
gpio_set_level(ledC, 0);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 0); //aceso D
gpio_set_level(ledB, 1);
gpio_set_level(ledC, 1);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 0);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso E
gpio_set_level(ledB, 0);
gpio_set_level(ledC, 0);
gpio_set_level(ledD, 1);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(ledA, 1); //aceso F
gpio_set_level(ledB, 0);
gpio_set_level(ledC, 0);
gpio_set_level(ledD, 0);
gpio_set_level(ledE, 1);
gpio_set_level(ledF, 1);
gpio_set_level(ledG, 1);
}
vTaskDelay(100 / portTICK_PERIOD_MS); // Delay para evitar que o loop rode muito rápido
}
}
int app_main(){
gpio_set_direction(ledA, GPIO_MODE_OUTPUT);
gpio_set_direction(ledB, GPIO_MODE_OUTPUT);
gpio_set_direction(ledC, GPIO_MODE_OUTPUT);
gpio_set_direction(ledD, GPIO_MODE_OUTPUT);
gpio_set_direction(ledE, GPIO_MODE_OUTPUT);
gpio_set_direction(ledF, GPIO_MODE_OUTPUT);
gpio_set_direction(ledG, GPIO_MODE_OUTPUT);
gpio_set_direction(botao, GPIO_MODE_INPUT);
gpio_set_intr_type(botao, GPIO_INTR_NEGEDGE);
gpio_install_isr_service(0); // Instala o serviço de interrupção
gpio_isr_handler_add(botao, botao_isr_handler, (void*) botao);
xTaskCreate(ativaHexa, "Ativa Hexa", 1024, NULL, 1, NULL);
return 0;
}