Arduino vs. ATMega168 Chip Pinouts

The Arduino pin names are silkscreened right on the board, but sometimes you must know the corresponding ATMega168 pin name. I printed out The Fine Manual and penciled in the Arduino names, but that’s getting smudgy.

Herewith, the ATmega168 pinout with neatly printed Arduino pin names.

Arduino vs ATMega168 chip pinouts
Arduino vs ATMega168 chip pinouts

[Update:Turns out there’s an Official Version.]

Sometimes, you also must know the relation between hardware Timers and PWM output pins:

OC0A PWM6 PWM3 OC2B
OC0B PWM5 PWM5 OC0B
OC1A PWM9 PWM6 OC0A
OC1B PWM10 PWM9 OC1A
OC2A PWM11 PWM10 OC1B
OC2B PWM3 PWM11 OC2A

4 thoughts on “Arduino vs. ATMega168 Chip Pinouts

  1. A minor point to add to this is that the ATmega48, ATmega88, and ATmega328 have the same pinout as the ATmega168 and can be used in Arduino-type boards. The differences are in memory size.

    For instance if you run out of code space in the Arduino, the ‘168 can be popped out and replaced with the ‘328. You will need an ISP programmer to stuff the correct bootloader into the ‘328, though.

    ATmega48 = 4k flash, 256 bytes EEPROM, 512 bytes RAM
    ATmega88 = 8k flash, 512 bytes EEPROM, 1024 bytes RAM
    ATmega168 = 16k flash, 512 bytes EEPROM, 1024 bytes RAM
    ATmega328 = 32k flash, 1024 bytes EEPROM, 2048 bytes RAM

  2. Further, and a KEY point when trying to copy something like a makerbot extruder controller, the SMT version of the same chip has an additional 2 more analog inputs and of course those are the ones used for the HBP temp. So in other words, you either edit the firmware source or you must use an Arduino Pro from Sparkfun and wire the additional analog inputs which are not brought out to the headers. Also curious to see if it’s possible on the even newer SMT versions of the Arduino UNO.

    1. and of course those are the ones used for the HBP temp

      Perhaps using those pins simplified the PCB layout? We’ll never know.

      But, still …

Comments are closed.