It's a crazy cool microcontroller, but let's face it -- it's way overkill for most applications. Nothing I've built with the Arduino has come close to using all 23 inputs/outputs.
You could save some money by building your own board to program the Atmega328P like I did in a previous post, but it's still often overkill to waste that many I/Os.
Enter the Attiny85:
It's Atmel's miniature version of the 328P, sporting only 6 general I/Os and 8kB of flash memory (but the same number of working registers). This is plenty of room for a lot of small projects, so I picked up a few of them.
So, how do you program them? We program the larger Atmega328P chips with the Arduino Uno board, and as it turns out you can use the same board to program the Attiny85s, with a bit of work.
Here's the guide I used to configure the Uno to act as an ISP (In-System Programmer) to program the 'tiny, but I wanted to build something more permanent -- like a shield that I could attach to the Uno and quickly pop in/out the 'tiny processors.
Here's what I came up with:
It connects to the Uno's pins via some male headers, and ends up snapping on to look something like this:
The Attiny85 fits into the IC holder:
And after some configuring you can program it just like its larger brother. I tested it with the easy Blink program:
At some point I'll build something a bit more complicated with it, but...