I think I want to become Arduino-savvy. Tell me what I'm getting into.

I am intriguiged by the Arduino, a cheap programmable computer board that hobbyists and artists have embraced to create gadgets and art projects. I think I might enjoy tinkering with the thing. I am handy and intellegent, but I have no real computer programming experience or knowledge (however, I did take and pass a basic Fortran class back in the Dark Ages, if that helps).

So, I have a couple of questions.

First, what sorts of things can (and can’t) an Arduino do?

Second, how steep and hard is the learning curve to master the thing?

Third, where do suggest a novice like me begin?

Thanks all, in advance.

  1. It’s a pretty general-purpose device. The Uno has 14 pins that can be either digital inputs or outputs, depending on what you tell them to be in your program. Basically, that means you can tell it to monitor one or more switches and use that information to decide whether or not to flip other switches.

For a very simple example, you could hook up one pin to a switch, and the other 14 to stuff you want to turn on or off based on what you do to that switch. Say you want to switch lights on and off while you’re on vacation to make the house look occupied. You could hook one pin up to a photosensor, so your gadget knows when it gets dark outside. When the photosensor turns off, it starts a timed loop, and it switches various other pins on and off at different times. You use those pins to control the lights in different rooms, so that it looks like someone is going through a usual nightly routine–kitchen/dining room lights on for a while, then the TV is on, then bathroom and bedroom lights, and so on.

Some of the digital pins can also be used in pulse-width modulation mode, which means they can be set to turn on and off quickly to simulate a signal in between digital high and low. You can use this to control things that aren’t strictly on and off–like dimming or brightening an LED.

It also has six analog input pins. You can use these to monitor anything that has a voltage output–hook one up to a battery, for instance, and you can monitor its charge, or you could monitor temperature with a thermocouple. (Be careful with this–the Arduino can only handle voltage inputs in a limited range, and hooking up an input to something with too high a voltage can damage it.)

In a nutshell, the Arduino takes in information about multiple “yes/no” and “how much” questions and follows the rules you give it to decide whether to turn stuff on or off.

  1. I came to it from a fair programming background in more modern languages than Fortran, so I had an advantage there. It should still be very easy to pick up the basics, though. The programming language is based on C, with tweaks to suit the platform, and easy enough to use for simple things. There is also a large and open Arduino community online, which has resulted in a huge array of code examples being posted. A little googling will generally turn up code from other people that does something similar to what you’re trying to do. That’s a big help when picking up a new language.

If it’s still more than you want to deal with, there’s ArduBlock, which lets you build your program out of blocks in a graphical interface. (I haven’t tried ArduBlock myself, but it looks pretty cool.)

The other part of the learning curve is electronics. To get the most out of an Arduino, you need to be able to build at least simple circuits for it to talk to. If you want it to run a motor, for instance, you need to be able to build a motor drive circuit, because the chip can’t really put out enough juice on its own. You generally don’t need to do anything fancy, and there are circuit examples out there, too. I really can’t judge the learning curve on this, though, because I’ve been working with electronics since I was a very small child.

  1. I suggest picking a simple project–monitor X, turn Y on/off when X does Z. Then try to build and program it. If you get an Arduino kit with the expectation of “just playing with it”, you’re probably going to end up staring blankly at it for quite a while.

Browse around in Hack A Day’s list of Arduino projects (bearing in mind that some of these projects are insane) and look for something you’d like to try. Build it, then tweak it to do other things–change the timing, add more stuff for it to do, and so forth. It’s easier to modify than to create from scratch, so it’s a good way to learn the basics.