3. 2.2 FreeRTOS en 3 phrases
3.2. Créer une tâche de lecture capteur
void sensorTask(void *parameter) {
DHT dht(DHT_PIN, DHT_TYPE);
dht.begin();
for (;;) {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (!isnan(temp) && !isnan(hum)) {
Serial.printf("[Capteur] T=%.1f°C H=%.1f%%\n", temp, hum);
}
vTaskDelay(pdMS_TO_TICKS(2000)); // libère le CPU pendant 2 secondes
}
}
void setup() {
Serial.begin(115200);
xTaskCreatePinnedToCore(
sensorTask, // fonction de la tâche
"SensorTask", // nom (debug)
4096, // taille de la pile en octets
NULL, // paramètre passé à la tâche
1, // priorité (1 = basse)
NULL, // handle (optionnel)
0 // cœur 0
);
}
void loop() {
// cœur 1 libre pour le serveur web
delay(1000);
}
Points clés :
- xTaskCreatePinnedToCore attache une tâche à un cœur spécifique
- vTaskDelay(pdMS_TO_TICKS(ms)) libère le CPU pendant l'attente — préférable à delay()
- La pile de 4096 octets est suffisante pour les lectures capteur