Now that you've printed out the mechanical components of that gadget, you'll need some electronics to bring it to life, and what better way than with an open source computer designed for prototyping and embedding in larger projects. Arduino takes the form of a compact circuit board providing easily programmed hardware that enables control of all manner of inputs and outputs, such as sensors and actuators and buttons and displays, and is low cost and extremely versatile.
On paper the Arduino hardware is nothing special and an entry-level board comprises little more than a reference design for an 8-bit processor. There is no shortage of “development boards” of a similar nature, so how did something AVR-based gain so much ground over boards built around long-established hobbyist favourites such as PIC and BASIC Stamp?
The key to Arduino's success lies not in the choice of processor but in its price point, and the fact that it is very easy to use and highly-extensible. At around £20 for a basic board it's not the end of the world if by accident you apply too high a voltage to an input or short circuit an output. Upon installing the IDE you can be up and running in no time, and receiving almost instant gratification as you compile example code and have the Arduino perform simple actions such as blink an LED or read an input. The modular nature of the system and its open source design has led to the creation of a rich marketplace for add-ons and compatible designs, with an incredibly enthusiastic community of developers contributing tutorials and video blogs, and example code and circuits for every imaginable application.
An Arduino can be connected directly, or with minimal support components, to a wide variety of devices. These include light sensors, buttons, dials, LEDs, LCD displays and buzzers. For applications with more complex requirements it can be extended via Arduino "shields" – add-on modules that are provided with power and access to the Arduino's inputs, outputs and peripheral bus. These are based on a simple, stackable format that is easy to design for, and shields are available that add everything from Ethernet or a GPRS modem, to a Geiger counter.

You don't have to use the Arduino IDE to develop applications – a combination such as Eclipse and avr-gcc can be used instead. However, the official IDE provides a turnkey solution and one that is far less daunting for those that are new to software development. The language used is Wiring-based and is essentially a simplified version of C++ with bundled libraries that provide a selection of easy to use functions for things such as maths, communications and I/O. Drop-in libraries accompany many shields to provide generic capabilities such as networking, and add new functions which bring ease of use to the additional hardware.
