Some quick thoughts about the Arduino Duemilanove board.
I’ve got one of these boards like a month ago, and I can tell you so far that I like many things about it. First of all the simplicity of plugging the USB cable and get things working almost instantly. I don’t think is necessary to explain anything in this blog since the Internet is plenty of Arduino tutorials, examples, projects, documents, forums, etc. If you just got one of this boards, your starting point should be here: http://arduino.cc/en/Guide/HomePage
So, first thing you will do is download the Arduino software, install it and try to upload one of the sample programs already included like the blinking led, using the provided IDE.
If you are impatient like me, you will probably read the first page and then jump to the board and try to connect components, like a led or maybe a 16×2 LCD display, etc. and you will quickly discover that it IS really easy to use: the core Arduino API already have functions to handle LCD displays, interruptions are trivial with “attachInterrupt”, then with the “shiftOut” function you can extend your ports by attaching one or more 74HC595, and many other features.
On the other hand, I don’t like the IDE, maybe because I’m adult?. If you are used to any other IDE, like eclipse, or notepad.exe (he he), you may not like the IDE too. I mean, if you select a text and press Ctrl+F, what do you expect to appear in the search box? well, according to this IDE, nothing or the text from the last search. Not to talk about the annoying (Java?) bug that doesn’t allows you to use dead keys with some specific combinations of JDK and OS.
Then you have the Sketches concept. Sketches, are files with .pde extension which happens to be actually C++ files. Before building this file, the IDE instruments it to add a core include “WProgram.h” and prototypes all your functions. Then the IDE will link with the core files which already includes a very simple main() that calls the init(), setup() and loop() functions, as you can see in the core Arduino source code main.cpp:
A more advanced test
I’ve been able to convert the Arduino into an USB keyboard with a few external components following the example from www.practicalarduino.com which uses the Arduino V-USB library which in turns uses the Virtual USB Port for AVR microcontrollers. This will be the base for one of my upcoming project involving brute-force attack BIOS hacking :).
Finally, I would like to recommend this shield if you need an ISP programmer: The Mega-ISP Shield.
I made it, it works and is great! really. With this shield you can convert your Arduino into an ISP programmer by loading the mega-isp “sketch”.
As a side note, you will notice that you won’t be able to create a shield using the regular perforated boards, because of the pin alignment. Unless you only need pins 1 to 7 Xor 8 to 13 from the D port.