The Arduino Microcontroller - An Introduction

The Arduino is a microcontroller prototyping platform. This platform includes the hardware device, built around the Atmel ATmega168 microcontroller, and an easy-to-use cross-platform IDE (Integrated Development Environment) using a C-style programming syntax. Apparently intended for a Physical Computing audience, the Arduino should also be an easy way of adding a bit of extra "smarts" to simple robotics projects.

Before getting into the good stuff, a little bit about who I am and why I'm here, followed by what you can expect to glean from this small series of articles.

In real life I am a cabinet maker. Not an electronics engineer, not a roboticist, I don't have a degree in anything. Just a regular Joe who likes fiddling with things, taking things apart, building things, breaking things. I've been interested in general robotics for many years, mostly for their entertainment value. After playing with various Wowwee products I finally convinced myself it would be fun to design and build my own toy robot. Not "better" than any current toy robot offerings, just different. Having played a bit with BEAM robotics I knew I wanted a little more "intelligence" in my toy, so the obvious solution was to use some kind of microcontroller.

I'm not going to go into great detail about how to choose a microcontroller, that topic has been well covered elsewhere. After reading a lot about the various micros out there, I finally decided I'd start with the Arduino prototyping and development platform.

I will tell you some of the reasons I chose it over the others (eg PIC, Stamp, Propeller);

  1. Arduino's ease of use on various platforms. The Arduino IDE works on Windows, Mac, and Linux. Making it work on my Ubuntu computers was painless, even brainless. I'm just a sucker for plug-n-play.
  2. Arduino's programming syntax is based on C. I haven't even looked at BASIC since the late '80's (BASIC Stamp). I didn't really want to learn a new language (Spin). With my recent background being in Perl and PHP, writing for the micro in a C style just made sense to me.
  3. Since the Arduino is built around an AVR chip, if/when I decide I've "outgrown" the Arduino I should be easily able to transition to the use of the AVR directly, working the chip into my project(s) without the need for the prototyping board.

What I hope to present here are the details of my learning about the Arduino and how to use it. Not really a tutorial, more of a "what I did and how I did it" type of thing. We'll start off with some absolute basics and hopefully end up with a fully functioning (yet fairly simple) semi-autonomous walking robot.

If you don't already have an Arduino, well, you'll kinda need one in order to play along at home. I recommend AdaFruit, SparkFun and several other places have them as well. You should probably get a breadboard too if you don't already have one. Finally, it never hurts to have a bin of electronic doodads at your disposal; resistors, leds, buttons, etc...

Still with me? You are? Okay, I guess I'll go ahead and type up Part Two, the "Hello World" of electronics, the ubiquitous flashing LED! *oooh, aaah*

Comments

Nocturnal's picture

*Laughs* My personal "Hello World" when working with microcontrollers is a functioning UART interface, which funnily enough, usually sends "Hello World!".

Of course doing that with an Aruino is much easier, something along the lines of...

Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Hello World!"); // prints hello with ending line break

No dealing with flipping bits, interrupt handlers or buffering for you!

Have you seen Lady Ada's Arduino tutorial?

milw's picture

Thanks for the intro, Rudolph- I may have to pick up some of these Arduino boards... they are also used in one version of the RepRap rapid prototyper. Admiral N, aren't you also into the AVR line?

Rudolph's picture

Nocturnal,  Ya, I read through LadyAda's tuts before choosing a micro to start with. Very helpful stuff so I ordered my Arduino from her (and will continue to do so in the future). So far I like the Arduino language, very easy to work with, though I'm already looking forward to learning my way deeper into the AVR and it's fiddly bits after recently working with interrupts (part three has remote-controlled blinky LEDs!).

Jenny Deng's picture

FS5103R: Standard full rotation servo plastic gears 2 bearing
Size: 40.8*20.1*38mm
Weight: 36g
Speed: 0.18sec/60°(max 55rpm at 4.8V)
0.16sec/60°(max 62rpm at6V)
Torque: 2.5kg.cm (4.8V)
3kg.cm (6V)
Apply for robot
http://www.fitecrc.com
E-mail: Jenny.fitecrc@gmail.com

Jenny Deng's picture

FS5103R: Standard full rotation servo plastic gears 2 bearing
Size: 40.8*20.1*38mm
Weight: 36g
Speed: 0.18sec/60°(max 55rpm at 4.8V)
0.16sec/60°(max 62rpm at6V)
Torque: 2.5kg.cm (4.8V)
3kg.cm (6V)
Apply for robot
E-mail: Jenny.fitecrc@gmail.com
Website: www.fitecrc.com