summaryrefslogtreecommitdiff
path: root/examples/Scheduler_example02
diff options
context:
space:
mode:
authorAnatoli Arkhipenko <arkhipenko@hotmail.com>2015-12-23 17:04:21 -0500
committerAnatoli Arkhipenko <arkhipenko@hotmail.com>2015-12-23 17:12:06 -0500
commit965f1b768d3d0675e2483ca62fa6d0565c389a31 (patch)
tree8bae4e1eee8275efaab252b35cb26c6a304fb015 /examples/Scheduler_example02
parent42d8d776e3fdb3c48700a3d88c8615dbf81da23f (diff)
Version 2.0.0 support for layered task prioritizationv2.0.0
* _TASK_PRIORITY - support for layered task prioritization
Diffstat (limited to 'examples/Scheduler_example02')
-rw-r--r--examples/Scheduler_example02/Scheduler_example02.ino77
1 files changed, 77 insertions, 0 deletions
diff --git a/examples/Scheduler_example02/Scheduler_example02.ino b/examples/Scheduler_example02/Scheduler_example02.ino
new file mode 100644
index 0000000..c76551a
--- /dev/null
+++ b/examples/Scheduler_example02/Scheduler_example02.ino
@@ -0,0 +1,77 @@
+#define _TASK_SLEEP_ON_IDLE_RUN
+#include <TaskScheduler.h>
+
+Scheduler runner;
+// Callback methods prototypes
+void t1Callback();
+void t2Callback();
+void t3Callback();
+
+// Tasks
+Task t4();
+Task t1(2000, 10, &t1Callback, &runner, true); //adding task to the chain on creation
+Task t2(3000, TASK_FOREVER, &t2Callback, &runner, true); //adding task to the chain on creation
+Task t3(5000, TASK_FOREVER, &t3Callback);
+
+// Test
+// Initially only tasks 1 and 2 are enabled
+// Task1 runs every 2 seconds 10 times and then stops
+// Task2 runs every 3 seconds indefinitely
+// Task1 enables Task3 at its first run
+// Task3 run every 5 seconds
+// loop() runs every 1 second (a default scheduler delay, if no shorter tasks' interval is detected)
+// Task1 disables Task3 on its last iteration and changed Task2 to run every 1/2 seconds
+// Because Task2 interval is shorter than Scheduler default tick, loop() executes ecery 1/2 seconds now
+// At the end Task2 is the only task running every 1/2 seconds
+//
+// NOTE that t1 and t2 are affected by the delay() function in the setup() method and are scheduled immediately twice to "catch up" with millis().
+
+
+
+
+
+void t1Callback() {
+ Serial.print("t1: ");
+ Serial.println(millis());
+
+ if (t1.isFirstIteration()) {
+ runner.addTask(t3);
+ t3.enable();
+ Serial.println("t1: enabled t3 and added to the chain");
+ }
+
+ if (t1.isLastIteration()) {
+ t3.disable();
+ runner.deleteTask(t3);
+ t2.setInterval(500);
+ Serial.println("t1: disable t3 and delete it from the chain. t2 interval set to 500");
+ }
+}
+
+void t2Callback() {
+ Serial.print("t2: ");
+ Serial.println(millis());
+
+}
+
+void t3Callback() {
+ Serial.print("t3: ");
+ Serial.println(millis());
+
+}
+
+void setup () {
+ Serial.begin(115200);
+ Serial.println("Scheduler TEST");
+
+ delay(5000);
+}
+
+
+void loop () {
+
+ runner.execute();
+
+// Serial.println("Loop ticks at: ");
+// Serial.println(millis());
+} \ No newline at end of file