TaskHandle_t taskProcessHandle;
float readSensor() {
return random(20, 30); // Simula leitura de temperatura (20°C a 30°C)
}
void processData(float value) {
Serial.printf("Temperatura processada: %.2f°C\n", value);
}
void taskSensor(void *pvParams) {
while (1) {
float temperature = readSensor();
xTaskNotifyGive(taskProcessHandle); // Sinaliza que há dados novos
vTaskDelay(pdMS_TO_TICKS(2000));
}
}
void taskProcess(void *pvParams) {
while (1) {
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
float temp = readSensor(); // Lê o valor atual (poderia ser compartilhado via variável global)
processData(temp);
}
}
void setup() {
Serial.begin(115200);
xTaskCreate(taskProcess, "Process", 2048, NULL, 1, &taskProcessHandle);
xTaskCreate(taskSensor, "Sensor", 2048, NULL, 1, NULL);
}
void loop() {}