/*
Atividade da disciplina de Sistemas de Tempo Real
Voltímetro
Aluno: André Penha Soares Silva
Matrícula: 20212EE0013
*/
#include <Arduino.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
//Definição da função da primeira tarefa para piscar o LED
void piscarLED(void *pvParameter){
pinMode(2,OUTPUT);//Configura o pino do LED como saída
while(true){
digitalWrite(2,HIGH);//liga o LED
vTaskDelay(100);//aguarda 100ms
digitalWrite(2,LOW);//desliga o LED
vTaskDelay(pdMS_TO_TICKS(250)); //aguarda 100ms na fila de tarefas prontas
}
}
int pino_sensor = 36; //pino VP
//Definição da função da segunda tarefa para imprimir no terminal serial a tensão lida no pino VP
void Lertensaopino(void *pvParameters){
while(true){
Serial.print(analogRead(pino_sensor)*3.3/4095);
Serial.println(" Volts");
vTaskDelay(pdMS_TO_TICKS(250)); //aguarda 250ms na fila de tarefas prontas
}
}
void setup() {
Serial.begin(115200); //inicializa a comunicação serial
Serial.println("VOLTÍMETRO COM ESP32");
pinMode(pino_sensor,INPUT);
//criação da primeira tarefa para piscar o LED
xTaskCreate(
piscarLED, //função da tarefa
"PiscarLED", //nome da tarefa
1000, //tamanho a pilha (em palavras)
NULL, //parâmetros da tarefa
5, //prioridade da tarefa (0 é a menor prioridade)
NULL //identificador da tarefa (opcional)
);
//criação da segunda tarefa para imprimir na tensao lida no pino VP no terminal
xTaskCreate(
Lertensaopino, //função da tarefa
"Ler_tensao_pino", //nome da tarefa
1000, //tamanho da pilha (em palavras)
NULL, //parâmetros da tarefa
4, //prioridade da tarefa (0 é a menor prioridade)
NULL //identificador da tarefa (opcional)
);
}
void loop() {
//loop vazio, o código da aplicação está nas tarefas
}