05b: Introduction
Objective: To understand the basic nature of an Arduino; to examine the Arduino microcontroller and software tools.
What is the Arduino? The Arduino is a tiny computer with specialized hardware suitable for connecting to sensors and actuators. Or rather, there are many variants available in different configurations which share a common programming system and design philosophy. The programming language, reference materials and development environment deliberately resemble Processing, and have a similar focus on ease of understanding. We’ll focus on the widely available Arduino Uno.
Where do I get one? You have an Arduino in your Adafruit ARDX kits, but the Arduino can be purchased in many stores online (I recommend ‘maker’ supply companies like SparkFun and Adafruit). If you need one right away, you can even purchase them at RadioShack down the street.
How does it operate? The Arduino runs programs from built-in FLASH read-only memory. When powered up, it boots very quickly and starts running the stored program. This is convenient for physical interfacing; the world doesn’t wait for booting up. It is low-power and works reasonably well with battery supplies. It has built-in analog-to-digital conversion for reading analog sensor inputs. It can generate pulse-width-modulated (PWM) signals for operating servos and motors. It doesn’t have any sort of graphic display, so understanding and debugging program flow requires a host computer and careful reasoning from the limited data that can be sent to it.
How do I use it? The Arduino comes with a software application called the Arduino IDE (or Integrated Development Environment) which combines a program text editor, a compiler which translates the program text into machine code, and a bootstrap loader which can program the machine code representing your program into read-only memory on the Arduino microprocessor. The underlying Arduino programming language is C++, but you may find that it strongly resembles Processing; the built-in libraries use a selected subset of C++ to keep the syntax beginner-friendly.
How ‘powerful’ is it? The computational capacity of an Arduino is vastly smaller than a contemporary laptop or cellphone: the Arduino Uno has only 32K of ROM and 2K of RAM, executing 8-bit instructions at 16 MHz. The laptop computer used to write this text has 8 million times more persistent storage and 4 million times more transient storage. Computation rates are harder to compare, but the basic clock rate of this laptop is 80 times faster, and the effective processing rate even more multiplied. But the Arduino consumes substantially less power, and is substantially easier to program at a hardware level.