The Pro Micro is a small, powerful, and Arduino-compatible development board built around the ATmega32U4 microcontroller. Unlike boards that use a separate USB-to-serial chip (such as the CH340 or FTDI), the ATmega32U4 has native USB built directly into the processor. This means the Pro Micro can appear as a mouse, keyboard, joystick, or other HID (Human Interface Device) to your computer — opening up a wide range of creative project possibilities.
This board operates at 5V / 16MHz, connects via a Micro-USB cable, and is pin-compatible with the SparkFun Pro Micro and Arduino Leonardo. It is ideal for compact embedded projects, macro keypads, game controllers, MIDI devices, and general-purpose prototyping.
⭐ Key Features
- Microcontroller: ATmega32U4
- Operating Voltage: 5V
- Clock Speed: 16MHz
- Flash Memory: 32 KB (4 KB used by bootloader)
- SRAM: 2.5 KB
- EEPROM: 1 KB
- Digital I/O Pins: 18
- PWM Channels: 5 (pins 3, 5, 6, 9, 10)
- Analog Input Channels: 9 (A0–A3 on dedicated pins; A6–A10 shared with digital pins 4, 6, 8, 9, 10)
- I²C: 1 (SDA = pin 2, SCL = pin 3)
- SPI: 1 (on dedicated header or pins 14–16)
- UART (Serial1): 1 hardware serial (TX = pin 1, RX = pin 0)
- Native USB: Yes — supports HID (keyboard, mouse, joystick, MIDI)
- USB Connector: Micro-USB
- Onboard LEDs: 2 (TX and RX activity LEDs, active LOW on pins 30 and 17)
- Board Dimensions: Approx. 33mm × 18mm (1.3″ × 0.7″)
- Weight: ~4g
📌 Pinout Diagram
The Pro Micro has pins along both long edges of the board. Below is a reference for all available pins:
Left Side (top to bottom, USB connector at top)
| Board Label | Function(s) |
|---|---|
| TX0 (1) | Digital 1 / TX (Hardware Serial1) |
| RX1 (0) | Digital 0 / RX (Hardware Serial1) |
| GND | Ground |
| GND | Ground |
| 2 | Digital 2 / SDA (I²C Data) |
| 3 | Digital 3 / SCL (I²C Clock) / PWM |
| 4 | Digital 4 / A6 |
| 5 | Digital 5 / PWM |
| 6 | Digital 6 / A7 / PWM |
| 7 | Digital 7 |
| 8 | Digital 8 / A8 |
| 9 | Digital 9 / A9 / PWM |
Right Side (top to bottom, USB connector at top)
| Board Label | Function(s) |
|---|---|
| RAW | Raw voltage input (up to 12V, regulated to 5V onboard) |
| GND | Ground |
| RST | Reset (pull LOW to reset the board) |
| VCC | Regulated 5V output (or input if not using USB power) |
| A3 (21) | Analog A3 / Digital 21 |
| A2 (20) | Analog A2 / Digital 20 |
| A1 (19) | Analog A1 / Digital 19 |
| A0 (18) | Analog A0 / Digital 18 |
| 15 | Digital 15 / SCLK (SPI Clock) |
| 14 | Digital 14 / MISO (SPI Data In) |
| 16 | Digital 16 / MOSI (SPI Data Out) |
| 10 | Digital 10 / A10 / PWM |
Power Pins
| Pin | Description |
|---|---|
| RAW | Unregulated power input. Accepts approximately 5V–12V. Passed through the onboard voltage regulator to produce 5V. |
| VCC | Regulated 5V. When powered via USB, this pin outputs 5V and can supply up to ~500mA to external components. Can also be used as a 5V input (bypasses the regulator). |
| GND | Ground reference. Connect to the ground of all external circuits. |
🔋 Powering the Pro Micro
There are three ways to power the Pro Micro:
| Method | Details |
|---|---|
| USB (Micro-USB port) | Provides regulated 5V directly from your computer or USB power supply. This is the simplest and most common method. |
| RAW pin | Accepts approximately 5V–12V DC. The onboard voltage regulator converts this to 5V. Useful for battery-powered projects (e.g., a 9V battery or 7.4V LiPo pack). |
| VCC pin | Accepts a regulated 5V input directly, bypassing the onboard regulator. Use this only if you have a clean, stable 5V source. Do not exceed 5.5V on this pin. |
⚠️ Warning: Do not apply power to both the RAW pin and VCC pin simultaneously from external sources while also connected to USB. This can create conflicting voltage paths and may damage the board or your computer's USB port.
💻 Getting Started: Install the Software
✅ Install Arduino IDE
Download and install the Arduino IDE from:
https://www.arduino.cc/en/software
✅ No Additional Driver Required
The Pro Micro uses the ATmega32U4's native USB interface — there is no separate USB-to-serial chip. This means:
- Windows 10/11: Drivers are built in. No installation needed.
- macOS: No driver needed.
- Linux: No driver needed (supported natively by the kernel).
- Older Windows (7/8): The Arduino IDE installation typically includes the necessary drivers. If your board is not recognized, try installing the IDE first, then reconnect the board.
🔌 Connect the Board
- Plug a Micro-USB data cable into the Pro Micro and connect it to your computer.
- The onboard LEDs should flash briefly, indicating the board has power.
- Your computer should recognize the board as a new USB device.
Verify the Connection
- Windows: Open Device Manager → look under Ports (COM & LPT) for a new COM port (e.g., "Arduino Leonardo" or "USB Serial Device").
-
macOS: Open Terminal and type
ls /dev/cu.usb*— you should see a device listed. -
Linux: Open Terminal and type
ls /dev/ttyACM*— you should see a device such as/dev/ttyACM0.
⚠️ Important: If nothing appears, try a different USB cable. Many Micro-USB cables are charge-only and do not carry data. A data-capable cable is required.
⚙️ Configure the Arduino IDE
- Open the Arduino IDE.
- Go to Tools → Board and select "Arduino Leonardo".
- Go to Tools → Port and select the COM port that appeared when you connected the board.
Why "Arduino Leonardo"? The Pro Micro uses the same ATmega32U4 microcontroller and bootloader as the Arduino Leonardo. Selecting "Arduino Leonardo" ensures full compatibility, including native USB support.
If you are using the Arduino IDE 2.x, you can also type "Leonardo" in the board search bar at the top of the IDE.
🚀 Upload Your First Sketch
The Pro Micro does not have a user-accessible LED on pin 13 like the Arduino Uno. Instead, it has TX and RX LEDs. We'll use the TX LED (active LOW) for a simple blink test.
Copy and paste the following code into the Arduino IDE:
/*
Pro Micro Blink Test
Blinks the TX LED on the Pro Micro.
The TX LED is active LOW (LOW = ON, HIGH = OFF).
*/
void setup() {
pinMode(LED_BUILTIN_TX, OUTPUT); // TX LED
}
void loop() {
digitalWrite(LED_BUILTIN_TX, LOW); // Turn TX LED ON
delay(1000);
digitalWrite(LED_BUILTIN_TX, HIGH); // Turn TX LED OFF
delay(1000);
}
- Click the Upload button (→ arrow) in the Arduino IDE.
- Wait for the sketch to compile and upload.
- The TX LED on the board should begin blinking on and off every second.
✅ If the LED blinks, your board is working correctly!
⌨️ Using Native USB (HID) — Keyboard & Mouse Emulation
One of the most powerful features of the Pro Micro is its ability to act as a USB Human Interface Device (HID). This means your Pro Micro can send keystrokes, mouse movements, and clicks directly to your computer — no special drivers or software needed.
Example: USB Keyboard — Type a Message on Button Press
This example types "Hello from Pro Micro!" when a button connected between pin 4 and GND is pressed.
Wiring: Connect a momentary push button between pin 4 and GND. No external resistor is needed — the code enables the internal pull-up resistor.
/*
Pro Micro USB Keyboard Example
Sends a text string when a button on pin 4 is pressed.
*/
#include <Keyboard.h>
const int buttonPin = 4;
int previousButtonState = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Keyboard.begin();
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW && previousButtonState == HIGH) {
delay(50); // Simple debounce
Keyboard.println("Hello from Pro Micro!");
}
previousButtonState = buttonState;
}
⚠️ Caution: Once a keyboard sketch is uploaded, the Pro Micro will send keystrokes to your computer whenever triggered. If your sketch sends keys continuously (e.g., in loop() without a button check), it can make it very difficult to reprogram the board. Always use a button or condition to control when keystrokes are sent. See the Troubleshooting section below if you get locked out.
Example: USB Mouse — Move the Cursor
This example moves the mouse cursor in a small square pattern.
/*
Pro Micro USB Mouse Example
Moves the mouse cursor in a square pattern.
*/
#include <Mouse.h>
void setup() {
Mouse.begin();
delay(2000); // Wait 2 seconds before starting
}
void loop() {
Mouse.move(50, 0, 0); // Move right
delay(500);
Mouse.move(0, 50, 0); // Move down
delay(500);
Mouse.move(-50, 0, 0); // Move left
delay(500);
Mouse.move(0, -50, 0); // Move up
delay(500);
}
📡 Using Serial Communication
The ATmega32U4 handles serial communication differently from boards like the Arduino Uno:
| Serial Object | Connection | Use |
|---|---|---|
Serial |
USB (virtual COM port) | Communicating with the Arduino Serial Monitor on your computer |
Serial1 |
Hardware UART (pins 0 & 1) | Communicating with other serial devices (GPS modules, Bluetooth modules, other microcontrollers, etc.) |
Example: Serial Monitor Output
void setup() {
Serial.begin(9600);
while (!Serial) {
; // Wait for USB serial connection (needed for ATmega32U4)
}
Serial.println("Pro Micro is ready!");
}
void loop() {
Serial.println("Hello from Pro Micro!");
delay(2000);
}
Note: The while (!Serial) line is important on ATmega32U4-based boards. It pauses the sketch until the Serial Monitor is opened, ensuring you don't miss any output. For standalone projects (not connected to a computer), you may want to remove this line or add a timeout so the sketch doesn't wait forever.
🛠️ Troubleshooting
Board Not Recognized by Computer
- Try a different USB cable. Many Micro-USB cables are charge-only and do not carry data signals. A data-capable cable is required.
- Try a different USB port. Avoid USB hubs — connect directly to your computer.
-
Check Device Manager (Windows) or
ls /dev/ttyACM*(Linux/macOS) to see if the device appears at all.
Upload Fails or "Port Not Found"
- Ensure you have selected Tools → Board → Arduino Leonardo.
- Ensure the correct COM port is selected under Tools → Port.
- Try pressing the Reset button on the board just as the IDE begins uploading (when the status bar shows "Uploading...").
Board is "Bricked" (Locked Out by a Bad Sketch)
If you uploaded a sketch that sends continuous keyboard/mouse input or crashes the USB stack, the board may become unresponsive and the COM port may disappear. Don't panic — the board is almost certainly not permanently damaged.
Recovery procedure:
- Open the Arduino IDE and load a simple, safe sketch (such as the Blink example from the Upload Your First Sketch section above).
- Click Upload in the IDE.
- As soon as the IDE status bar shows "Uploading...", quickly double-tap the RST (reset) pin to GND using a jumper wire. This briefly connects the RST pad to the adjacent GND pad.
- On some Pro Micro boards, there is a small reset button. If yours has one, double-press it instead.
- The double-tap triggers the bootloader, which makes the board appear as a new COM port for approximately 8 seconds.
- The IDE should detect the bootloader port and upload the new sketch, replacing the problematic one.
Tip: The timing can be tricky. You may need to try several times. The key is to trigger the reset after the IDE starts looking for the port but before the 8-second bootloader window closes.
Serial Monitor Shows No Output
- Make sure you are using
Serial(notSerial1) for USB communication. - Include
while (!Serial) { ; }in yoursetup()to wait for the connection. - Ensure the baud rate in the Serial Monitor matches the baud rate in your sketch (e.g., 9600).
Analog Readings Seem Wrong
- Remember that pins 4, 6, 8, 9, and 10 have shared analog/digital functions (A6–A10). Use the analog designator (e.g.,
A6) when callinganalogRead(), not the digital pin number. - Example: To read the analog value on digital pin 4, use
analogRead(A6), notanalogRead(4).
📊 Pro Micro vs. Arduino Leonardo vs. Arduino Uno
| Feature | Pro Micro (This Board) | Arduino Leonardo | Arduino Uno |
|---|---|---|---|
| Microcontroller | ATmega32U4 | ATmega32U4 | ATmega328P |
| Native USB | ✅ Yes | ✅ Yes | ❌ No (uses separate USB chip) |
| HID Support | ✅ Keyboard, Mouse, Joystick | ✅ Keyboard, Mouse, Joystick | ❌ Not natively |
| Flash Memory | 32 KB | 32 KB | 32 KB |
| Digital I/O | 18 | 20 | 14 |
| Analog Inputs | 9 | 12 | 6 |
| Form Factor | 33mm × 18mm (tiny) | 69mm × 53mm (standard) | 69mm × 53mm (standard) |
| USB Connector | Micro-USB | Micro-USB | USB-B |
| Price | $ (lowest) | $$ | $$ |
| Best For | Compact projects, HID devices, wearables | General USB projects with more I/O | Learning, general prototyping |
💡 Common Project Ideas
- Custom Macro Keypad: Build a programmable shortcut keyboard for video editing, gaming, or productivity. The Pro Micro's HID support makes it appear as a standard USB keyboard.
- Game Controller / Joystick: Create a custom arcade controller, flight stick, or gamepad using the Joystick library.
- MIDI Controller: Build a USB MIDI device for music production — send note, control change, and other MIDI messages directly over USB.
- Password Entry Device: Store and auto-type passwords or frequently used text strings with the press of a button.
- Sensor Data Logger: Read analog sensors and send data to the Serial Monitor or log it to an SD card.
- LED Controller: Drive addressable LED strips (WS2812B / NeoPixel) for lighting effects.
- Rotary Encoder Volume Knob: Use a rotary encoder to create a USB media volume control.
📋 Technical Specifications Summary
| Parameter | Value |
|---|---|
| Microcontroller | ATmega32U4 |
| Architecture | 8-bit AVR |
| Operating Voltage | 5V |
| Input Voltage (RAW pin) | 5V–12V DC |
| Clock Speed | 16MHz |
| Flash Memory | 32 KB (4 KB bootloader) |
| SRAM | 2.5 KB |
| EEPROM | 1 KB |
| Digital I/O Pins | 18 |
| PWM Pins | 5 (pins 3, 5, 6, 9, 10) |
| Analog Input Pins | 9 (A0–A3, A6–A10) |
| DC Current per I/O Pin | 40 mA max |
| USB Interface | Native USB (ATmega32U4 built-in) |
| USB Connector | Micro-USB |
| Communication | UART (Serial1), SPI, I²C, USB |
| Bootloader | Caterina (Arduino Leonardo compatible) |
| Board Dimensions | 33mm × 18mm (1.3″ × 0.7″) |
| Weight | ~4g |
🛒 Where to Buy
You can purchase the Pro Micro ATmega32U4 5V/16MHz development board directly from Envistia Mall:
👉 Pro Micro ATmega32U4 5V 16MHz — Envistia Mall
📚 Additional Resources
- Arduino IDE Download
- Arduino Language Reference
- Arduino Keyboard Library Reference
- Arduino Mouse Library Reference
This user guide is provided by Envistia Mall. While every effort has been made to ensure accuracy, this document is provided "as is" without warranty of any kind. Envistia Mall is not responsible for any damage to equipment or injury resulting from the use of this information. Always follow proper safety precautions when working with electronic components. Product specifications and availability are subject to change without notice.