A Comprehensive Guide to Arduino Nano Pinout

The Arduino Nano is a compact, breadboard-friendly microcontroller board based on the ATmega328P, designed for a wide range of embedded systems and electronics projects. While its small size and low power consumption make it ideal for prototyping, automation, and IoT applications, understanding its pin configuration is essential for maximizing its capabilities.

This article will explore the Arduino Nano’s pinout, explaining each pin’s function and providing practical insights on how to effectively use them in your DIY projects—whether you’re working with digital I/O, analog inputs, power supply, or special functions.

Arduino Nano pinout diagram

Power Pins

The VIN (Voltage Input) pin provides an external power source to the Arduino Nano. When the board is powered through a regulated USB connection, the VIN pin can act as an output, supplying power to other components. However, when an external power source such as a 9V battery or an adapter (7–12V) is connected to VIN, it bypasses the USB power and directly powers the onboard voltage regulator, which then provides the required 5V to the microcontroller.

NOTE:

The voltage must be within the safe input range; exceeding 12V can overheat the regulator, potentially damaging the board.

The 5V pin is an output pin that supplies regulated 5V power to external peripherals such as sensors, displays, and communication modules. This power comes from either the USB connection or the onboard voltage regulator when using VIN. However, if the Nano is being powered by USB, the total current available on the 5V pin is limited by the USB port’s capability, typically around 500mA for standard USB 2.0 ports. Drawing excessive current from this pin can cause instability in the circuit or even reset the Arduino.

The 3.3V pin is another power output, but unlike the 5V pin, it provides a regulated 3.3V for low-voltage sensors and modules. The current supply from this pin is quite limited, usually around 50mA, since it is generated from the onboard voltage regulator. This means it is not suitable for high-power components but is useful for interfacing with sensors like BMP280 or MPU6050, which operate at 3.3V logic levels.

The GND (Ground) pins are essential for completing the electrical circuit. The Arduino Nano provides multiple GND pins, allowing for easy wiring of multiple components. These pins serve as the reference voltage (0V) and must be connected to the ground of any external circuit to ensure proper operation. If the ground connection is missing, components may not work correctly or might behave unpredictably.

Arduino Nano Power Pinout

Digital I/O Pins

The Arduino Nanos has 14 digital pins, labeled D0 to D13, which can be used for general digital communication. These pins are positioned on the two longer sides of the board. The pins can be assigned as inputs devices or outputs as per the circuits needs.

When a digital pin is set as an input, it is used to read the state of an external component, like a switch or a sensor. Whether the signal received at the pin is counted as HIGH (1) or LOW (0) is determined by the voltage level.

When a pin is configured as an output, it can provide a HIGH (5V) or LOW (0V) to components connected to it. This is typical for driving LEDs, relays, buzzers, and other actuators. While a single pin can output a maximum current of around 40mA, it is recommended to keep the current output at 20mA’s safe level to avoid damaging the microcontroller.

Arduino Nano Digital IO pinout

In Arduino Nano, many digital input pins have internal pull-up resistors, which can be enabled in software by setting the pin mode to INPUT_PULLUP. These resistors, typically around 20kΩ to 50kΩ, ensure that when a pin is not actively driven by an external circuit, it remains at a HIGH state rather than floating.

In a simple LED control setup, a digital pin set as an output can be used to turn an LED on or off. If pin D9 is configured as an output, setting it to HIGH will supply 5V, lighting up the LED. Setting it to LOW will turn the LED off. A current-limiting resistor (220Ω–1kΩ) is usually placed in series with the LED to prevent excessive current draw.

PWM Pins

PWM functionality is available on specific digital pins: D3, D5, D6, D9, D10, and D11. These pins are marked with a tilde (~) symbol in the pinout diagram, indicating that they support PWM output and simulate analog output using digital signals. The microcontroller’s ATmega328P chip has three timers (Timer0, Timer1, and Timer2), each associated with specific PWM-capable pins. When a PWM signal is required, the timer rapidly toggles the pin between HIGH and LOW states at a set frequency, typically 490Hz or 980Hz, depending on the pin.

Arduino Nano PWM pinout

Analog Input/Output Pins

The Arduino Nano is equipped with eight analog input pins (A0–A7). These analog pins provide a 10-bit resolution, meaning the input voltage is converted into a digital value ranging from 0 to 1023. This allows precise measurement of voltage changes with a resolution of (5V / 1024) ≈ 4.88mV per step. For instance, if a sensor outputs 2.5V, the Arduino Nano’s analog pin will register it as approximately 512 out of 1023, making it possible to interpret and process sensor data with high accuracy.

Arduino Nano Analog InputOutput pinout

In a temperature sensor setup (e.g., LM35), the sensor outputs a voltage proportional to temperature. The analog pin reads this voltage and converts it into a digital value, which is then used to calculate the actual temperature using a predefined formula. For instance, if the LM35 outputs 0.5V at 50°C, the Arduino will read a value around 102 (0.5V / 4.88mV per step), and this value can be converted back into degrees Celsius in the code.

For a potentiometer application, turning the knob changes the resistance, which in turn alters the voltage supplied to the analog pin. If the potentiometer is connected between GND and 5V, rotating it fully in one direction may result in 0V (reading = 0), while rotating it in the opposite direction may give 5V (reading = 1023), with all intermediate values representing different positions. This is commonly used for volume controls, brightness adjustments, or servo motor position settings.

Communication Pins

The Arduino Nano is equipped with multiple communication interfaces to exchange data with other devices, including UART (TX, RX), I2C (A4, A5), and SPI (D10, D11, D12, D13).

Arduino Nano Communication pinout

UART communication

The Nano has two dedicated pins for UART communication:

  • TX (D1): Transmit data
  • RX (D0): Receive data

UART transmits data asynchronously, meaning it does not use a clock signal. Instead, both devices must agree on a baud rate (speed of communication), typically 9600 bps (bits per second) for standard applications. Data is sent in packets that include start bits, data bits, parity (optional), and stop bits to ensure correct transmission.

However, its main drawback is that it supports only one-to-one communication and is relatively slow compared to modern protocols.

I2C– Interfacing with Sensors

It uses two pins:

  • SDA (A4): Serial Data Line (for transferring data)
  • SCL (A5): Serial Clock Line (for synchronizing communication)

Unlike UART, I2C is a synchronous protocol, meaning it uses a clock signal to coordinate data transmission. It follows a master-slave architecture, where a single master (e.g., Arduino Nano) can communicate with multiple slave devices (e.g., sensors, displays, EEPROMs) using unique addresses. The master generates the clock signal, and data is transmitted in packets, including device addresses and acknowledgment bits to ensure proper communication.

UART was limited to one-to-one connections, so I2C enables one-to-many communication setup using only two wires.

SPI– Communication with Modules

It operates using four main pins:

  • SCK (D13): Serial Clock (generated by the master)
  • MOSI (D11): Master Out, Slave In (data sent from master to slave)
  • MISO (D12): Master In, Slave Out (data sent from slave to master)
  • SS (D10): Slave Select (used to enable a specific slave device)

SPI is a synchronous protocol, meaning it relies on a clock signal. However, it differs by supporting full-duplex communication, where data can be sent and received simultaneously. It also enables multiple slave devices using the SS pin, but unlike I2C, where devices have addresses, each SPI device requires a separate SS pin for selection.

SPI is used in applications, requiring high-speed data transfer, such as SD card modules, TFT displays, and wireless communication modules (NRF24L01, LoRa).

Reset and Other Special Pins

Arduino Nano Reset and Other Special Pins

RST (Reset Pin)

The RST pin is used to manually or programmatically restart the Arduino Nano. It is connected to the ATmega328P microcontroller’s RESET line and allows the board to return to its initial state, stopping any running code and restarting execution from the beginning of the program.

It is internally connected to a pull-up resistor, which keeps it HIGH (inactive) under normal conditions. When the RST pin is pulled LOW (connected to GND) for a short moment, the microcontroller resets and reloads the program stored in flash memory.

AREF (Analog Reference Pin)

The AREF pin is used to set a custom reference voltage for the analog-to-digital converter (ADC). By default, the Arduino Nano’s ADC uses 5V as the reference voltage (when powered via USB) or 3.3V (when using a regulated 3.3V power source).

It is internally connected to the ADC reference voltage selection circuit. For example, If a sensor outputs signals in the 0V–2V range, using the default 0V–5V ADC reference results in lower resolution (each step = 4.88mV). By setting AREF to 2V, the ADC steps become finer (2V / 1024 ≈ 1.95mV per step), improving measurement precision. 

NOTE:

When using an external reference voltage, the command analogReference(EXTERNAL); must be included in the code before calling analogRead().

Ending

The Arduino Nano is a powerful yet compact board that brings a wealth of flexibility and possibilities for both beginners and experienced makers alike. Its versatile pinout makes it suitable for a wide range of applications, from simple sensor projects to more complex systems involving communication protocols like UART, I2C, and SPI. By understanding the functionality of each pin, you can maximize the potential of the Arduino Nano, whether you’re designing DIY electronics, creating automation systems, or prototyping IoT devices.

By combining your knowledge of the pin configuration with your creativity, you can bring your electronic ideas to life with ease. The Arduino Nano is more than just a tool; it’s a gateway to experimenting, learning, and developing exciting projects that can make a real-world impact. So, dive in and explore all that the Arduino Nano has to offer!0

You Might Be Interested

Arduino MQ-3 Alcohol Sensor Project
Arduino MQ-3 Alcohol Sensor Project

Creating an alcohol sensing project with an MQ-3 sensor and Arduino allows for accurate alcohol concentration monitoring in environments like bars and factories. The MQ-3 sensor’s high sensitivity to alcohol,

How to Download and Install Arduino IDE
How to Download and Install Arduino IDE

Learn how to easily download and install the Arduino IDE on Windows, Linux, and macOS! This step-by-step guide will walk you through the entire process, from downloading the software to

Arduino DS18B20 Temperature Sensor Project
Arduino DS18B20 Temperature Sensor Project

This project demonstrates the construction of a simple thermometer using an Arduino and a DS18B20 digital temperature sensor. The temperature data is displayed in both Celsius and Fahrenheit on a

A Step-by-Step Guide to Using LVGL with ESP32
A Step-by-Step Guide to Using LVGL with ESP32

This guide illustrates how to integrate LVGL with the ESP32, enabling the creation of engaging graphical user interfaces for embedded systems. By configuring libraries and writing code, developers can enhance

arduino smart robot car
Arduino Smart Robot Car DIY Tutorial

In this project, TechSparks will use Arduino to create a smart car project that can achieve Bluetooth remote control, obstacle avoidance, and line tracking functions. We will showcase the required

DIY Touch-Activated LED Project
Arduino Touch-Activated LED Project

This article showcases a beginner-friendly project that utilizes Arduino and touch-sensitive technology to control LED lights. The project involves building a simple circuit and programming the Arduino board to detect

Scroll to Top