When I first started interfacing electronics with computers back in the early 90′s my hardware choice was an ISA AD/DA card. So when I wanted to experiment with some physical computing stuff recently, I thought of getting an AD/DA card that can be plugged into either a PCI or a PCI Express slot.
But a fairly recent dedicated AD/DA board with a PCI or PCI Express interface is way too expensive for casual hobbyist. So I started researching for alternatives that is both capable and inexpensive and it did not take long for me to come to a rather short list of choices: BASIC Stamp and Arduino.
Since Arduino is an entirely open sourced platform (both hardware and the software) and is relatively inexpensive, I thought it might be a good starting point. (I got mine from NCK Electronics)
The latest Arduino Duemilanove board comes with an Atmel ATMega328P microcontroller. Unlike an AD/DA card which is host only, Arduino is capable of running either with host (communicating with computer via USB port) or stand-alone. This feature makes it even more attractive. On the programming side, you can either write code with the Arduino IDE using higher level functions or write against the AVR-GCC libraries directly using lower level primitives. All the coding can be done in the familiar plain-old C/C++. You can also interface the Arduino with Processing.
I setup my Arduino environment (version 18) on Ubuntu 9.10 (64 bit). Please note that if your setup is similar to mine, you might want to update your RXTX libraries (both librxtxSerial.so and RXTXcomm.jar located under Arduino lib folder to the latest version RXTX-2.2pre2) due to bugs in the previous version that cause the serial monitor to crash. Processing also uses these libraries and they need to be replaced as well if you need the serial communication capability.
So far I am very pleased with the Arduino Duemilanove after going through a few examples on the Arduino site and I am sure I will find something to write about in the near future.