What is Arduino?

In a nutshell: Arduino is an inexpensive, open source development package for some AVR processors. It includes an easy to use software framework built around Wiring and a Atmega328 microcontroller.


The Arduino platform has brought the ease of plug-and-play to the world of microcontroller programming using a solid boot-loader and on-board programmer which converts USB to serial for you.

Arduino is made up of a lot of different open source components that are hard to use together. In essence it is a packaged “mash-up” of proven existing open source hardware and software. The end result is making connecting, programming and uploading to the AVR  effortless. You can have an LED blinking  in under 5 mins from opening the box. It almost feels like an Apple product, as it just works.

It is described by its makers as

“An open-source electronics prototyping platform based on flexible, easy-to-use hardware and software… Arduino was mostly designed by artists for artists and designers…I think it’s been the most important product/project in the world of educational electronics.”

An exciting part of the Arduino project is it uses the Creative Commons Share-Alike (CC-SA) license. This means you can start your own business making changes to the original Arduino board or how it’s programmed and release it to the public under the same CC-SA. Many such companies have already sprang up into a cottage industry.

The Arduino software is free to use. The programming platform is based on the popular Wiring language. The IDE is based on Processing, which is a well-known language among designers and prototypers. Unlike most microcontroller interfaces, Arduino is cross-platform; it can be run on Windows, Linux and Macintosh OS X.

Overview of Arduino component features:

Everything from device power, controller registry configurations and headers for easy I/O access. Even  serial communication over USB. The Arduino saves the trouble of having to create a PCB (cost more than an Arduino) or using a breadboard. Either way every circuit you create takes time to verify everything is working correctly. Being able to set I/O pins to PWM at a certain duty cycle using a single command or doing Serial communication with simple APIs are just heavenly. The whole platform feels very user friendly and gets out of the way so you can focus on developing and doing!

Although there are other board systems in this same market, the main advantage of Arduino over other platforms is the community of users and developers that openly share and advance the platform. Currently no other platform has that breadth and depth of support.

  • The software tools are free and run on Linux, MAC and PC. Easy programming using a USB port.
  • Software is open and easily modified to create custom examples.
  • The schematics of the boards and numerous peripherals are freely available. There are a wide variety of compatible boards available that can be tailored to specific applications.
  • Plenty of mentoring on arduino.cc and sites like chiphacker Lots of local user groups.

What do I do with it?

The Arduino site says it best:

“Arduino can be used to develop interactive objects, taking inputs from a variety of switches or sensors, and controlling a variety of lights, motors, and other physical outputs. Arduino projects can be stand-alone, or they can be communicate with software running on your computer (e.g. Flash, Processing, MaxMSP.) The boards can be assembled by hand or purchased preassembled.”

Arduino is extremely versatile. Like candy, they come in an assortment of form factors and capabilities. From the revered Uno board the best for the uninitiated, to the shrunkified Nano, all the way up to the robust Mega, Arduino has a form factor and feature list to support your next project.


But the goodness doesn’t stop there! A basic Arduino can be extended by using a Shield, which simply plugs into the top of the board and adds many kinds of new capabilities. The one pictured below is an Ethernet Shield, which connects your Arduino on to the internet.


Shields come in all shapes and sizes. It seems there are new companies and shields created every month. Arduino platform has grown so fast it is by leaps and bounds, Adafruit alone has 30 shields for sale.

Below I outline the steps required to blink an LED so you can appreciate how easy an unboxing is:

1. Get an Arduino board and USB cable
2. Download the Arduino environment
3. Connect the board to your computer by using the USB cable.
4. Install the drivers (Windows only)
5. Launch the Arduino application
6. From the menu, select your board type and serial port from list
7. Open the provided Blink example file from the menu and upload to the Arduino board.

>>LED Blinks<<

As you can see that was quite easy. No fair, that was using software already created. How do I write my own driver? Arduino software is very easy to use as well as the programming  which is a C based language evolved from Wiring.

The breakdown is so simple I can show you it all right here. Each program consists of 2 main parts:

1.Setup { … }

2. Loop { … }

Like any C program you can start by importing any external libraries you intend to use. In the Blink example below, none are required so this is omitted. The Arduino programming framework defines a program as a Sketch which always has two main sections: <setup> and <loop>.

You start by defining any behavior required when the application starts up, these actions are placed in the setup() function and is where preparations can take place that only run one time when the device boots.

After initialization is complete, the loop() function takes focus and is  simply the body of the Sketch (application) that will loop indefinitely. Everything that happens as the device is running happens here. This becomes the main cycle of your application and will contain the core logic that runs until power is removed from the device. Using these two simple functions you have a baseline platform to start creating without a complicated learning curve. Here is the complete Blink Sketch shown in the Arduino programming environment.

This single file can become rather large for real projects. To keep things in order and this file manageable  the environment allows you to create new files (tabs) to be saved with your project and keep portions of code responsible for different parts of a system separated for clean easy organization which you can see in the below example.


Functions related to servos or sensors can each go into their respective tabs. Then you can simply call the few required functions in the Loop() body and have the processing handed off to various tabs as the program executes.

The Arduino programming environment will concatenate your tab files together into a single file at compile time and upload to the Atmega with a click of the upload button. This feature allows you to keep your code neat while programming and optimization for installation painless.

Arduino is best friends with a Breadboard and is the perfect way to test your ideas quickly.


Massimo Banzi is one of the creators of the Arduino project. He recently did a wonderful talk at TED Global


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s