Creative Commons images are CC BY-NC-SA 3.0

Description: Here at SparkFun, we refuse to leave ‘good enough’ alone. That’s why we’re adding to our line-up of Arduino-compatible microcontrollers once more! The Pro Micro is similar to the Pro Mini except with an ATmega32U4 on board. The USB transceiver inside the 32U4 allows us to add USB connectivity on-board and do away with bulky external USB interface.

This tiny little board does all of the neat-o Arduino tricks that you’re familiar with: 4 channels of 10-bit ADC, 5 PWM pins, 12 DIOs as well as hardware serial connections Rx and Tx. Running at 16MHz and 5V, this board will remind you a lot of your other favorite Arduino-compatible boards but this little guy can go just about anywhere. There is a voltage regulator on board so it can accept voltage up to 12VDC. If you’re supplying unregulated power to the board, be sure to connect to the “RAW” pin on not VCC.

This latest revision corrects the silk error from the last version of the board so that pin 14 is correctly labeled. We’ve also added a PTC fuse and diode protection to the power circuit and corrected the RX and TX LED circuit.

Not sure which Arduino or Arduino-compatible board is right for you? Check out our Arduino Buying Guide!

Dimensions: 1.3x0.7"


  • ATmega32U4 running at 5V/16MHz
  • Supported under Arduino IDE v1.0.1
  • On-Board micro-USB connector for programming
  • 4 x 10-bit ADC pins
  • 12 x Digital I/Os (5 are PWM capable)
  • Rx and Tx Hardware Serial Connections
  • Our Smallest Arduino-Compatible Board Yet!


Recommended Products

Customer Comments

  • This is a really awesome board. Arduino compatibility, native USB and a sleek profile make it great for many projects. I have never had any trouble getting it to work, contrary to many comments below. My one complaint is that the USB receptacle is too flimsy (a common problem with surface-mount micro USBs). After plugging / unplugging a USB cable a dozen or so times, even quite gently, the receptacle breaks off, pulling the solder terminals off with it. Although I appreciate the design choice to make the size as small as possible and the back of the board flat, a device whose main feature is native USB should have a sturdier USB receptacle.

    • I couldnt agree more. I think I am going to hold off on purchasing this item now.

      I was going to grab this board in lue of the fact that almost every other arduino board on this site is not being sold now. :(

      Thanks for your information.

  • You left D13 unused and attached LED13 to D14?

    Very, very idiotic.

    Attaching D13 to the LED would have the added benefit of having a solder point to use that otherwise unreachable pin. Not to mention that all arduino boards traditionally had the LED on D13.

    • Nope. They didn’t actually add the pin 13 LED. It’s missing. Not there.

      What you’re seeing are the RX/TX LEDs. They’re connected exactly the same as on the Leonardo.

      See here:

      Look at chip pins 8 and 22…

  • I followed the tutorial for Linux (I am using Ubuntu 14.04, arduino 1.0.5) but still doesn’t work. I got the following error: Couldn’t find a Leonardo on the selected port. Check that you have the correct port selected. If it is correct, try pressing the board’s reset button after initiating the upload. at at at at at at$ at

    I try to reset the board during uploading same error. Does someone have solution to this?

  • I’m having some problems with the hardware serial on this board, maybe someone could help me out. I have an OLED screen (model below) receiving serial data from this board. Over SoftwareSerial it works, but transfer is very slow, and I was trying to just use 0,1 pins to save program space. However, when I switch the serial used in the code to “Serial” and switch the pins to 0,1, I get nothing from the screen. It works on the hardware serial of both a Duemilanove and a Due. From the serial monitor I can see that signals are being sent at the appropriate times that are reaching the USB connection, but the screen isn’t responding. This is the case on USB power as well as a a separate power supply. Any thoughts?

    • Have you tried using Serial1. instead of Serial.? It’s kind of weird. The Serial. object sends and receives data over the Serial Monitor, and Serial1. will send and receive out of the hardware serial port. Check out this example for some example code.

  • Is there a fritzing part for this? That would help me immensely

  • Hi, I have ProMicro 5V/16MHz and I have Linux Mint 16. While trying upload the sketch I am getting following error:

    Found programmer: Id = “Hello H”; type = Software Version = H.e; Hardware Version = l.l avrdude: error: buffered memory access not supported. Maybe it isn’t a butterfly/AVR109 but a AVR910 device?

    Befote I uploaded sketch sending Hello throught Serial. The same problem with my other ProMicro. I have followed the hookup guide, I have selected correct board and port. Can you give me some advice?

  • Does anyone know where I can get the fritzing part for this? Thanks

  • It’s there a 5v output like on the red board uno clone?

    • As long as you power the board through either USB or the RAW input, you’ll get 5V out on the “VCC” pin.

  • I can’t get this thing to fly under Arduino IDE v1.6.2. I followed the instructions in the Hookup Guide to the letter. The driver installed fine, the com port and board shows up in in the list just like they should.

    Even when trying to compile a bare minimum sketch, I get the following error: Cannot run program “C:\Program Files\Arduino/hardware/tools/avr/bin/avr-g++”: CreateProcess error=3, The system cannot find the path specified

    Thanks in advance to anyone with a helpful suggestion or two!

    Edit: Arduino IDE v1.6.2 seems to have broken the instructions in the Hookup Guide. Reverting to v1.6.1 did the trick. BTW, it was the same situation under both WinXP and Win7.

  • Small edit, this little board actually has 9 pins that can be used for 10-bit ADC inputs.

  • Like many here, I had some issues getting the Pro Micro to connect to my Windows 7 Arduino IDE environment. I believed I had installed all of the code bits as far as drivers and the Arduino IDE, but I just could not get it to work. Somewhat in desperation, I wired up the reset button suggested to see if I could force the board into the mode I wanted. Lo and Behold! Forcing the Pro Micro via a reset caused Windows to recognize it differently, than it did when not in download code mode and attach the appropriate drivers. Now it works just as well as the Uno R3 does, with both code downloads and serial monitoring from the Arduino IDE flipping back and forth just as you would like. I have not used the reset button again except for that one time driver install. With regard to the micro USB port weakness issue, I think I have “fixed” the problem by simply connecting a USB cord to it once and leaving it in while I am in development. Forewarned is for armed. I disconnect the PC end when I need to power down or disconnect it. My first project ported very easily from the Uno R3 to the Pro Micro - although I did use a completely different set of pins from one to the next. This demonstrates the value of defining constants for which pin you are using at one place in your code - it makes this sort of transition trivial. The Pro Micro appealed to me for the small form factor, USB connectivity (just in case I need to later easily tweak the software), and on board power regulation. I may play with power regulators next to learn how to do this on my own.

  • How many mA does this draw at maximum load? I’m trying to decide what battery and charger to get to combine this with an OpenLog (6mA) and MPL3115A2 (40 microAmps). They’re going to need to collect data for several hours (anywhere from three to five).

  • have been using this to multiplex some 8 segements with very imputs using my very limited knowledge on programming. I have been thinking of a different application for it, but it is rated for 12v, and although i was thinking on using it on a cars 12v system, the charging system for a car however frequently allows this system to see voltages near 15v. My question is if this is acceptable or do i need a voltage regulator to keep it around the 12v area or even lower?

  • Hi! I have a project on the old computer with Win XP. Receives data from the sensors using serial port and MSCOMM ActiveX. After the driver is installed, the data is transmitted correctly from Pro Micro to the serial port that can be seen using HyperTerminal. However, the MSCOMM does not generate an event to obtain a character in the input buffer and my software is not receiving data. With other types of Arduino does not have these problems. What could be wrong?

  • I have 2 that suddenly will not work. The first one: when plugged into the computer the red led turns on, but that is it. No board is seen by the computer( tested with 3 computers and 2 different cables) Second one: when plugged into the computer the red yellow and green led turn on solid. Nothing is seen by the computers. Search for hardware does not help… Using arduino ide 1.05/and 1.06; Linux, windows, and android computers! Ideas?

  • No reset button? Aaargh! That’ll make development of USB peripherals really fun…

    • Sorry, because of the size we left it off, but we do break out the reset pin, so you can add your own.

  • J1 (see your product photo) is not described anywhere.

  • Does anyone have a solidworks/step/iges/parasolid file of the Arduino Pro Micro available? Time to design a case for my project, and it would save me some serious time.

  • Uhm… Am I crazy? I usually print “Setup complete” at the end of my setup() function, but even when I try and hold the program up until a serial connection is open (while (!Serial) {};) I still can’t get it to print out to the serial port during setup! Printing within the loop works just fine… (And the same code works just fine on a Mega)

    Even if I manually reset the PM and keep the serial port open I don’t see any printing. Is anybody else seeing this or know how to fix this? :/ I could set up a dummy var and print only once during the first run of the main loop, but I’d like to know why it’s doing what it is…

    • According to what you’re saying, the code should be correct (as long as you aren’t putting the while loop in parenthesis). Did you double check to make sure you’ve selected “Leonardo” in the IDE?

      • I have “SparkFun Pro Micro 5V/16MHz” selected, but the IDE does mention it can’t find a Leonardo selected when something (else) goes wrong.

        I installed the drivers as directed here:–fio-v3-hookup-guide

        No matter what I do (add delays, print multiple items, etc) it seems to refuse to print during setup. :/

        • Switched computers and it works just fine now. -__-“ Oh magic electrical fairy please stop messing with me. :‘)

          But now my issue is when I try and upload the IDE always thinks the serial port is busy. Greh.

  • Hi, does someone know hor to use ips with this board? I cannot find a hookup guide. I have to connect a rfm22 module but dont knop wich wich pin I can connect with NIRQ on the RFM module.

  • Windows doesn’t display it from yesterday !!!!!!!!! HELP

  • I see the board is 0.7" width but, are the pin rows spaced 0.6"? That’d be great.

  • There is an issue with the Arduino serial monitor and some PC/Leonardo/pro micro connections. The serial monitor will send data but will not receive! A work around is to use a third party terminal. I am using putty.

    It’s a bit of a PITA as you have to manually exit the terminal to release the com port for uploading. But it is better than staring at the serial monitor and wondering what is going on.

  • The Hookup Guide for the Pro Micro says that the maximum supply voltage is 12V (on RAW), while the schematic (rev 1.3) says 16V. Which is it ? (and this is important, as I want to power one from a 12V storage battery which will vary between 12.0V and 13.8V)

  • you shuld get one with isp on it

    • Technically the ISP is on the board, in fact we add the bootloader to the finished board. Unfortunately the board does have room for the nice 2x3 header configuration, but the pins are all there.

  • Are you guys ever going to get the drivers for this signed? I know that Arduino was able to get them signed for the Leonardo.

  • hi i want to power this board using a lipo battery .. but the battery does not have any protection… is there any way to write a voltage checker into the code so that an alarm will be set off if the battery drops under voltage?

    • There’s nothing built into the board to monitor battery voltage, but you could build a voltage divider out of two 10k resistors. You’d run RAW (battery voltage) into the voltage divider, and run the output from the voltage divider (battery voltage / 2) to an analog input. Then your code can monitor the battery voltage and let you know when the battery is getting low.

  • I am trying to interface this board (Pro Micro) with an LCD Button Shield (DEV-11851) but it appears that pins 11 and 12 on the Pro Micro are different than an Uno. Which pins should be substituted for these? Is there a schematic available to show how the Pro Micro should be wired to the LCD Button Shield? Thanks!

  • I love this little board….. but word of caution, the micro usb pulls off kind of easy, be very gentle. It would be nice if SF could used vias as the usb footprint pads for added strength which is how we do it where i work for heavy use applications.

  • Probably a dumb question, but just to be sure, the USB connection still appears as a serial COM port, correct? And I can treat it as such within Windows for the purpose of data exchange (as opposed to just programming)?

  • What is the maximum current that can be fed into this arduino?

    • That depends. First current isn’t fed, its pulled, meaning it doesn’t matter the rating on the source, it matters how much you are trying to pull. There are many different limits on different parts of the board. Each I/O pin has a limit (40mA), the ATMega32U4 has a limit for all I/Os total (200mA), the regulator has a limit (500mA), and VCC kind of has a limit (there is no rated limit, but at some point the traces on the board can’t handle that much power.

  • Can this operate as a HID device? And are the TX and RX pins separate from the USB? So it can operate as a HID device and still have separate use of the TX/RX pins?

    Thanks for your help.

    • Yes and yes. It can do HID - check out this example in the tutorial.

      The UART pins are broken out, and they’re free for non-USB use. Check out this example, you’ll need to Serial1.print() to send data out the hardware UART.

  • The features of this board are great! However, the usb port snapped off after only a couple days of light usage. I got a second board and covered the terminals in epoxy (and under the board where the little plastic alignment posts go through the board). Hopefully this will extend the life of the connector to survive my development phase. If this only used through-hole solder joints for the usb port it would be perfect!

  • Hi, can someone tell me the distance between the two rows of holes?

  • I had a lot of trouble getting this to accept code. Not sure why, since my Arduino Uno works fine. I’m running Fedora 19 (Linux), and Arduino 1.0.5. Even after reinstalling the bootloader it was pretty hit and miss. What I ended up doing was uploading code directly, using my Arduino Uno:

    Follow the steps here for hooking up your Pro Micro and your Arduino Uno. A couple tips that I didn’t see mentioned, but that could be helpful:

    • You have to upload the “Arduino ISP” sketch to your Arduino Uno first (make sure to select the Arduino Uno as the target board!)
    • In the table saying which wires to hook up, the D14, etc pins are actually just the labeled pins of that number. I thought it was strange that they were prefixed by a D.
    • To actually upload code, not the bootloader, you do all the same things, except instead of uploading to the bootloader, go to File -> Upload using Programmer. This will wipe the bootloader altogether. Make sure you’re connected via USB to your Arduino Uno, but that you have ProMicro selected as your target board. Note that after you do this, you definitely won’t be able to upload code directly to your Pro Micro via USB, without reburning the bootloader. All the HID stuff still works, though.
    • Hi, keep in mind these boards are very different than the Uno and so the upload process is different. You do need to make sure you have the correct board files downloaded and installed as well as the correct drivers installed (on Windows). If you still have questions feel free to email Also, as for the pin names, the full name is actual D0, D1, etc. as opposed to the analog pins which are A0, A1, etc. But on the Pro Micro they are shortened for space issues.

  • These still don’t get listed under Arduino IDE 1.5.2 … Any way to make that work?

  • Does this device support I2C? If so, what pins are the data line and the clock line?

    • FlorinC / last year * / 1

      Of course it does. Check out how I used the I2C in this LCD clock project:

  • For anyone working with windows 8/8.1 here is how I got it to work:

    1. Enable installation of unsigned drivers: 8.1 or 8
    2. Once signing is disabled uninstall and re-install the arduino IDE (version 1.0.5)
    3. Open device manager
    4. Get the windows drivers from the tutorial
    5. Reset the board twice quick succession as described under Reset Bootloader
    6. Notice the windows sound signalling a new device being recognized. The new device should show up in device manager with the orange triangle as the pro micro.
    7. Install the driver as described in the tutorial for windows installation for this new device that showed up. I had to reset the board a couple of times during navigation to the driver and then just as I was clicking the button to install the driver. It finished before I heard the sound signalling removal of a device.
    8. Upload sketches to the regular com port that is under device manager, and during upload the pro micro will show up briefly in device manager with the driver you just installed, and disappear, and the sketch should work.
  • Hint for Arduino IDE > v1.0.5: visit to get a zip that allows proper usage of the Pro Micro on newer IDE (currently v1.5.6). Thanks to Matthew Ford!

  • Hi! Windows 8.1 refuses to install the provided INF file from the zip. What to do? Thanks a lot!

    Found it: you need to reboot to special mode where driver signing is disabled.

  • Power source question: If both a USB cable is connected and a battery is wired to RAW, which power source will the Pro Micro use?

    • On the 5V version, the USB power is shorted to the regulated 5V power, so it’s hard to say how much of each. I took the guesswork out by removing the USB power fuse (labeled “F” on my board), which means the board can only get power from the RAW pin via the regulator.

  • I am trying to control the pro micro over a JY-MCU Bluetooth module, but it isn’t recognized by my computer. It might be that I am connecting it wrong, but I can’t seem to fine any support on the topic. So if anyone knows how to control the pro micro through any type of Bluetooth module, advice is greatly appreciated!

    • The JY-MCU BT module takes 2 pins (Tx and Rx) to communicate with. You can either use any digital pin through SoftwareSerial or pin 0 and 1 (Rx and Tx)) through (hardware) Serial. Check out my post on how I used BT module in one of my clocks:

  • I have a Pro Micro board version (BlueDuino) which is supposedly a 5V version. Analog pins give 5V (@255 ADU) and digital outputs are also at 5V when high. Analog pins read 1023 cts when 5V is applied. However, the VCC pin is 3.3V! I don’t quite understand how that is possible. Any suggestions? Thanks!

  • Can this be powered using a 9 volt battery thru a breadboard? If not, how can this be wirelessly powered? I tried using 4 AAAs in a battery pack but the robot didn’t turn on. Sorry for my juvenile questions, I’m new at this. (I have the 5v version)

  • I am having some trouble with uploading sketches to my Pro Micro 5V. I am able to see COM8 in my device manager and I see COM8 under Tools> Serial Port. But able to see but for some reason when I upload the Blink sketch I get the following error: Error Touching serial port ‘COM8’ (

    I don’t this it is bricked since I see COM8 in my device manager and IDE. Any ideas? Help please.

    • See the comment at the top about windows 8, that is what I had to do to get any progress in windows.

    • What version of Arduino IDE are you running? The Pro Micro only works right on some versions. Try using version 1.0.1.

  • Hey there. I am a little confused. I was looking at the schematic PDF on this page comparing it to the diagram from this tutorial page:–fio-v3-hookup-guide/hardware-overview-pro-micro

    My confusion lies with the pins on the board labeled 8, 9, 10, 16, 14, 15. The diagram on the linked page indicates: D8 / A8, D9# / A9, D10# / A10, D16 / MOSI, D14 / MISO, D15 / SCLK

    On the other hand, the Pro Micro PDF schematic link in this page indicates: D8, D9# / A8, D10#, D16 /MOSI, D14 / RX LED, D16 then MISO is at D17 which does not even exist on the Pro Micro.

    Would you be able to suggest which description is the correct one?


  • I developed HID keyboard using example source.

    However, BIOS does not work on the problem. (Mac, Windows in normal operation.)

  • Has anyone gotten this to work with a makefile, such as

  • Perfect form factor for cool little LED projects. Did this one in a day:

  • Everything was going great until I accidentally uploaded from the Arduino IDE using the 3.3V board option, rather than 5V. Now the USB device is not recognized by Windows, and it says “Device Descriptor Request Failed” in the Device Manager. Did I just learn a $20 lesson in double-checking before uploading, or can I fix this somehow?

    • Ouch! It’s possible to revive it – just takes some perfect timing and patience. Check out the Reset to Bootloader and How to revive a bricked Pro Micro sections on this page. You’ll need to get the Pro Micro into bootloader mode, and try uploading a (5V-compiled) sketch before it exits.

      • Above method got my 5v unbricked, Thanks!

      • Hmm, I’ve nailed the timing three times now (after dozens of failed attempts). Everything looks great, Arduino IDE reports “Done uploading.” But then the USB device is still not recognized when starting normally (non-bootloader mode). I’m uploading a sketch with empty setup/loop functions. Any advice?

  • Sorry for the confusion, but is this board stand-alone, or do I still need to hook it up to an Arduino? If it isn’t stand alone, does anybody know of a similar HID board that is?

  • Have you guys ever stated what the part number or specs are for the diode on the USB input? IIRC the BOM in Eagle doesn’t state it.

  • Hi guys! I’m trying to find out some pins to work with… they are the SS/SCK/MOSI/MISO which according to the schematic (if its correct my interpretation…) are: SS -> D14 /RX LED SCK-> D15 MOSI -> D16 MISO ->D17 but if I look at the Hardware Overview, I get that MISO ->D14, so SCK/MOSI seems to be univocally identify, but I still got two pins that are missing. What happens with SS and MISO pins? Should I identify MISO as D14 and SS as RX LED? In the latter case, How could I modify the circuit to get a Pin from the RX LED? and how can I call that “new” pin from my sketch program? Thanks in advance for any clarification! Cheers, Rene

Customer Reviews

4.2 out of 5

Based on 6 ratings:

5 star
4 star
3 star
2 star
1 star

Excellent product

I am a retired engineer and have been out of the software business for almost 10 years. I purchased the Pro Micro after reading up on the Arduino products and capabilities. I have been playing with the Pro Micro for about a week and have two projects well along in the design cycle. I really appreciate how easy it is to prototype with the Pro Micro and it has some very nice features. The Arduino IDE is a very nice way to develop software too! Sparkfun has some excellent documentation and examples. This has really helped the process of getting back into programming. Thank you Sparkfun!

Fit the bill perfectly

I needed something small with USB onboard to control a strip of NeoPixels.

My project uses a small C# program to communicate over serial with the Arduino which drives the pixels. I wanted something small and this was the only Arduino I could find to fit the bill. The trinket doesn’t have serial and the pro mini would tie up my programmer.

That being said, I have had some issues with this showing up in the device manager and for that reason I don’t think I would have this as my only arduino. I think your best bet would be to prototype with something like a RedBoard and port your over to this little guy. If I have another project that needs serial communication or USB power I would definitely use one of these. Otherwise I would probably go with a Pro Mini if I needed a small dedicated arduino to stick in a project.

Great product!

This does everything I need it to in a small form factor. The only issue I have with it is that the USB port wiggles a lot on the board and I’m afraid it will come off at some point. In my current project, I only use the USB to program it.

Just what I wanted.

Extremely small and still had all the power I could ever need for my project.


I never figured out how to make it work with the Arduino IDE. Don’t know why. I gave up and used a ProMini instead.

Be sure to follow along in the Hookup Guide. There is an explanation of how to install on Windows, Mac and Linux. This board does require some extra steps compared to the Pro Mini.–fio-v3-hookup-guide#installing-windows Happy hacking