diff --git a/examples/BlinkList/BlinkList.ino b/examples/BlinkList/BlinkList.ino new file mode 100644 index 000000000..aea00bd4e --- /dev/null +++ b/examples/BlinkList/BlinkList.ino @@ -0,0 +1,56 @@ +//*********************************************************************************** +// A version of the Blink demo, but with delays stored in two instances of etl::list +//*********************************************************************************** + +#undef min +#undef max + +#include // Contains platform macros for Arduino. +#include + +void setup() +{ + // initialize digital pin 13 as an output. + pinMode(13, OUTPUT); +} + +void loop() +{ + int delay_times1[] = { 900, 800, 700, 600, 500, 400, 300, 200, 100 }; + int delay_times2[] = { 400, 300, 200, 100 }; + + // Fill the first delay list, then reverse it. + etl::list delays1(etl::begin(delay_times1), etl::end(delay_times1)); + delays1.reverse(); + + // Fill the second delay list, + etl::list delays2(etl::begin(delay_times2), etl::end(delay_times2)); + + while (true) + { + // Common iterator for both lists; + etl::ilist::const_iterator itr; + + // Iterate through the first list. + itr = delays1.begin(); + + while (itr != delays1.end()) + { + digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) + delay(100); // wait + digitalWrite(13, LOW); // turn the LED off by making the voltage LOW + delay(*itr++); // wait + } + + // Iterate through the second list. + itr = delays2.begin(); + + while (itr != delays2.end()) + { + digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) + delay(100); // wait + digitalWrite(13, LOW); // turn the LED off by making the voltage LOW + delay(*itr++); // wait + } + } +}