#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#define BTN_0 23
#define BTN_1 22
#define RELAY_0 4
#define RELAY_1 2
void config_mcu(void)
{
pinMode(BTN_0, INPUT_PULLUP);
pinMode(BTN_1, INPUT_PULLUP);
pinMode(RELAY_0, OUTPUT);
pinMode(RELAY_1, OUTPUT);
digitalWrite(RELAY_0, LOW); //desliga relé
digitalWrite(RELAY_1, LOW);
}
void task_button(void * pvParameter){
char aux0 = 0;
char aux1 = 0; //signed char -> byte
config_mcu();
for(;;)
{
// loop sem saída
if(digitalRead(BTN_0) == 0 && aux0 == 0) {// AND E
digitalWrite(RELAY_0, !digitalRead(RELAY_0));
if(digitalRead(RELAY_0) == 1){
Serial.println("rele_0 ON");
} else {
Serial.println("Rele_0 OFF");
}
delay(200);
aux0 = 1;
}
if(digitalRead(BTN_0) == 1 && aux0 == 1){
delay(100);
aux0 = 0;
}
if(digitalRead(BTN_1) == 0 && aux1 == 0){
digitalWrite(RELAY_1, !digitalRead(RELAY_1));
delay(200);
}
if(digitalRead(BTN_1) == 1 && aux1 == 0){
delay(100);
aux1 = 0;
}
}
vTaskDelete(NULL);
}
void setup(){
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
xTaskCreate(task_button, "task_button", 2048, NULL, 1, NULL);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}