Microcontrollers need to be programmed with software. Programs are written in the free, downloadable Integrated Development Environment (IDE) designed for the Arduino. The IDE includes three sections integrated together: the programmatic text editor, the compiler, and the debugger. The text editor is where code is written or pasted. The complier compiles code when the "Upload to I/O Board" button is pressed. A single button to compile code is a unique instance. The serial monitor can be used for debugging and monitoring data from your program. The debugger provides feedback, fostering confidence to move forward at a rapid pace. The IDE displays the interface for these three sections, as displayed in Fig 6.

Figure 3-5 A screenshot of the Arduino IDE

The IDE can be downloaded on many platforms which helps the Arduino grow at its current rate. It is compatible with the major computing platforms: Linux, Windows and Mac.

Arduino draws off both the Wiring and Processing code and software libraries in the IDE. The Wiring microcontroller is designed with the intention "to make comprehensible and useful things out of the things that looked cryptic…" according to Barragán. Barragán wrapped technical code into software libraries,[1] which made it easier for artists and designers to prototype their ideas. Igoe explains how the Arduino has attempted this: "Arduino embodies what I call glass box encapsulation. That means that you don't have to look at the lower level code that comprises the libraries if you don't want to, but you can if you choose."[2] In other words, the glass box encapsulation helps beginners by automating some code through software libraries. Experienced users may need to access and alter specific aspects of the Arduino code, such as libraries and this option is available to them. Mark Gross[3] delineates the accessibility of the Arduino microcontroller similarly to Igoe: "… to use Seymour Papert's slogan, 'low threshold, no ceiling'. Seymour's insight was to provide people with a very powerful (but simple) environment that allowed them to access the core ideas of computing, and to harness those ideas for their own multifarious purposes." For example, it is not readily apparent to most non-technical users that the programming language is derived from C/C++. Zambetti recollected this was a conscious decision as C/C++ is often seen as an intimidating barrier. Twelve interviewees agreed that if people knew they were using C/C++ with Arduino, the task would have appeared more daunting and turned off beginners, themselves included.

Attaching the Arduino microcontroller to a computer via USB is another way the Arduino assists non-technical users. Serial ports are more difficult to come by on modern computers, whereas the USB port is currently available on most. On the Arduino, the serial interface is bussed through USB, replacing a serial connector with a USB connector. The first Arduino boards had the USB cable attached; an example is pictured in Figure 3-6. Currently the Arduino uses a separate USB, which Dave Vondle[4] finds useful for rapid prototyping on the go:

"Arduino is more portable than any other electronic prototyping platform for design. A user does not need to use it in the confines of a lab where special computers or other components are needed. The Arduino is a singular unit and connects with USB, the most common standard for connecting devices which makes it accessible outside a lab environment".

Figure 3-6 Arduino microcontroller, 2005

The Arduino in Figure 3-6 has male headers rather than female headers as pins. Compare the male headers to the female headers, pictured in Figure 3-2. Female headers are an intuitive benefit to the Arduino according to engineer Tod Kurt:[5] "the standard Arduino board is ready-to-use out of the box and has sockets [female headers] instead of pins [male headers], people know how to stick stuff into sockets." Zambetti expressed that female headers versus male headers were a discussion topic when making revisions to the Arduino board. The headers were changed to female for the same statement echoed by Kurt. People are familiar with plugging things in, which makes this action intuitive rather than challenging. The Arduino's plug and play nature makes it easy to understand and easy to manipulate the interaction of a project. Another aspect that makes the Arduino microcontroller easy to understand is its community.

Software libraries are written as a layer of abstraction between low level and high level programming.