Diecimila in action
Well I am pleased to announce that in between cleaning up the bombsite that I like to call my house and wandering around everywhere looking for acrylic sheeting, I actually managed to find some time to play around with my new Arduino Diecimila. First impressions? Very nice!
Hardware
The board itself is actually smaller than I expected and is a little bit shorter than a pack of cards (the universal unit of electronics measurement :). The Diecimila is run by an Atmel ATmega168 containing 1K of SRAM and 16K of Flash memory (of which 2K is taken up by the bootloader - more on that later). Pinwise there are 14 digital IO pins available and 6 of these can be used as analog outputs (PWM). The board also contains 6 analog input pins and a USB interface to allow the board to be programmed and talked to via USB.
Bootloader
In a similar fashion to the UBW (Universal Bit Whacker) kits I previously bought from SparkFun, Arduino boards use a bootloader to enable programming without a hardware programmer. When the board is first powered up the bootloader kicks in and then sits around watching the USB port for a predetermined amount of time. If properly formatter data arrives on the port within that time then the bootloader will use the data to re-program the rest of the chip. If data does not arrive within the window then the bootloader executes whatever program currently exists in the rest of the chip’s flash (the last successfully burnt program).
What this all means is that programming the Arduino hardware is nearly as simple as programming/running a normal software program. The only thing different is the syntax and the result. Which reminds me…
Wiring
A slightly quirky aspect of the Arduino platform is that it uses the Wiring language as its development language. Wiring, and it’s graphically oriented software sibling Processing, are very similar to C/C++ in syntax and anyone who knows either will probably not even notice the difference at first.
According to the Wiring Language page:
"The Wiring environment is written in C and C++. Programs written in
Wiring are also translated to C++ and then run as C++ programs in the
Wiring I/O board.
Large distinctions between Wiring and C/C++ are the Wiring libraries
and a simplified programming style that doesn’t require users to
understand more advanced concepts like classes, objects, pointers
(while still making them accessible for advanced users). Such technical
details must be specifically programmed in C/C++, but are integrated
into Wiring, making programs shorter and easier to read."
I have found Wiring to be nice to work with so far and it has a good selection of helper libraries to get your projects running quickly (like the servo library for instance). I will probably write a lib for the SparkFun 8×8 RGB matricies I purchased a while ago to enable coloured sprites.
I am not so sure about the Arduino Wiring IDE itself. It seems a bit lacking and is written in Java which makes me break out in hives. This happens when I use any IDE that isn’t Visual Studio 2005 though so maybe I am not the best judge.
The good thing about the Arduino is that below all of the Wiring etc it is still an ATmega168 and the board has a handy in circuit programming header that you can attach a hardware programmer to if you want to wipe the chip and replace it with custom stuff.
Conclusion
If you want a board to get your projects up and running quickly then I highly recommend picking up an Arduino. I had LEDs flashing and fading about 10 mins after I started on my XP machine and 5 of those were probably spent downloading the software. I had more trouble get it to work on Vista but that was because the version of WinAVR packaged with the software is out of date. After downloading the latest WinAVR version it was all good (the trick is to install the latest WinAVR stuff into the Arduino’s /tools/avr folder - not replace it entirely).
I bought my Arduino from Little Bird Electronics (I don’t have any association with them apart from liking their site design) for about $44 bucks but because the whole shebang (hardware and software) is open-source you can even build your own boards and program them yourself!
I am planning on using the new board as the brains of my next robot. Hook up a couple of servos, some sensors and a matrix display as a face and I should have a cool little minion to do my bidding!
Below is a crappy vid I made showing the new board hooked up to one of my RGB matricies. ![]()
good afternoon apologize for the trouble
I think its excellent explanation but I would ask if you design this matrix
you do not help me, as I design a matrix rgb, or elements that I have to develop the control circuit for a matrix of 8×8, thanks
Hi Juan, I think I understand your question
I bought the RGB matrix and the matrix backpack controller from SparkFun Electronics.
The RGB matrix is just a simple grid of RGB leds but if you attach the backpack controller to it you can control it easily using an Arduino or AVR or any other microcontroller that can speak SPI (a serial protocol).
In the video above I had it set up so it simply calculated some colour values and then sent them to the RGB matrix (via the backpack controller). The values I calculated resulted in the coloured lines seen in the vid. It’s all pretty straightforward
I started writing a C# program that allowed me to draw animated graphics and then send it to the RGB matrix but it isn’t finished 100% yet. Let me know if you want the source or anything.
Here are some links that might help you get started:
* Sparkfun RGB LED Matrix + Serial Backpack - http://www.sparkfun.com/commerce/product_info.php?products_id=760
* Code to control the RGB matrix serially - http://www.arduino.cc/playground/Code/RGBBackpack
Let me know if you have any problems and I’ll try to help you out!
ash