Scheduler_example01.ino 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. // Callback methods prototypes
  14. void t1Callback();
  15. void t2Callback();
  16. void t3Callback();
  17. //Tasks
  18. Task t4();
  19. Task t1(2000, 10, &t1Callback);
  20. Task t2(3000, TASK_FOREVER, &t2Callback);
  21. Task t3(5000, TASK_FOREVER, &t3Callback);
  22. Scheduler runner;
  23. void t1Callback() {
  24. Serial.print("t1: ");
  25. Serial.println(millis());
  26. if (t1.isFirstIteration()) {
  27. runner.addTask(t3);
  28. t3.enable();
  29. Serial.println("t1: enabled t3 and added to the chain");
  30. }
  31. if (t1.isLastIteration()) {
  32. t3.disable();
  33. runner.deleteTask(t3);
  34. t2.setInterval(500);
  35. Serial.println("t1: disable t3 and delete it from the chain. t2 interval set to 500");
  36. }
  37. }
  38. void t2Callback() {
  39. Serial.print("t2: ");
  40. Serial.println(millis());
  41. }
  42. void t3Callback() {
  43. Serial.print("t3: ");
  44. Serial.println(millis());
  45. }
  46. void setup () {
  47. Serial.begin(115200);
  48. Serial.println("Scheduler TEST");
  49. runner.init();
  50. Serial.println("Initialized scheduler");
  51. runner.addTask(t1);
  52. Serial.println("added t1");
  53. runner.addTask(t2);
  54. Serial.println("added t2");
  55. delay(5000);
  56. t1.enable();
  57. Serial.println("Enabled t1");
  58. t2.enable();
  59. Serial.println("Enabled t2");
  60. }
  61. void loop () {
  62. runner.execute();
  63. }