#include <ESP32Servo.h>
#include "freertos/FreeRTOS.h"
//#include "driver/gpio.h"
#define LED_PIN 2
#define SERVOPIN 23
#define BUTTON 22
Servo servo;
TaskHandle_t tarefa1Handle = NULL;
uint8_t led_value=0;
uint8_t pos=0;
bool press=0;
void tarefa1(void *pvParameter){
while(1){
pos++;
if(pos>180) pos=0;
servo.write(pos);
vTaskDelay(100/portTICK_PERIOD_MS);
}
}
void tarefa2(void *pvParameter){
while(1){
digitalWrite(LED_PIN, led_value);
led_value=!led_value;
vTaskDelay(3000/portTICK_PERIOD_MS);
}
}
void tarefa3(void *pvParameter){
while(1){
if(digitalRead(BUTTON)==LOW){
press=1;
vTaskSuspend(tarefa1Handle);
}else if(digitalRead(BUTTON)==HIGH && press==1){
press=0;
vTaskResume(tarefa1Handle);
}
vTaskDelay(100/portTICK_PERIOD_MS);
}
}
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
servo.attach(SERVOPIN, 500, 2400);
xTaskCreate(&tarefa1, "tarefa1", 1024, NULL, 5, &tarefa1Handle);
xTaskCreate(&tarefa2, "tarefa2", 1024, NULL, 5, NULL);
xTaskCreate(&tarefa3, "tarefa3", 1024, NULL, 5, NULL);
}
void loop() {}