Tap into the sum of all human knowledge and get your questions answered here!
From software algorithms to material selection, Mr. Roboto strives to meet you
where you are — and what more would you expect from a complex service droid?

by

Dennis Clark

Q. (In this case, not so much a question, but a
request. It was worded so well and completely

I felt that it would be disingenuous to simply
paraphrase, so I’ll quote and add comments later. I believe
in giving credit where credit is due.)

I enjoyed your column in the August issue of SERVO. I
really like the AVR microcontrollers and the gcc-avr compiler.
I wish you would mention a readily available and really
pretty simple IDE for the Atmel — Arduino. They’re at
http://arduino.cc/.

I’ve used this environment in several Introductory
Programming classes and it’s been a big hit. It meets
several of the criteria that your questioner brought up and
it has some cool features that, to me, contrast favorably
with the complexity of Eclipse.

1) The Arduino software Integrated Development
Environment is portable, and is available for Mac, Linux,
and Win32. Basically, it’s a small Java application that
allows editing and compiling C/C++ programs and that
launches gcc-avr in the background to do the actual
cross-compilation.

2) It’s simple — and while that means putting up with
some limitations, such as no real debugging — a lack of
complexity is also a big plus for beginners. Source code files
are easily assembled into “sketches,” which are held in
folders on your system. The look is very simple and clean,
with no makefiles or projects needed, and without the
cascade of panes, options, menus, and buttons that are an
unfortunate side effect of Eclipse’s power.

3) There’s a nice library built in. It has functions for easy
digital and analog I/O, along with most of the standard
C library. It’s all documented on the site.

4) You don’t need a programmer because it can directly
upload the compiled program into the chip. This is
possible because the chips come with a small bootloader

pre-installed. So when you press the appropriate button in
the Arduino IDE, a serial or USB to serial cable carries the
generated code into the chip. Then you just press reset and
go. Very easy, and this is a feature I appreciate as someone
who works a lot with beginning programming students.

5) A number of inexpensive boards are available. Some
examples can be found at
http://moderndevice.com/
and
http://wulfden.org/TheShoppe.shtml.

6) There’s a ton of software and hardware already available
for the basic hardware. As an example,
www.freeduino.
org/ lists hundreds of projects and reusable hardware and
software ideas.

Anyway, sorry for the long mail, and keep up the good
work, I enjoy your column.

— Jerry Reed
Adjunct Professor of Computer
Programming and Applications,
Valencia Community College

A. Thanks Jerry for the kudos and the lead. I had heard
of Arduino but thought of it (initially) as only another
interpreter chip for a token-based compiler. Little did
I realize just how WRONG I was! The Arduino is an open
source language built on top of C++ that simplifies the task
of writing code for an embedded processor. The Arduino
project abstracts the embedded processor to make it a
hardware object that can be run on its own or interfaced
to the computer to talk to other programs. The obvious
computer interface is the Processing language upon which
the Arduino language is built. This hardware-oriented
language is called Wiring; it simplifies many of the tasks
that a beginner would like to do with an embedded
processor. Of course, this act of simplifying that
programming means that some of the capability of the
processor (an Atmel ATMEGA8 or ATMEGA168) is reduced
or lost (no interrupts or PWM capability), but for many