Arduino Programming Should be Easier
The Arduino is part of a growing family of simple, programmable micro-controllers that can be used for a huge range of projects, from practical to artistic to educational. Arduino boards are appealing for their low cost (a few dollars, in many cases), low power use, and wide array of cheap add-on electronics, such as displays, sensors, and actuators. It is touted as an easy-to-use platform for everyone -- beginners and professionals, engineers and artists -- to create and program fun and useful devices. Arduino programs are called "sketches" to convey this happy dream.
The reality is not so pleasant. Sketches are actually just C++ programs, written using a stylized program structure and hardware API. Communicating with add-on devices is very low level and highly timing dependent. Seemingly simple behaviors require sophisticated programming techniques. Memory resources are very tight (2.5 kilobytes of RAM is common). Debugging is almost non-existent.
In this talk I will describe these programming challenges in some detail using a series of projects I recently built for fun. The goals of the talk are (a) to teach you a little about micro-controller programming, (b) to inspire you to pursue your own micro-controller creations, and (c) to convince you that we need better programming tools. I'll end the talk with some ideas that we are currently exploring.
Sam Guyer is an Associate Professor in the Department of Computer Science at Tufts University. He works in a variety of different areas of programming language research, including compilers, optimizations, program analysis, and run-time systems. webpage: http://www.cs.tufts.edu/~sguyer