#include <stdio.h>
#include "driver/gpio.h"
#include "driver/adc.h"
#include "esp_adc_cal.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
// Definição dos pinos
#define POT_ADC_CHANNEL ADC1_CHANNEL_0 // GPIO PN corresponde ao canal 0 do ADC1
#define LED1_PIN GPIO_NUM_23
#define LED2_PIN GPIO_NUM_22
#define LED3_PIN GPIO_NUM_21
#define LED4_PIN GPIO_NUM_19
// Função de inicialização
void setup() {
// Configuração dos LEDs como saída
esp_rom_gpio_pad_select_gpio(LED1_PIN);
gpio_set_direction(LED1_PIN, GPIO_MODE_OUTPUT);
esp_rom_gpio_pad_select_gpio(LED2_PIN);
gpio_set_direction(LED2_PIN, GPIO_MODE_OUTPUT);
esp_rom_gpio_pad_select_gpio(LED3_PIN);
gpio_set_direction(LED3_PIN, GPIO_MODE_OUTPUT);
esp_rom_gpio_pad_select_gpio(LED4_PIN);
gpio_set_direction(LED4_PIN, GPIO_MODE_OUTPUT);
// Configuração do canal ADC
adc1_config_width(ADC_WIDTH_BIT_12); // Resolução de 12 bits
adc1_config_channel_atten(POT_ADC_CHANNEL, ADC_ATTEN_DB_11); // Atenuação para leitura até 3,3V
// Inicializa a comunicação UART
printf("Inicializando...\n");
}
// Função de leitura e controle
void loop() {
while (1) {
// Leitura do potenciômetro
int valor_pot = adc1_get_raw(POT_ADC_CHANNEL);
// Exibe o valor lido
printf("Valor do potenciômetro: %d\n", valor_pot);
vTaskDelay(100 / portTICK_PERIOD_MS); // Delay de 100 ms
// Verificação do valor do potenciômetro e controle dos LEDs
if (valor_pot == 0) {
gpio_set_level(LED1_PIN, 0);
gpio_set_level(LED2_PIN, 0);
gpio_set_level(LED3_PIN, 0);
gpio_set_level(LED4_PIN, 0);
vTaskDelay(200 / portTICK_PERIOD_MS); // Delay de 300 ms
}
if (valor_pot >= 1 && valor_pot <= 1364) {
gpio_set_level(LED1_PIN, 1);
gpio_set_level(LED2_PIN, 0);
gpio_set_level(LED3_PIN, 0);
gpio_set_level(LED4_PIN, 0);
vTaskDelay(200 / portTICK_PERIOD_MS); // Delay de 300 ms
}
if (valor_pot >= 1365 && valor_pot <= 2729) {
gpio_set_level(LED1_PIN, 1);
gpio_set_level(LED2_PIN, 1);
gpio_set_level(LED3_PIN, 0);
gpio_set_level(LED4_PIN, 0);
vTaskDelay(200 / portTICK_PERIOD_MS); // Delay de 300 ms
}
if (valor_pot >= 2730 && valor_pot <= 4094) {
gpio_set_level(LED1_PIN, 1);
gpio_set_level(LED2_PIN, 1);
gpio_set_level(LED3_PIN, 1);
gpio_set_level(LED4_PIN, 0);
vTaskDelay(200 / portTICK_PERIOD_MS); // Delay de 300 ms
}
if (valor_pot == 4095) {
gpio_set_level(LED1_PIN, 1);
gpio_set_level(LED2_PIN, 1);
gpio_set_level(LED3_PIN, 1);
gpio_set_level(LED4_PIN, 1);
vTaskDelay(200 / portTICK_PERIOD_MS); // Delay de 300 ms
}
}
}
// Função principal
void app_main() {
setup(); // Chama a função de setup
loop(); // Chama a função de loop
}