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:

May 28

Arduino Leonardo Released

Back in September of last year, the Arduino team announced a new, low cost Arduino board based on the Atmega32u4 titled  “Arduino Leonardo”. The time has finally come and the Leonardo is going to start showing up in stores in the next few weeks. It is similar to the UNO but with a simpler circuit. Here is how it stacks up to the Arduino UNO:

Operating Voltage5V5V
Input Voltage (recommended)7-12V7-12V
Input Voltage (limits)6-20V6-20V
Digital I/O Pins1420
PWM Channels67
Analog Input Pins612
DC Current per I/O Pin40 mA40 mA
DC Current for 3.3V Pin50 mA50 mA
Flash Memory32 KB32 KB
Clock Speed16 MHz16 MHz

More information about the hardware is available at the hardware page: http://arduino.cc/en/Main/ArduinoBoardLeonardo

Besides the difference in the pins, the major feature this has over the UNO is the ability for the Leonardo to emulate USB devices. It can appear to a computer as a mouse, keyboard, serial port and more. A great potential use for this feature is RFID logon for a PC. You could set it as a USB keyboard and when it detected the correct RFID fob it would enter “CTRL+ALT+DEL” then you credentials.

As with any computer peripheral you will need drivers. There are some included in the Arduino IDE and I’m sure the community will be developing some pretty interesting ones once the board comes out. To learn more about how the whole process will work, checkout the guide: http://arduino.cc/en/Guide/ArduinoLeonardo

You will also need the 1.0.1 version of the Arduino IDE available here: http://arduino.cc/en/Main/Software