The Arduino Micro is a microcontroller board based on the ATmega32u4 (datasheet), developed in conjunction with Adafruit. It has 20 digital input/output pins (of which 7 can be used as PWM outputs and 12 as analog inputs), a 16 MHz crystal oscillator, a micro USB connection, an ICSP header, and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a micro USB cable to get started. It has a form factor that enables it to be easily placed on a breadboard.
The Micro is similar to the Arduino Leonardo in that the ATmega32u4 has built-in USB communication, eliminating the need for a secondary processor. This allows the Micro to appear to a connected computer as a mouse and keyboard, in addition to a virtual (CDC) serial / COM port. It also has other implications for the behavior of the board.
The Arduino Micro can be powered via the micro USB connection or with an external power supply. The power source is selected automatically.
External (non-USB) power can come either from a DC power supply or battery. Leads from a battery or DC power supply can be connected to the Gnd and Vin pins.
The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts.
The power pins are as follows:
- VIN: The input voltage to the Arduino board when it's using an external power source (as opposed to 5 volts from the USB connection or other regulated power source). You can supply voltage through this pin.
- 5V: The regulated power supply used to power the microcontroller and other components on the board. This can come either from VIN via an on-board regulator, or be supplied by USB or another regulated 5V supply.
- 3V: A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 50 mA.
- GND: Ground pins.
The ATmega32u4 has 32 KB (with 4 KB used for the bootloader). It also has 2.5 KB of SRAM and 1 KB of EEPROM (which can be read and written with the EEPROM library).
Input and Output
Each of the 20 digital i/o pins on the Micro can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 5 volts. Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms. In addition, some pins have specialized functions:
- Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data using the ATmega32U4 hardware serial capability. Note that on the Micro, the Serial class refers to USB (CDC) communication; for TTL serial on pins 0 and 1, use the Serial1 class.
- TWI: 2 (SDA) and 3 (SCL). Support TWI communication using the Wire library.
- External Interrupts: 0(RX), 1(TX), 2 and 3. These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details.
- PWM: 3, 5, 6, 9, 10, 11 and 13. Provide 8-bit PWM output with the analogWrite() function.
- SPI: on the ICSP header. These pins support SPI communication using the SPI library. Note that the SPI pins are not connected to any of the digital I/O pins as they are on the Arduino Uno, they are only available on the ICSP connector and on the nearby pins labelled MISO, MOSI and SCK.
- RX_LED/SS: This is an additional pin with respect to the Leonardo. It is connected to the RX_LED that indicates the activity of transmission during USB communication, but is can also used as slave select pin (SS) in SPI communication.
- LED 13: There is a built-in LED connected to digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it's off.
- Analog Inputs: A0-A5, A6 - A11 (on digital pins 4, 6, 8, 9, 10, and 12). The Micro has a total of 12 analog inputs, pins from A0 to A5 are labelled directly on the pins and the other ones that you can access in code using the constants from A6 trough A11 are shared respectively on digital pins 4, 6, 8, 9, 10, and 12. All of which can also be used as digital I/O. Each analog input provide 10 bits of resolution (i.e. 1024 different values). By default the analog inputs measure from ground to 5 volts, though is it possible to change the upper end of their range using the AREF pin and the analogReference() function.
There are a couple of other pins on the board:
- AREF. Reference voltage for the analog inputs. Used with analogReference().
- Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.
The Micro has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers. The ATmega32U4 provides UART TTL (5V) serial communication, which is available on digital pins 0 (RX) and 1 (TX). The 32U4 also allows for serial (CDC) communication over USB and appears as a virtual com port to software on the computer. The chip also acts as a full speed USB 2.0 device, using standard USB COM drivers. On Windows, a .inf file is required. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Arduino board. The RX and TX LEDs on the board will flash when data is being transmitted via the USB connection to the computer (but not for serial communication on pins 0 and 1).
A SoftwareSerial library allows for serial communication on others Micro's digital pins.
The ATmega32U4 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify use of the I2C bus; For SPI communication, use the SPI library.
The Micro appears as a generic keyboard and mouse, and can be programmed to control these input devices using the Keyboard and Mouse classes.
The Micro can be programmed with the Arduino software (download). Select "Arduino Micro from the Tools > Board menu.
The ATmega32U4 on the Arduino Micro comes pre-burned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the AVR109 protocol.
You can also bypass the bootloader and program the microcontroller through the ICSP (In-Circuit Serial Programming) header using Arduino ISP or similar.
Automatic (Software) Reset
Rather than requiring a physical press of the reset button before an upload, the Micro is designed in a way that allows it to be reset by software running on a connected computer. The reset is triggered when the Micro's virtual (CDC) serial / COM port is opened at 1200 baud and then closed. When this happens, the processor will reset, breaking the USB connection to the computer (meaning that the virtual serial / COM port will disappear). After the processor resets, the bootloader starts, remaining active for about 8 seconds. The bootloader can also be initiated by pressing the reset button on the Micro. Note that when the board first powers up, it will jump straight to the user sketch, if present, rather than initiating the bootloader.
Because of the way the Micro handles reset it's best to let the Arduino software try to initiate the reset before uploading, especially if you are in the habit of pressing the reset button before uploading on other boards. If the software can't reset the board you can always start the bootloader by pressing the reset button on the board.
USB Overcurrent Protection
The Micro has a resettable polyfuse that protects your computer's USB ports from shorts and overcurrent. Although most computers provide their own internal protection, the fuse provides an extra layer of protection. If more than 500 mA is applied to the USB port, the fuse will automatically break the connection until the short or overload is removed.
The maximum length and width of the Micro PCB are 4.8cm and 1.77cm respectively, with the USB connector extending beyond the former dimension. The layout allows for easy placement on a solderless breadboard.
Pin Mapping of the Arduino Micro displays the complete functioning for all the pins, to use them as in the Leonardo.
This product is listed in:
Documentation and Resources:
- Arduino Workshop for Beginners
Workshop Overview Welcome to the Arduino Workshop, where you'll be able to follow our guided course which covers everything you'll need to know in order to create your own Arduino projects and become a leveled up maker. My name is Sam and along wit...
- Arduino Boards, Compared
There are a bunch of Arduino boards, they come in different shapes and sizes, with different processing power, digital IO, and other capabilities. Rather than telling you guys what to buy, we have put together a handy guide to show you the capabiliti...
- How to Use a Logic Level Shifter/Converter
So you’ve got your microcontroller/development board ready to go, you’ve got your sensors and external components and you’re ready to build an IoT device to make the world your slave. But hang on a minute, the sensor you have only o...
- Arduino with LattePanda
Ah, Arduino and LattePanda coming together at last. What could be better? Well along with the fact that your LattePanda is a fully fledged Windows 10 computer so you can program any Arduino board you want as normal, one of the best things about Latte...
- Potentiometers and the Arduino Uno
Variable resistors come in all shapes and sizes, and they all do the same basic job. They allow you precisely control voltage/current flow within a circuit. The most common type of variable resistor we see in DIY electronics is the Potentiometer, or ...
- Relay Operation and the Arduino Uno
If you could operate your switch without physically toggling it on and off, you would open yourself up to an entire section of electronics. Relays are one of the best ways of doing this. A relay is essentially just a switch, controlled by an electrom...
- Keypad entry to caravan using Arduino
I used to sleep in a caravan on my grandparent's property and as amenities were inside the house I had to go in and out of it quite regularly. I got sick of fumbling around with keys to go in and out of my caravan, so this project uses an Arduino Micro, 3x4 keypad, LCD and an electric door strike to unlock the caravan door. ...
- Cosplay Blaster
Hey guys! First time poster. I've been working on a blaster for my girlfriend's costume, and I thought I would share it with everyone. When triggered, it plays a selected sound effect and flashes the light. Pretty simple :)
- FM Radio with Arduino, LCD and Si4703
A couple of years ago, I found a modern jukebox (with iPod connectivity, AM/FM radio, CD player and LEDs) dumped in my street. The body was in decent condition but all of the electronics were ruined apart from the LEDs. I decided to take it and replace all of the electronics with my own and add a few cool features. One of the parts of the larger project was to make an FM radio with an LCD and pushbuttons to control the frequency...
- Coffee Grinder With Arduino
Using a few bits and pieces, this ordinary coffee grinder now has two presets to run the motor for a programmable length of time. The idea being that the grinder running for a set amount of time will deliver a certain amount of coffee each button press meaning the beans can be stored unground, keeping them fresher for longer. I completed this project for a friend, Ian, who lives for coffee. Ian wanted the same functionality in h...
- The Hipster Coaster
We wanted to make a interactive display of the fun that can be had with DIY projects to take to Sydney Mini Maker Faire. We decided to do so by utilising the TinkerKit Braccio from Arduino.org, alongside some 3D Printing ingenuity, for an engaging display for all ages. Enter the Hipster Coaster in all its glory. All the parts were printed seperately on our family of Lulzbot 3D Printers, later stuck together using a mi...
We deliver Australia-wide with these options:
- $3 for Small Items (4-6 days, not tracked, only available on selected small items)
- $6.95 for Standard Post (2-4 days, tracked)
- $8.32 for Express Post (1-2 days, tracked)
- Pickup - Free! Only available to customers who live in the Newcastle region
If you order lots of gear, the postage amount might increment based on the weight of your order.
Our physical address:
Unit 18, 132 Garden Grove Parade
Please checkout our customer service page if you have other frequently asked questions such as "do we do purchase orders" (yes!) or "are prices GST inclusive" (yes they are!). We're here to help - get in touch with us to talk shop.