#include <ESP32Servo.h>
#include "freertos/FreeRTOS.h"
#include "driver/gpio.h"
#define BUTTON GPIO_NUM_2
#define LED_PIN GPIO_NUM_12
#define BUT_PIN GPIO_NUM_26
const int servoPin = 18;
uint8_t button_value = 0;
int8_t led_val = 0;
int8_t but_val = 0;
int pos = 0;
Servo servo;
TaskHandle_t TaskHandle_1 = NULL;
void tarefa1(void *pvParameters){
while(1){
pos ++;
servo.write(pos);
if(pos > 180){
pos = 0;
}
vTaskDelay(100/portTICK_RATE_MS);
}
}
void tarefa2(void *pvParameters){
while(1){
gpio_set_level(LED_PIN,led_val);
led_val = !led_val;
vTaskDelay(3000 / portTICK_PERIOD_MS);
}
}
void tarefa3(void *pvParameters){
while(1){
but_val = gpio_get_level(BUT_PIN);
if (but_val == 1){
vTaskSuspend(TaskHandle_1);
}
else{
vTaskResume(TaskHandle_1);
}
vTaskDelay(100/portTICK_RATE_MS);
}
}
void setup() {
servo.attach(servoPin, 500, 2400);
gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);
gpio_set_direction(BUT_PIN, GPIO_MODE_INPUT);
xTaskCreate(tarefa1, "servo", 1000, NULL, 1,&TaskHandle_1);
xTaskCreate(tarefa2, "led", 1000, NULL, 1, NULL);
xTaskCreate(tarefa3, "buttom", 1000, NULL, 1, NULL);
}
void loop() {}