Scheduler_example.ino 1.8 KB

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