tickwaiter.h 553 B

123456789101112131415161718192021222324252627282930
  1. #ifndef TICKWAITER_H
  2. #define TICKWAITER_H
  3. #include <cstdint>
  4. #include "math.h"
  5. template<uint32_t TargetInterval>
  6. class TickWaiter {
  7. public:
  8. uint8_t waitForNextTick() {
  9. const auto last = this->last;
  10. const auto now = millis();
  11. this->last = now;
  12. const auto delta = getDelta(last, now, 255);
  13. if (delta >= TargetInterval) {
  14. return delta;
  15. }
  16. delay(TargetInterval - delta);
  17. const auto now2 = millis();
  18. return getDelta(last, now2, 255);
  19. }
  20. private:
  21. uint32_t last = 0;
  22. };
  23. #endif