Scheduler_example.ino 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /**
  2. * TaskScheduler Test
  3. *
  4. * Initially only tasks 1 and 2 are enabled
  5. * Task1 runs every 2 seconds 10 times and then stops
  6. * Task2 runs every 3 seconds indefinitely
  7. * Task1 enables Task3 at its first run
  8. * Task3 run every 5 seconds
  9. * Task1 disables Task3 on its last iteration and changed Task2 to run every 1/2 seconds
  10. * At the end Task2 is the only task running every 1/2 seconds
  11. */
  12. #include <TaskScheduler.h>
  13. Task t4();
  14. Task t1(2000, 10, &t1Callback);
  15. Task t2(3000, -1, &t2Callback);
  16. Task t3(5000, -1, &t3Callback);
  17. Scheduler runner;
  18. void t1Callback() {
  19. Serial.print("t1: ");
  20. Serial.println(millis());
  21. if (t1.isFirstIteration()) {
  22. t3.enable();
  23. runner.addTask(t3);
  24. Serial.println("t1: enabled t3 and added to the chain");
  25. }
  26. if (t1.isLastIteration()) {
  27. t3.disable();
  28. runner.deleteTask(t3);
  29. t2.setInterval(500);
  30. Serial.println("t1: disable t3 and delete it from the chain. t2 interval set to 500");
  31. }
  32. }
  33. void t2Callback() {
  34. Serial.print("t2: ");
  35. Serial.println(millis());
  36. }
  37. void t3Callback() {
  38. Serial.print("t3: ");
  39. Serial.println(millis());
  40. }
  41. void setup () {
  42. Serial.begin(115200);
  43. Serial.println("Scheduler TEST");
  44. t1.enable();
  45. Serial.println("Enabled t1");
  46. t2.enable();
  47. Serial.println("Enabled t2");
  48. runner.init();
  49. Serial.println("Initialized scheduler");
  50. runner.addTask(t1);
  51. Serial.println("added t1");
  52. runner.addTask(t2);
  53. Serial.println("added t2");
  54. delay(5000);
  55. }
  56. void loop () {
  57. runner.execute();
  58. }