Max Maxfield has been meaning to learn the Arduino for ages. Every time he's been poised to leap into action, something has distracted him, but now it's crunch time.
I'm tremendously enthused about playing with Arduino-powered robots equipped with machine vision, controlling Arduino-powered hexacopters, and all sorts of other stuff.
I typically have a number of hobby projects going at any one time. Many of them require one or more microcontrollers. For one reason or another, instead of picking a particular microcontroller and sticking with it, I've flitted from one solution to another. My most recent fling was playing with a PICAXE controller board based on a Microchip PIC; I programmed it using a form of BASIC.
The PICAXE was a lot of fun, but it's too low-level for what I need. At the other end of the spectrum of my hobby projects would be things like the Raspberry Pi, but that would be overkill for a lot of my applications. Also, if the truth be told, I'm not really comfortable working with the Linux operating systems and drivers and whatnot that you find with beasts like the Raspberry Pi. My comfort zone is much more along the lines of creating simple programs that run directly (bare metal) on the processor and talk directly to the outside world through the microcontroller's IO pins.
From everything I've heard, the Arduino would be an ideal platform for my projects. In fact, I've been meaning to investigate this scalawag for ages. However, every time I've been poised to leap into action, something has occurred to distract me. But now it's crunch time.
There are several reasons I've been roused into activity. It all started with the Huntsville Hamfest I attended a couple of weeks ago. As I always say, show me a flashing LED, and I'll show you a drooling man (yours truly). One of the booths entranced me with a 4x4x4 3D tri-color LED cube in the form of a do-it-yourself kit.
I've always wanted to experiment with one of these scamps. I've got all sorts of ideas, such as displaying the actions of a small Turing machine and presenting a simple 3D Game-of-Life. The clincher was when the guy at the booth told me the main controller was Arduino compatible. This made me think, "Here's the thing that will finally drive me to learn the Arduino."
Casting caution to the winds, I purchased the little beauty. When I returned home and unpacked everything, I discovered that the assembly instructions were wonderfully documented in the most excruciating detail. However, there was absolutely zero documentation when it came to programming the rascal. That's not strictly true. The last line of the assembly documentation did cheerfully say, "Now you are ready to program your cube." You can only imagine how happy this made me feel.
This is where I ran into a slight problem. I checked for software-related discussions on the kit supplier's website. Unfortunately, while skimming through the documentation, I read the URL as "andromance.com." I do recall thinking, "That's a bit strange." Shrugging my shoulders, I pressed the Go button and was presented with an image of a young man wearing little more than a pair of very colorful underwear, leaping in the air, and playing a guitar. Returning to the documentation, I realized that I'd mistakenly added a letter. The URL was actually andromace.com.
This is not to say that tracking down the right URL helped matters. Both sites provided pretty much the same amount of information on programming my 3D LED cube (zero). But we digress.
The controller supplied with my LED cube kit is the Rainbowduino LED Driver Platform from SeeedStudio.com (yes, three Es), shown below. This is a nice unit that can drive 192 uni-colored LEDs or 64 tri-color LEDs. In the latter case, you can arrange the LEDs as an 8x8 matrix or a 4x4x4 cube.
Building the 3D LED cube and learning how to program the Rainbowduino are projects in their own right, so we shall leave these topics for future columns. Suffice it to say that, following a couple of mammoth soldering sessions, my cube is well on its way. Also, I've managed to get a simple snake program running on the Rainbowduino driving an 8x8 LED matrix, as shown below:
But all the above is primarily intended to get me up and running. Did you see Caleb Kraft's column on the Pixy vision sensor? It is the subject of a mega-cool Kickstarter project that still has three days to go as I pen these words. The great thing is that the Pixy connects directly to the Arduino and other controllers. Check out the video on the Kickstarter page and the video below. They hint at possibilities that will blow your mind.
Of course, I couldn't help myself. I want a machine vision-enabled robot like this to play with, so I made my pledge, and now I'm anxiously awaiting my Pixi and associated tilt system. But what should I use for my robot base? This is one of the things we'll talk about in my next blog.
But wait, there's more. I ran across another mega-cool Kickstarter project for little nanocopter (quadcopter and hexacopter) drones that you can control via your smartphone or tablet.
Once again, the controller board used in these beauties is Arduino compatible. Also, the folks running this project say you'll be able to access the source code and tweak it as you like. I couldn’t help myself. I pledged for a hexacopter. (What can I say? I'm a weak-willed man.) I cannot wait.
All of which brings us back to the point: I really need to learn how the program the Arduino. What books and/or evaluation kits should one purchase? This will be the topic of my next blog.