Arduino Behind the Scenes

From Interaction Station Wiki
Revision as of 17:41, 13 April 2015 by Simon (Talk | contribs)

Jump to: navigation, search

Too much sugar

In the Arduino Introduction you could read that Arduino is in principle an attempt to make physical computing easier accessible for the average user. It did this by creating a hardware platform (development board) based on the Atmel AVR 8- and 32-bit family of μControllers. You also got introduced to the Wiring language framework Arduino implemented for their hardware platforms.

When we advance in our explorations at some point it is important to realise that making things easier usually means making compromises on other levels. In case of the Arduino and Wiring language framework this specifically means we compromise memory space and execution speed for ease of programming. In many cases this is perfectly fine but there are certain situations where it is important to understand these compromises and their ways around it (on the compromise of ease of use).

In principle Arduino adds a lot of sugar to the μController it is based on. The sugar makes it a lot sweeter, but we all know what too much sugar is not very good for your run-time health.

Where did all that sugar go

The first sugar cube is quite close and is revealed by first thing you'll see when starting a new sketch in the Arduino IDE. Each new sketch will start with the standard template:

  1. void setup() {
  2.   // put your setup code here, to run once:
  3.  
  4. }
  5.  
  6. void loop() {
  7.   // put your main code here, to run repeatedly:
  8. }

Now this looks easy enough and we all know how what to do here. However, of course there is more to this and to understand what, it is important to know the language we are actually writing our Arduino (Wiring) code in. The language used by the Wiring language (and with that the Arduino language) is C / C++. Actually this is a combination of the languages C and C++ which can be intermingled. From here on, for brevity, everywhere C is mentioned it can be read as C / C++ unless noted otherwise.

Every program written in C should contain a main routine. This is the main entry point for code execution. The simplest C program that does nothing at all looks like this:

  1. void main() {
  2.   // put your code here
  3. }