Connections from UNU R3 to program separate 328?

The Uno has a USB to TTL serial converter chip on board. You'll be using this chip to communicate directly between your computer and the ATmega328P on the breadboard. You will not be using the ATmega328P on your Uno at all, and in fact you must make sure there isn't a sketch running on the Uno that will produce serial output, otherwise this will interfere with communication between the computer and the ATmega328P on the breadboard.

The connections are:

Uno | ATmega328P on the breadboard

0 | PD0
1 | PD1
5V | VCC
GND | GND

Now, if you understand serial connections, this might seem wrong because pin 0 on the Uno is marked "RX" and PD0 is RXD while pin 1 on the Uno is marked "TX" and PD1 is TXD. We always want to make a RX-TX, TX-RX connection because RX stands for "receive" and TX stands for "transmit". However, the pin markings on the Uno refer to the ATmega328P, which you aren't using. The USB to TTL serial converter on the Uno is connected RX-TX, TX-RX, so pin 0 on the Uno is actually connected to the TX pin of the USB to TTL serial converter and pin 1 connected to RX on the converter. So you see you are actually making an RX-TX, TX-RX connection.

While it is possible to use an Uno as a USB to TTL serial converter, it's not terribly convenient. A dedicated USB to TTL serial converter is a very useful tool and you can get them for around $1 on eBay if you don't mind waiting for the shipping from China. It's much better to use an Uno as an Uno. When shopping for a USB to TTL serial converter, I recommend that you get one which uses the standard "FTDI header" pinout:

  • DTR or RTS
  • RX
  • TX
  • VCC
  • CTS
  • GND

That will allow you to plug the adapter right in to an Arduino Pro Mini, or many other boards that use this standard pinout. If you get an adapter with a non-standard pinout, you would need to use a mess of jumper wires to adapt it to the standard pinout. Some adapters don't even break out the DTR or RTS pin, without which you will need to manually reset the microcontroller at just the right time on every upload.