While manufactured Arduinos are hardly expensive, you can go even cheaper by using the Arduino development board as a microcontroller programmer. Once you’ve downloaded your sketch, remove the microcontroller chip and transplant it into a solderless breadboard or other circuit.
The chip runs under 5 volts (4.5V minimum, 5.5V maximum), and for operation needs only a 16-MHz crystal and two 22-pF capacitors. You can even do away with the caps if you use a 16-MHz three-pin resonator and don’t need the extra precision of a crystal oscillator.
Use an IC extractor tool to prevent damage to the microcontroller pins when you remove the chip from the Arduino board. The tool grips the ends of the chip and allows you to pull it straight out of its socket.
There isn’t even an absolute requirement that you use a microcontroller with the Arduino bootloader preinstalled. You can use the Arduino development environment and download your programs directly into the chip. This restores the flash memory space previously taken up by the Arduino bootloader. It also avoids the several seconds’ delay that occurs when the Arduino is first powered up; this delay is caused by the bootloader waiting to see if a new program is about to arrive.
Programming without the bootloader requires suitable hardware, such as the Atmel STK500, the AVR-ISP, or a homebrew parallel-port programmer. The Arduino Uno has a suitable in-circuit serial programming (ICSP) header already on it. Just attach the six-pin cable from your programmer to the ICSP header on the Arduino.
Just so you know, serial programming is just one method of burning software into a microcontroller. Many stand-alone programmers like the STK500 also support what’s known as high-voltage programming, which permits resetting certain software fuse bits. These bits control special behaviors of the chip and are documented in the Atmel ATmega datasheets. For most jobs an ICSP programmer will do just fine.