Arduino Leonardo

I’m pretty interested in the Arduino Leonardo that was just announced. Based on the datasheet, the really big deal is that there is now only one chip for both the programming being run (called a sketch on the arduino website), as well as for the serial interface to the computer.

This has two important consequences for the arduino board and programming. First, this board is a great choice if you would like to emulate keyboard/mouse functionality to a computer, which would allow for some interesting hacking ideas. Secondly, every time that you reset the Arduino Leonardo, the serial connection will be re-established. This is vastly different from the behavior that you get from the Uno and other Arduino boards; the serial connection on those boards is maintained no matter what behavior the sketch has.

Apparently, this also means a change in practices; from the arduino guide:

A word of caution on using the Leonardo as a Mouse or Keyboard: if the Mouse or Keyboard library is constantly running, it will be difficult to program your board. Functions such as Mouse.move() and Keyboard.print() will move your cursor or send keystrokes to a connected computer and should only be called when you are ready to handle them. It is recommended to use a control system to turn this functionality on, like a physical switch or only responding to specific input you can control. When using the Mouse or Keyboard library, it may be best to test your output first using Serial.print(). This way, you can be sure you know what values are being reported. Refer to the Mouse and Keyboard examples for some ways to handle this.

It also looks like you get more I/O pins with the Leonardo compared to the Uno, which could make it much more tempting, especially since the Leonardo is two Euro’s cheaper than the Uno.

Datasheet for the Atmega32u4: http://www.atmel.com/Images/7766s.pdf

Main announcement page: http://arduino.cc/en/Main/ArduinoBoardLeonardo

Youtube link for introduction: http://www.youtube.com/watch?v=QS2y-nc3uPI&feature=player_embedded