Beat3.ino 964 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #define __PROG__ "Beat3"
  2. #include <jm_Scheduler.h>
  3. #include "led.h"
  4. //------------------------------------------------------------------------------
  5. jm_Scheduler beat_scheduler;
  6. bool beat_state = false;
  7. timestamp_t beat_ival = 0;
  8. void beat_coroutine()
  9. {
  10. if (!beat_state)
  11. {
  12. beat_state = true;
  13. led_toggle();
  14. beat_ival += TIMESTAMP_1MS/10; // +0.1ms
  15. beat_scheduler.rearm(beat_ival);
  16. }
  17. else
  18. {
  19. beat_state = false;
  20. if (beat_ival < 10*TIMESTAMP_1MS)
  21. led_toggle();
  22. else
  23. beat_ival = 0;
  24. beat_scheduler.rearm(10*TIMESTAMP_1MS - beat_ival); // 10ms - beat_ival
  25. }
  26. }
  27. //------------------------------------------------------------------------------
  28. void setup()
  29. {
  30. Serial.begin(115200);
  31. while (!Serial && millis()<3000); // timeout 3s for USB Serial ready
  32. Serial.print(F(__PROG__));
  33. Serial.print(F("..."));
  34. Serial.println();
  35. led_init();
  36. beat_scheduler.start(beat_coroutine, 10*TIMESTAMP_1MS); // 10ms
  37. }
  38. void loop()
  39. {
  40. yield();
  41. }