Conclusion:

In this guide we have demonstrated that it is indeed possible for the Arduino to juggle multiple independent tasks while remaining responsive to external events like user input.

  • We’ve learned how to time things using millis() instead of delay() so we can free up the processor to do other things.
  • We’ve learned how to define tasks as state machines that can execute independently of other state machines at the same time.
  • And we’ve learned how to encapsulate these state machines into C++ classes to keep our code simple and compact.

These techniques won’t turn your Arduino into a supercomputer.  But they will help you to get the most out of this small, but surprisingly powerful little processor.

In the part 2 of this series, we'll build on these techniques and explore other ways to make your Arduino responsive to external events while managing multiple tasks.

Last updated on 2015-11-23 at 04.19.38 PM Published on 2014-11-03 at 01.41.03 PM