#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
//PROTÓTIPO DE FUNÇÕES===================================================
void app_main(void);
void Task_blink4(void *pvParameter);
//DEFINIÇÕES E CONSTATNTES
#define delay(value) vTaskDelay(value/portTICK_PERIOD_MS)
#define LED_0 GPIO_NUM_22
#define LED_1 GPIO_NUM_4
#define LED_2 GPIO_NUM_2
#define LED_3 GPIO_NUM_15
#define GPIO_OUTPUT_PIN_SEL ((1<<LED_0) | (1<<LED_1) | (1<<LED_2) | (1<<LED_3))//bit_mask
//VARIÁVEIS
int statusLeds=0;
void Task_blink4(void *pvParameter){
//CONFIGURANDO SAÍDAS
gpio_config_t io_config = {};//variável descritora
io_config.intr_type = GPIO_INTR_DISABLE;//desabilita interrupção externa
io_config.mode = GPIO_MODE_OUTPUT;//configura GPIO como saídas
io_config.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;//carrega GPIOs configuradas
io_config.pull_up_en = 0;//ativa pull_down
io_config.pull_down_en = 0;
gpio_config(&io_config);//configura GPIO conforme descritor
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 0);
delay(100);
while(1){
printf("============================================================\n");
printf("Status LED: %d\n", statusLeds);
switch(statusLeds){
case 0:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 0);
break;
case 1:
gpio_set_level(LED_0, 1);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 0);
break;
case 2:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 1);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 0);
break;
case 3:
gpio_set_level(LED_0, 1);
gpio_set_level(LED_1, 1);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 0);
break;
case 4:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 1);
gpio_set_level(LED_3, 0);
break;
case 5:
gpio_set_level(LED_0, 1);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 1);
gpio_set_level(LED_3, 0);
break;
case 6:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 1);
gpio_set_level(LED_2, 1);
gpio_set_level(LED_3, 0);
break;
case 7:
gpio_set_level(LED_0, 1);
gpio_set_level(LED_1, 1);
gpio_set_level(LED_2, 1);
gpio_set_level(LED_3, 0);
break;
case 8:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 1);
break;
case 9:
gpio_set_level(LED_0, 1);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 1);
break;
case 10:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 1);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 1);
break;
case 11:
gpio_set_level(LED_0, 1);
gpio_set_level(LED_1, 1);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 1);
break;
case 12:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 1);
gpio_set_level(LED_3, 1);
break;
case 13:
gpio_set_level(LED_0, 1);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 1);
gpio_set_level(LED_3, 1);
break;
case 14:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 1);
gpio_set_level(LED_2, 1);
gpio_set_level(LED_3, 1);
break;
case 15:
gpio_set_level(LED_0, 1);
gpio_set_level(LED_1, 1);
gpio_set_level(LED_2, 1);
gpio_set_level(LED_3, 1);
break;
default:
gpio_set_level(LED_0, 0);
gpio_set_level(LED_1, 0);
gpio_set_level(LED_2, 0);
gpio_set_level(LED_3, 0);
break;
}
statusLeds++;
if(statusLeds==16){
statusLeds=0;
}
delay(3000);
}
}
void app_main(void){
xTaskCreate(Task_blink4, " BLINK ", 2048, NULL, 2, NULL);
}