Jun 11

Arduino Leonardo Review

The new Arduino Leonardo board showed up last week and I’ve been having a lot of fun putting it through its paces. It’s always exciting to get my hands on a new piece of hardware and this is no exception, but it is not without its challenges.

The good

  • The USB mouse and keyboard functions are a lot of fun to work with. I don’t normally work on projects that function as human interface devices but this opens up new possibilities. The first thing I did was configure a Wii nunchuck as a mouse (Tutorial on how to set this up coming soon).
  • The microUSB connector is great. I always felt like the full sized USB Type-B connector on the UNO and earlier boards seemed straight from the 90s. I have microUSB cables everywhere because my phones have had them for the last 3 generations.
  • The layout of the board in general is much cleaner and organized than previous boards. I love that all 4 LEDs for power, blink, RX and TX are lined up between the barrel jack and the USB connector. Also the separate pins for SDA and SCL are nice (I’m still on the R2 version of the UNO so this is new for me).
  • Pin 13, which is tied to the onboard LED, is now a PWM pin so you can test fading without any additional components
  • Because the processor on the Leonardo performs the function of running sketches and communicating over USB there are less components needed which is the reason for the cleaner footprint but it also allows the board to be slightly cheaper.
  • Double the Analog Pins! A0-5 are in the same spot but D4, D6, D8, D9, D10, and D12 can also be used as analog input pins. If you have a project that happens to need more analog inputs this is a great benefit.

The challenges

  • Every time the Leonardo is reset it will create a new virtual COM port with a different number. This is different from the UNO and Duemilanove which were on the same ports regardless of where it was plugged in or if it was reset. The Leonardo will show up as different ports even when plugged into the same USB slot. The Arduino IDE 1.0.1 adapts to this by searching for a new virtual COM port but if you use other software to communicate with a project, like Putty, you will have to change it each time.
  • The pins on the Leonardo are remapped and repaired. Because the underlying chip has changed from the ATmega328 to the ATmega32u4 the functions of the physical pins on the chip and by extension the Arduino itself have different functions. A perfect example of this is the I2C pins which used to share the pins for Analog input 4 and 5. Now share the pins for Digital 2 and 3. This is going to be something to watch out for especially for shields that use hard coded pins for specific functions. To review how the pins are mapped see this graphic: PinMapping32u4
  • This pin mapping will also pose challenges to certain libraries that refer directly to the ports used on the chip itself. I ran into this with the Wiichuck code.


Overall the Leonardo is a great board. The new features are worth the minor frustrations that come along with it. If you have invested over the years in a large inventory of shields then you may want to consider if this is the right fit for you. However, if you want to take advantage of the USB device emulation functions, extra analog pins or plan to embed this in a project and want to save a couple bucks then I would not hesitate in purchasing one.

The Leonard is now available on Amazon: