#include <ESP32Servo.h>
#include "freertos/FreeRTOS.h"
#include "driver/gpio.h"
#define Led 2
#define servopin 18
#define botao 13
Servo servo;
int led_valor = 0;
int posicao =0;
bool estado_botao;
int botao_pres;
int estado_servo = 0;
void Task1(void *pvParameter)
{
while(1)
{
led_valor = !led_valor;
digitalWrite(Led, led_valor);
vTaskDelay(3000);
}
}
void Task2(void *pvParameter)
{
while(1)
{
if(estado_servo == 0)
{
posicao +=1;
if(posicao <= 180)
{
servo.write(posicao);
vTaskDelay(100);
}
if(posicao == 180)
posicao = 0;
}
}
}
void Task3(void *pvParameter)
{
while(1)
{
botao_pres = digitalRead(botao);//verifica se o botao está pressionado
vTaskDelay(100);
if(botao_pres == HIGH)
{
estado_servo = !estado_servo;
}
}
}
void setup() {
pinMode(Led, OUTPUT);
pinMode(servopin, OUTPUT);
pinMode(botao, INPUT);
servo.attach(servopin, 500, 2400);
xTaskCreate(&Task1, "Tarefa1", 1024,NULL, 1, NULL);
xTaskCreate(&Task2, "Tarefa2", 1024,NULL, 2, NULL);
xTaskCreate(&Task3, "Tarefa3", 1024, NULL, 5, NULL);
}
void loop() {
}