#include <Arduino.h>
QueueHandle_t xQueue;
void sensorTask(void *pvParameters)
{
uint32_t sensorValue = 0;
TickType_t lastWakeTime = xTaskGetTickCount();
while (true)
{
// Verstuur huidige sensorwaarde
xQueueSend(xQueue, &sensorValue, portMAX_DELAY);
// Verhoog van 0 t/m 100 en begin opnieuw
sensorValue = (sensorValue + 1) % 101;
// Elke 800 ms uitvoeren
vTaskDelayUntil(&lastWakeTime, pdMS_TO_TICKS(800));
}
}
void displayTask(void *pvParameters)
{
uint32_t ontvangen;
while (true)
{
// Wacht tot er een waarde beschikbaar is
if (xQueueReceive(xQueue, &ontvangen, portMAX_DELAY) == pdPASS)
{
Serial.print("Ik heb ontvangen: ");
Serial.println(ontvangen);
}
}
}
void setup()
{
Serial.begin(115200);
// Queue voor 5 uint32_t-waarden
xQueue = xQueueCreate(5, sizeof(uint32_t));
xTaskCreate(
sensorTask,
"SensorTask",
2048,
NULL,
2,
NULL
);
xTaskCreate(
displayTask,
"DisplayTask",
2048,
NULL,
1,
NULL
);
}
void loop() {}