HomeArduinoCore TutorialsArduino Nano Pinout

Arduino Nano Pinout – Complete Guide with Diagram

The Arduino Nano is one of those boards that just makes sense once you hold it. It is tiny, it fits directly on a breadboard, and it has almost everything the UNO has, and in less than half the size.

But because it is so compact, the pins are packed close together and it is easy to get confused. Which pin does what? Where is the SPI? Why does the Nano have 8 analog pins when the UNO only has 6?

In this guide, we are going to answer all of that. We will go through every pin on the Arduino Nano, explain what it does, and point out the key differences from the UNO along the way.

If you have not read the Arduino UNO Pinout guide yet, I recommend doing that first — a lot of what the Nano does is identical to the UNO, and understanding the UNO makes everything here much easier to follow.

And once you are done with the pinout, the Arduino Core Tutorials page is where to go next. It covers GPIO, ADC, UART, I2C, SPI, PWM, and interrupts — all with working code examples.

Arduino Nano Pinout – Complete Guide with Diagram

Arduino Nano Specifications

The Nano is small enough to fit in your pocket, but do not let the size fool you. It is a fully capable board for real projects.

Arduino Nano board top view showing all major components and layout

What is Arduino Nano?

The Arduino Nano is a compact microcontroller board built around the ATmega328P. It is the same chip used in the Arduino UNO. It measures just 45mm × 18mm, which makes it perfect for projects where space is tight.

It has a Mini-USB port on one end for programming and power. The two rows of header pins on each side make it plug directly into a breadboard, which is one of the main reasons people love using it for prototyping.

One thing worth knowing upfront — the Nano has 30 pins in total, and a few of them behave differently from the UNO. We will cover all of those differences as we go.


Key Specifications at a Glance

SpecificationDetail
MicrocontrollerATmega328P
Clock Speed16 MHz
Flash Memory32 KB (2 KB used by bootloader)
SRAM2 KB
EEPROM1 KB
Operating Voltage5V
Input Voltage (VIN)6V – 20V (recommended 7–12V)
Digital I/O Pins14 (D0 to D13)
Analog Input Pins8 (A0 to A7)
PWM Pins6 (D3, D5, D6, D9, D10, D11)
Max Current per Pin40 mA
Board Dimensions45mm × 18mm
USB ConnectorMini-USB (older versions) / Micro-USB (clones)

One thing to notice here: the Nano has 8 analog pins (A0 to A7), while the UNO only has 6. That extra A6 and A7 are unique to the Nano, and we will talk about them in the analog section.

Arduino Nano Pinout Diagram

Here is the full pinout diagram. Keep this open in a separate tab while you read through the rest of the guide — it will make everything much easier to follow.

Complete Arduino Nano pinout diagram with all 30 pins labeled and color coded

The pins fall into four main groups:

  • Power Pins — power in and out
  • Digital I/O Pins — reading and writing digital signals
  • Analog Pins — reading analog voltages
  • Communication Pins — UART, I2C, and SPI

Let’s go through them one by one.

Power Pins

The power pins on the Nano are along the edges of the board. Let’s look at each one.

Arduino Nano power pins zoomed in showing VIN 5V 3.3V GND and RESET pins labeled

VIN Pin

The VIN pin is how you power the Nano from an external supply when you are not using the USB cable. The accepted voltage range is 6V to 20V, but I would strongly recommend staying between 7V and 12V in practice.

The input voltage goes through the onboard LM1117 voltage regulator, which steps it down to 5V. If you push VIN too high, the regulator will overheat. And if it gets hot enough for long enough, it will fail.

So keep it in a reasonable range, a 9V battery or a 7.5V adapter works great.


5V Pin

This is a regulated 5V output. You can use it to power external sensors and modules that run on 5V. The available current depends on how you are powering the Nano:

  • Via USB — up to around 500 mA (from a standard USB port)
  • Via VIN — depends on the regulator, but keep total load reasonable

Do not try to power motors or high-current devices from this pin. Use a dedicated power supply for those.


3.3V Pin

This gives you a regulated 3.3V output. On the Arduino Nano, the 3.3V is sourced from the FT232RL USB-to-serial chip (on original boards). This limits the output to around 50 mA. So it is only suitable for low-power sensors and modules.

Some Nano clones use a different USB chip, which may give you slightly different current limits on this pin. Just keep it light.


GND Pins

The Nano has two GND pins, one on each side of the board. Both are connected to the same ground internally, so use whichever is more convenient for your wiring.

And just like with the UNO, always share a common ground between the Nano and any external component. If the grounds are not connected, your signals will not read correctly.


RESET Pin

Pulling this pin LOW resets the Nano, same as pressing the physical reset button. You will use this mostly in multi-board setups or when another device needs to reset the Nano programmatically.

Arduino Nano showing Mini-USB port and VIN pin as two ways to power the board

Key Points to Remember

  • Keep VIN between 7V and 12V for reliable operation
  • The 3.3V pin is limited — do not overload it
  • Both GND pins are the same internally — use either one
  • Do not connect USB and VIN at the same time

Digital I/O Pins

The Arduino Nano has 14 digital I/O pins, labeled D0 to D13. They work the same way as on the UNO. You set them as input or output using pinMode(), and you read or write them using digitalRead() and digitalWrite().

Arduino Nano digital pins D0 to D13 zoomed in and highlighted on both pin rows

How Digital Pins Work

In output mode:

  • HIGH = 5V
  • LOW = 0V

In input mode:

  • 2V to 5V = reads as HIGH
  • 0V to 0.8V = reads as LOW

Each pin can source or sink up to 40 mA, but I recommend treating 20 mA as your practical limit for day-to-day use. The total across all pins combined should not exceed 200 mA.

Want to see this in action with real code? Check out our Arduino digitalWrite() and digitalRead() tutorial.


PWM Pins (~)

Six of the digital pins support PWM output. They are marked with a tilde (~) on the board: D3, D5, D6, D9, D10, D11

Arduino Nano PWM capable pins D3 D5 D6 D9 D10 and D11 highlighted on the digital header

These are the same PWM pins as on the UNO. You control them with analogWrite(), which accepts values from 0 to 255.

PWM Pins and Their Timers

PWM PinTimer Used
D3Timer2
D5Timer0
D6Timer0
D9Timer1
D10Timer1
D11Timer2

The default PWM frequency is 490 Hz for most pins, and 980 Hz for D5 and D6. For a deeper dive into duty cycles and frequency control, see our Arduino PWM and analogWrite() guide.


Pin 13 – Built-in LED

Just like the UNO, pin D13 on the Nano is connected to the onboard LED. This makes it the easiest pin to test without using any wire.

Arduino Nano board with digital pin D13 and onboard LED highlighted and labeled

Avoid using D13 as a digital input for the same reason as the UNO — the onboard LED and its series resistor affects the pin behavior.

Key Points to Remember

  • Always call pinMode() before using any digital pin
  • Stay under 20 mA per pin in normal use
  • PWM only activates when you use analogWrite() — otherwise these pins behave like regular digital pins
  • Do not connect anything to D0 and D1 while uploading code

Interrupt Pins

Interrupts on the Nano work exactly the same as the UNO. You get two dedicated external interrupt pins and pin-change interrupt support on all digital pins.

External Interrupt Pins (INT0 and INT1)

  • INT0 → Digital Pin D2
  • INT1 → Digital Pin D3
Arduino Nano pins D2 and D3 highlighted as external interrupt pins INT0 and INT1

Use attachInterrupt() to assign a handler function to these pins. They can trigger on RISING, FALLING, CHANGE, or LOW.

These two pins each have their own dedicated interrupt vector, so you get a clean, direct response to external events without any extra checking in your code.


Pin Change Interrupts (PCINT)

All digital and analog pins on the Nano support Pin Change Interrupts. These are grouped by port, and you have to manually check which pin triggered the interrupt inside your handler function.

They are more work to set up than external interrupts, but they give you interrupt capability on every pin when you need it.

Arduino Nano pinout showing all pin change interrupt capable pins highlighted across digital and analog headers

External Interrupts vs PCINT — Quick Comparison

FeatureExternal (INT0/INT1)Pin Change (PCINT)
Available on pinsD2 and D3 onlyAll digital + analog pins
Separate ISR per pinYesNo — shared per port
Trigger modesRISING, FALLING, CHANGE, LOWCHANGE only
Ease of useEasyRequires manual checking

Stick with D2 and D3 for interrupts unless you have genuinely run out of options. For working code examples and debounce handling, see our Arduino External Interrupts tutorial.

Analog Pins

This is where the Nano is different from the UNO. The Nano has 8 analog input pins, A0 to A7, compared to 6 on the UNO.

Arduino Nano analog input header showing all eight pins A0 to A7 zoomed in

All of them are connected to the internal 10-bit ADC, so analogRead() returns a value from 0 to 1023, mapped to 0V–5V.

How Analog Pins Work

The ADC resolution gives you about 4.9 mV per step. For most sensor readings — temperature, light, pressure, potentiometers — this is more than enough.

The formula is the same as the UNO: ADC Value = (Input Voltage / VREF) × 1023

Default VREF is 5V. You can change it using the AREF pin.

For a full analogRead() walkthrough with live examples, see our Arduino ADC tutorial.


A6 and A7 — The Special Ones

Here is something important that catches a lot of people off guard.

A6 and A7 are analog-only pins. Unlike A0–A5, you cannot use A6 and A7 as digital I/O pins. They can only be used with analogRead(). There is no digital input or output capability on these two pins.

Arduino Nano pins A6 and A7 highlighted separately showing they are analog input only with no digital IO capability

So if you need extra analog inputs and you are okay giving up digital flexibility, A6 and A7 are there for you. But do not make the mistake of trying to use them as digital pins — it will not work.


AREF Pin

The AREF pin lets you supply a custom reference voltage to the ADC. Lower the AREF voltage and you increase the effective resolution for small signals.

Arduino Nano AREF pin highlighted with annotation explaining analog reference voltage

For example, applying 2.5V to AREF doubles the ADC resolution for signals in the 0–2.5V range. Just make sure your input signal never exceeds whatever voltage you set on AREF.


Using A0–A5 as Digital I/O

Just like the UNO, pins A0 to A5 can work as digital I/O pins. Just use pinMode(A0, OUTPUT) or pinMode(A0, INPUT) and they behave exactly like digital pins.

Arduino Nano analog pins A0 to A5 highlighted showing they can be used as digital IO pins

Note that this does not apply to A6 and A7. Those two are strictly analog.

Key Points to Remember

  • A6 and A7 are analog only — no digital I/O on these pins
  • A0–A5 can be used as digital I/O if needed
  • Never apply more than 5V to any analog pin
  • A floating analog pin gives noisy readings — always connect it to something

Communication Pins

The Nano supports the same three serial protocols as the UNO — UART, I2C, and SPI. The pin mapping is identical.

UART Pins (RX / TX)

  • RX → Digital Pin D0
  • TX → Digital Pin D1
Arduino Nano pins D0 RX and D1 TX highlighted for UART serial communication

UART is what handles serial communication between the Nano and your PC via the USB cable. On original Arduino Nano boards, this goes through an FT232RL USB-to-serial chip. Many cheaper clones use a CH340G chip instead — which works fine, but you may need to install the CH340 drivers manually on Windows or macOS.

Same rule as the UNO — disconnect anything on D0 and D1 before uploading code, or you will get upload errors.

When to Use SoftwareSerial

If you need a second UART — for example, to talk to a GPS module while still sending debug output to the Serial Monitor — use the SoftwareSerial library. It lets you emulate UART on any two digital pins. It works well at lower baud rates but is not recommended for anything above 115200.

We have a full Arduino UART tutorial covering send, receive, and practical serial examples.


I2C Pins (SDA / SCL)

  • SDA (Serial Data) → Analog Pin A4
  • SCL (Serial Clock) → Analog Pin A5
Arduino Nano analog pins A4 SDA and A5 SCL highlighted for I2C two wire communication

Same as the UNO. I2C lets you connect many devices on just two wires, each with its own unique address. Use the Wire library to handle I2C communication.

For bus scanning, master/slave setup, and troubleshooting, see our Arduino I2C tutorial.

Common I2C devices you can connect to the Nano:

  • OLED displays (SSD1306)
  • RTC modules (DS3231)
  • IMU sensors (MPU-6050)
  • I2C LCD displays
  • Pressure sensors (BMP280)

If you use A4 and A5 for I2C, you lose them as analog inputs. Keep that in mind when planning your project.


SPI Pins (MOSI, MISO, SCK, SS)

  • MOSI → Pin D11
  • MISO → Pin D12
  • SCK → Pin D13
  • SS → Pin D10
Arduino Nano SPI pins D10 SS D11 MOSI D12 MISO and D13 SCK highlighted

SPI is the fastest of the three protocols. Use it when you need to talk to high-speed devices like SD cards, TFT displays, or nRF24L01 wireless modules.

One thing to keep in mind — D10 must always be configured as an output when using SPI, even if you are not using it as the SS pin. If D10 is set as an input and it goes LOW, the ATmega328P will automatically switch to SPI slave mode and your code will stop working correctly. This is a common source of confusion.

ICSP Header

The Nano also has a 6-pin ICSP header on the board. It exposes MOSI, MISO, SCK, RESET, VCC, and GND.

Arduino Nano ICSP header zoomed in and labeled showing MOSI MISO SCK RESET VCC and GND pins

This is used to flash the bootloader onto the chip using an external programmer. You will probably never touch it unless you replace a damaged chip or accidentally erase the bootloader.

Timer and Input Capture Pins

A few pins on the Nano tie directly into the hardware timer modules inside the ATmega328P. These are the same as the UNO.

Timer/Counter Pins (T0 and T1)

  • T0 → Digital Pin D4 (external clock for Timer0)
  • T1 → Digital Pin D5 (external clock for Timer1)
Arduino Nano pins D4 T0 and D5 T1 highlighted as external clock inputs for Timer0 and Timer1

When you configure a timer to use an external clock, it counts pulses coming in on the T0 or T1 pin instead of the internal 16 MHz oscillator. This is useful for frequency counting, counting pulses from encoders, or using an external time base.

Input Capture Pin (ICP1)

  • ICP1 → Digital Pin D8
Arduino Nano pin D8 highlighted as ICP1 input capture unit pin for precise pulse timing

When the ICP1 pin detects a signal edge, the hardware automatically saves the current Timer1 value to a register. No CPU involvement, no delay — it is instantaneous.

This is really useful for measuring signal pulse widths or reading sensors like ultrasonic modules more accurately than pulseIn() allows.

Arduino Nano vs Arduino UNO

Since a lot of people come to the Nano after working with the UNO, here is a quick side-by-side of the important differences.

Arduino Nano and Arduino UNO boards side by side showing size difference
Arduino Nano and Arduino UNO boards side by side showing size difference
FeatureArduino UNOArduino Nano
Size68.6mm × 53.4mm45mm × 18mm
Analog Pins6 (A0–A5)8 (A0–A7)
A6 and A7Not availableAnalog-only (no digital)
USB ConnectorType-BMini-USB (or Micro-USB on clones)
Breadboard FriendlyNoYes
MicrocontrollerATmega328PATmega328P
PWM Pins66
Digital I/O Pins1414
3.3V SourceOnboard regulatorFT232RL chip (50mA max)
ICSP HeaderYesYes

The core hardware is identical. The Nano just packages it smaller, adds two extra analog-only pins, and removes the Type-B USB port in favour of Mini-USB.

Arduino Nano Pinout Summary Table

Here is the full reference table for all Arduino Nano pins.

Complete Arduino Nano pinout diagram with all 30 pins labeled and color coded

Digital Pins

Arduino PinATmega328P PortPWMAlternate FunctionDescription
D0PD0RXUART Receive
D1PD1TXUART Transmit
D2PD2INT0External Interrupt 0
D3PD3INT1External Interrupt 1
D4PD4T0Timer0 External Clock
D5PD5T1Timer1 External Clock
D6PD6PWM Output
D7PD7General Purpose Digital I/O
D8PB0ICP1Input Capture Unit
D9PB1PWM Output
D10PB2SSSPI Slave Select
D11PB3MOSISPI Master Out Slave In
D12PB4MISOSPI Master In Slave Out
D13PB5SCK / LEDSPI Clock / Onboard LED

Analog Pins

Arduino PinATmega328P PortDigital I/O?Alternate FunctionDescription
A0PC0YesAnalog Input / Digital I/O
A1PC1YesAnalog Input / Digital I/O
A2PC2YesAnalog Input / Digital I/O
A3PC3YesAnalog Input / Digital I/O
A4PC4YesSDAI2C Data / Analog Input
A5PC5YesSCLI2C Clock / Analog Input
A6ADC6NoAnalog Input only
A7ADC7NoAnalog Input only
AREFAREFAnalog Reference Voltage

Power Pins

PinDescription
VINExternal supply input (6V–20V, recommended 7–12V)
5VRegulated 5V output
3.3VRegulated 3.3V output (max ~50 mA from FT232RL)
GNDGround (2 pins, both connected internally)
RESETPull LOW to reset the microcontroller

Arduino Nano Pinout: Frequently Asked Questions

Conclusion

The Arduino Nano packs a lot into a very small package. Same ATmega328P chip as the UNO, same digital and communication pins, same PWM — but smaller, breadboard-friendly, and with two extra analog-only pins.

Once you understand the pinout — especially the A6/A7 limitation and the importance of keeping D10 as output for SPI — working with the Nano becomes very straightforward.

If you are moving over from the UNO, most of your knowledge carries over directly. The Nano is a natural next step, and it opens the door to building much more compact and portable projects.

Browse More Arduino Core Tutorials

1 2

About the Author
Arun Rawat
Arun Rawat
Embedded Systems Engineer · Founder, ControllersTech

Arun is an embedded systems engineer with 10+ years of experience in STM32, ESP32, and AVR microcontrollers. He created ControllersTech to share practical tutorials on embedded software, HAL drivers, RTOS, and hardware design — grounded in real industrial automation experience.

Subscribe
Notify of

0 Comments
Newest
Oldest Most Voted
×

Don’t Miss Future STM32 Tutorials

Join thousands of developers getting free guides, code examples, and updates.