Arduino Pro Mini

The smallest, cheapest way to put an Arduino into a finished project. The Arduino Pro Mini runs the same ATmega328P as the Uno and Nano, but strips away the USB — you program it with a cheap FTDI adapter. This guide covers the full board anatomy, a complete pinout with every pin explained, exactly how to upload code over FTDI, the 5V vs 3.3V versions, a Pro Mini vs Uno comparison, and code and mini-projects.

Complete Learning Path — Arduino Pro Mini

From board anatomy and the ATmega328P, to a full pinout with every pin detailed, FTDI programming, power, digital & analog I/O, the buses, Pro Mini vs Uno, code and mini-projects

What is the Arduino Pro Mini?

The Arduino Pro Mini is the bare essentials version of the Arduino: the same 8-bit ATmega328P as the Uno and Nano, on the smallest, cheapest board possible — with no USB and almost nothing else.

That makes it perfect for permanent, space-tight builds where you don't need a USB port after uploading. To program it, you plug in a cheap FTDI / USB-serial adapter.

Labelled Arduino Pro Mini board anatomy: SMD ATmega328P, 16 MHz resonator, reset, LED, RAW/VCC power pins and the 6-pin FTDI programming header
A map of the Pro Mini: the ATmega328P runs your code; the 6-pin FTDI header is how you upload it — there is no USB.
ATmega328P
8-bit AVR MCU
No USB
Program via FTDI
14 + 8
Digital + analog pins
5V / 3.3V
Two versions

The Brain: ATmega328P

The Pro Mini uses the same ATmega328P as the Uno and Nano — a complete little computer on one chip: a CPU, three kinds of memory and built-in peripherals.

Block diagram of the ATmega328P: AVR CPU, 32 KB flash, 2 KB SRAM, 1 KB EEPROM, GPIO, 10-bit ADC, timers and UART/SPI/I2C
Inside the ATmega328P: CPU + 32 KB flash / 2 KB SRAM / 1 KB EEPROM + GPIO, ADC, timers and serial buses.

On the 5V board it's clocked at 16 MHz; on the 3.3V board at 8 MHz (a lower voltage can't safely run as fast). Either way the code you write is identical.

Full Arduino Pro Mini Pinout

Here is the complete pinout. The digital and analog pins match the Uno/Nano, so the same libraries work — the differences are the missing USB and the RAW / VCC power pins.

Detailed Arduino Pro Mini pinout: every pin with its Arduino number, port register and alternate functions (ADC, PWM, SPI, I2C, UART), plus the FTDI header and RAW/VCC power
The full Pro Mini pinout — digital on the right, analog & power on the left, and the 6-pin FTDI header on top. A6/A7 are analog-only.

Prefer a simpler view? This colour-coded map groups the pins by function:

Simplified Arduino Pro Mini pinout showing 14 digital pins, 8 analog inputs A0-A7 and RAW/VCC/GND/RST power pins
Quick overview: digital (0–13), PWM ~, analog (A0–A7) and power (RAW / VCC / GND / RST).

Every Pin Explained

Let's go through each group of pins.

Digital pins (D0–D13)

14 general-purpose pins that read or write HIGH or LOW with pinMode(), digitalWrite() and digitalRead(). Each handles ~20 mA (40 mA max). Special roles (same as the Uno):

D0 (RX) & D1 (TX)

Hardware serial — this is the FTDI upload port; avoid using them while uploading or using Serial.

D2 & D3

External interrupts (INT0, INT1) — attachInterrupt().

D3, 5, 6, 9, 10, 11

PWM (~) outputs — analogWrite(0–255).

D10–D13

SPI bus — 10 = SS, 11 = MOSI, 12 = MISO, 13 = SCK.

D13

Wired to the on-board “L” LED.

Analog input pins (A0–A7)

8 analog inputs (two more than the Uno), each a 10-bit ADC reading 0–VCC as 0–1023:

  • A0–A5 can also be used as digital pins; A6 & A7 are analog-only.
  • A4 = SDA and A5 = SCL — the hardware I2C bus (same as the Uno).

Power pins (this is where it differs)

PinWhat it does
RAWUnregulated input — feed a rough voltage (5–12 V for the 5V board) into the on-board regulator.
VCCRegulated logic voltage — either the regulator's output, or feed the exact voltage in here directly.
GNDGround (0 V) — there are two GND pins.
RSTPull LOW to reset; also driven by the FTDI DTR line for auto-reset.
RAW vs VCC — don't mix them up

Put a rough, higher voltage on RAW (it goes through the regulator). Put only the exact logic voltage (5 V or 3.3 V) on VCC — too much on VCC bypasses the regulator and can destroy the board.

Programming with an FTDI Adapter

This is the one thing that's really different about the Pro Mini: with no USB on board, you upload code through a cheap external FTDI / USB-serial adapter plugged into the 6-pin header.

Programming the Arduino Pro Mini with an FTDI adapter: PC to FTDI over USB, then a 6-wire link (DTR, TXO, RXI, VCC, GND, GND) to the Pro Mini header
PC → FTDI adapter (USB→serial) → the 6-pin header. TX and RX cross over; DTR auto-resets the board into its bootloader.

The 6-pin header, in order: DTR, TXO, RXI, VCC, GND, GND (labels vary slightly by board). Connect DTR→DTR, adapter TX→board RXI, adapter RX→board TXO, plus VCC and GND.

Match the voltage!

Set your FTDI adapter's jumper to 5 V for a 5V/16MHz board or 3.3 V for a 3.3V/8MHz board. Feeding 5 V into a 3.3 V board can damage it. In the IDE, pick the matching processor under Tools → Processor.

Powering the Pro Mini

Two ways in: a rough voltage on RAW (through the on-board regulator), or the exact regulated voltage straight into VCC.

Arduino Pro Mini power: RAW pin through the on-board regulator, or VCC pin direct, plus the 5V/16MHz and 3.3V/8MHz versions
RAW → regulator → VCC, or feed VCC directly. Note the two board versions and their input ranges.
Which version do you have?

The 5V / 16 MHz and 3.3V / 8 MHz boards look almost identical. Check the silkscreen before powering — it sets the logic voltage, the FTDI voltage and the top clock speed.

Digital I/O

Output a HIGH/LOW to drive an LED or relay, or read a HIGH/LOW input from a button or sensor.

Arduino digital I/O: an output pin driving an LED through a resistor, and an input pin reading a button with a pull-down resistor
Output drives an LED (via a 220 Ω resistor); input reads a button with a 10k pull-down so the pin never floats.
// digital output + input
void setup() {
  pinMode(13, OUTPUT);      // LED pin
  pinMode(2, INPUT);        // button pin
}
void loop() {
  digitalWrite(13, digitalRead(2));   // LED follows the button
}

PWM Output (~)

PWM fakes an analog voltage by switching a pin on and off fast. The Pro Mini has 6 PWM pins: 3, 5, 6, 9, 10, 11.

Arduino PWM: three duty cycles (25%, 50%, 75%) and their average voltages, set with analogWrite
Higher duty → higher average voltage. Use analogWrite(pin, 0–255) on the six ~ pins.
// fade an LED on a PWM pin (~9)
void setup() { pinMode(9, OUTPUT); }
void loop() {
  for (int v = 0; v <= 255; v++) { analogWrite(9, v); delay(5); }
  for (int v = 255; v >= 0; v--) { analogWrite(9, v); delay(5); }
}

Analog Input (ADC)

The 8 analog pins measure a continuous voltage. The 10-bit ADC turns 0–VCC into 0–1023.

Arduino analog input: a potentiometer feeding A0, and the 10-bit ADC mapping 0-VCC to 0-1023
A potentiometer on A0 → the ADC reads 0–1023. On the 3.3V board, full-scale is 3.3 V, not 5 V.
// read a sensor and print volts (5V board)
void setup() { Serial.begin(9600); }
void loop() {
  int raw = analogRead(A0);          // 0..1023 (A6/A7 too)
  float volts = raw * 5.0 / 1023.0;
  Serial.println(volts);
  delay(200);
}

Communication: UART, SPI & I2C

The Pro Mini has the same three buses as the Uno, on the same pins.

Arduino Pro Mini communication buses: UART on D0/D1 (the FTDI port), SPI on D10-D13, and I2C on A4/A5
UART (D0/D1, the FTDI port), SPI (D10–D13) and I2C (A4/A5).

The Upload Flow

No USB means the FTDI adapter is part of the chain — its DTR line auto-resets the board so the bootloader catches your sketch.

Arduino Pro Mini upload flow: write in the IDE, compile, send via the FTDI adapter, DTR auto-resets into the bootloader, then run
Write → compile → FTDI adapter (USB→serial) → DTR auto-reset into the bootloader → run from flash.
Pick the right processor

In the IDE choose Board: “Arduino Pro or Pro Mini” and the matching Processor (ATmega328P 5V 16MHz, or 3.3V 8MHz). Wrong choice = a failed upload.

Pro Mini vs Uno

Same brain and code — the Pro Mini simply drops everything you don't strictly need, to be as small and cheap as possible.

Comparison table of the Arduino Pro Mini and Uno: microcontroller, USB, analog inputs, chip package, power jack and size
No USB, no DC jack, no shield headers — but the same ATmega328P as the Uno, with two extra analog pins.

Choose the Pro Mini for finished, space-tight, low-cost builds; the Nano if you want the same tiny size but with USB on board; the Uno for learning and shields.

Code Examples

The everyday building blocks — identical to the Uno and Nano.

1. Blink the on-board LED

void setup() { pinMode(LED_BUILTIN, OUTPUT); }
void loop() {
  digitalWrite(LED_BUILTIN, HIGH); delay(1000);
  digitalWrite(LED_BUILTIN, LOW);  delay(1000);
}

2. Print to the Serial Monitor (through the FTDI adapter)

void setup() {
  Serial.begin(9600);          // via the FTDI adapter
  Serial.println("Hello from the Pro Mini!");
}
void loop() { Serial.println(millis()); delay(1000); }

3. Read a button (internal pull-up)

void setup() {
  pinMode(2, INPUT_PULLUP);           // no external resistor needed
  pinMode(13, OUTPUT);
}
void loop() {
  digitalWrite(13, digitalRead(2) == LOW ? HIGH : LOW);
}

Beginner Mini-Projects

Because it's so small and cheap, the Pro Mini is ideal for leaving inside a finished project. Each sketch below is complete.

Arduino Blink project: an LED and 220 ohm resistor on pin 13 with the blink sketch
Project 1 wiring — the classic Blink. Pin 13 already has an on-board LED, so this works even with no parts.

Project 1 — Blink an LED

Parts: 1 LED, 1 × 220 Ω resistor. LED anode → resistor → pin 13; cathode → GND.
void setup() { pinMode(13, OUTPUT); }
void loop() {
  digitalWrite(13, HIGH); delay(500);
  digitalWrite(13, LOW);  delay(500);
}

Project 2 — Push-button controlled LED

Parts: 1 push-button between pin 2 and GND (internal pull-up), 1 LED + 220 Ω on pin 13.
void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
}
void loop() {
  if (digitalRead(2) == LOW) digitalWrite(13, HIGH);
  else                       digitalWrite(13, LOW);
}

Project 3 — Low-power sensor node

Parts: a sensor on A0; power the board from a battery on RAW. The Pro Mini's small size and low cost make it great for battery projects (tip: a 3.3V/8MHz board sips less current).
void setup() { Serial.begin(9600); }
void loop() {
  int raw = analogRead(A0);
  Serial.println(raw);
  delay(2000);                   // (add sleep libs to save power)
}

Project 4 — Potentiometer LED dimmer

Parts: 1 potentiometer (ends to VCC & GND, wiper to A0), 1 LED + 220 Ω on PWM pin ~9.
void setup() { pinMode(9, OUTPUT); }
void loop() {
  int level = map(analogRead(A0), 0, 1023, 0, 255);
  analogWrite(9, level);                // brightness follows the knob
}

Specifications

The Arduino Pro Mini at a glance.

Arduino Pro Mini specifications table: ATmega328P, two versions (5V/16MHz and 3.3V/8MHz), 32 KB flash, 14 digital pins, 8 analog inputs, no USB
Key numbers for the Pro Mini — MCU, versions, memory, pins and power.

Key Terms — Glossary

TermMeaning
FTDI adapterA USB-to-serial board used to upload code to the Pro Mini (no USB on the board itself).
DTRThe adapter line that pulses RESET so the bootloader catches the upload (auto-reset).
RAWUnregulated power input that goes through the on-board regulator.
VCCThe board's regulated logic voltage (5 V or 3.3 V).
PWM (~)Pulse-width modulation; 6 pins on the Pro Mini (3, 5, 6, 9, 10, 11).
ADCAnalog-to-digital converter; 8 inputs, 10-bit (0–1023).
A6 / A7Analog-only inputs (no digital function).
SPI / I2CSPI on D10–D13; I2C on A4 (SDA) / A5 (SCL).
BootloaderSmall program that lets the board flash itself over serial.

Frequently Asked Questions

Quick answers to the questions people ask most about the Arduino Pro Mini.

What is the Arduino Pro Mini?

A tiny, low-cost board built around the ATmega328P with no USB. You program it with an external FTDI / USB-serial adapter. It comes in 5V/16MHz and 3.3V/8MHz versions and has 14 digital pins (6 PWM) and 8 analog inputs.

How do I program it?

Connect an FTDI adapter to the 6-pin header: DTR, TXO, RXI, VCC and two GND. TX and RX cross over (adapter TX → board RXI, adapter RX → board TXO), and DTR auto-resets the board. Match the adapter voltage to your board, pick “Arduino Pro or Pro Mini” and the right processor, and Upload.

Pro Mini vs Nano — what's different?

Same ATmega328P, same 14 digital + 8 analog pins. The Nano has USB on board; the Pro Mini has none, so it's smaller and cheaper but needs an FTDI adapter. The Pro Mini also comes in a 3.3V/8MHz version.

What are the 5V and 3.3V versions?

Two builds: 5V at 16 MHz, and 3.3V at 8 MHz. It sets the logic voltage, the FTDI voltage you must use, and the top clock speed. Always check which one you have.

How do I power it (RAW vs VCC)?

Feed a rough voltage (about 5–12 V for the 5V board) into RAW and the regulator makes the logic voltage. Or feed the exact regulated voltage straight into VCC. Don't put a high voltage on VCC — that bypasses the regulator.

Where are SPI and I2C?

Same as the Uno: SPI on 13 (SCK), 12 (MISO), 11 (MOSI), 10 (SS); I2C on A4 (SDA) / A5 (SCL). Hardware serial (and the FTDI upload) is on D0/D1.

How many analog pins does it have?

Eight: A0–A7. A0–A5 can also be digital; A6 and A7 are analog-only. Read them with analogRead(A6) and so on.

Why won't my Pro Mini upload?

Check the FTDI wiring (TX/RX must cross), that DTR is connected, and that the adapter voltage matches the board. Pick the correct processor in the IDE. If auto-reset fails, press RESET just as the upload begins.

Conclusion & Key Takeaways

The Arduino Pro Mini is the Uno's brain shrunk to the bare minimum — perfect once your project is finished and you no longer need a USB port.

ATmega328P

Same as Uno/Nano.

No USB

Program via FTDI.

14 + 8 pins

Digital + analog.

RAW / VCC

Two power inputs.

5V & 3.3V

Two versions.

Tiny & cheap

Great for builds.

Continue Learning