This is a simple ISP programmer I made for the Arduino Uno, using ArduinoISP. It can load code onto the ATtiny series, ATmega328P, and other compatible microcontrollers. The LED next to each socket is for software pin 0 on the ATtiny85, ATtiny84, and ATmega328 for easy testing.
To use the programmer:
1. Load the ArduinoISP sketch on the Arduino Uno found at File > Examples > ArduinoISP.
2. Connect the shield to the top of the Arduino.
3. Select the appropriate microcontroller and clock speed from the menu at Tools > Board.
4. Plug in the microcontroller (one at a time) that you'd like to program into its corresponding DIP socket.
5. Sketch > Upload Using Programmer.
If everything's working, the LED next to the 8 pin DIP socket should pulse when you hit Upload. Once it stops flashing, the code has finished loading. IMPORTANT: If you're programming an ATmega328P with this programmer, you must have your settings set for the internal oscillator (the default). Otherwise you run the risk of bricking your chip!
After programming an ATtiny85, ATtiny84, and ATmega328 separately with the same blink sketch, I put all of them into their sockets and turned on the power. See how the LEDs aren't in sync? This illustrates precisely why an external oscillator is necessary for accurate timing.
If you would like to purchase an assembled programmer, feel free to shoot me a message.