Files
ldr/ParallelTask.hh
2026-06-08 22:36:21 +02:00

36 lines
967 B
C++

#pragma once
#include <Arduino.h>
class ParallelTask {
private:
unsigned long previousMillis;
unsigned long interval;
void (*callback)(); // Pointer to the function you want to run
public:
// Constructor: Takes the interval in milliseconds and the function to run
ParallelTask(unsigned long interval_ms, void (*func)()) {
interval = interval_ms;
callback = func;
previousMillis = 0;
}
// Call this in your main loop()
void update() {
unsigned long currentMillis = millis();
// Handle millis() rollover (happens ~every 50 days) and check interval
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (callback) {
callback();
}
}
}
// Optional: Update the interval dynamically while running
void setInterval(unsigned long new_interval) {
interval = new_interval;
}
};