June 3, 2012 AT 3:16 pm

Arduino Leonardo Pinout Reference

(cross-posted from my blog)

I made this Arduino Leonardo pinout reference for anyone considering building shields for the Leonardo. Please note that shields designed for the UNO, Duemilanove, Diecimila and others may not work on the Leonardo, because some of the lower-level pin functions have been moved around. This image helps you see some of the differences.

For example, the lower 8 digital pins are no longer all a single port, and many of the pins, with the exception of the RX and TX lines, are moved around. Some of the PWM lines are in the same place, but are now connected to different ports and OC registers than they were before.

On the other hand, you now have access to twice as many ADC pins as you did before, and you don’t have to give up 2 ADCs for I2C. You also get two more low-level interrupt lines and, of course, USB native functionality, which (I personally feel) is exciting!

This pinout was derived from the info found here. PDF is here (it’s big! ~5MB) The Leonardo image is from the official Arduino Leonardo page.

Enjoy!


“D is for Diode” – Circuit Playground Episode 4 is out now! CLICK HERE TO WATCH!

Have an amazing project to share? Join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Learn resistor values with Mho’s Resistance or get the best electronics calculator for engineers “Circuit Playground”Adafruit’s Apps!



13 Comments

  1. This is great.

    I like to print things like this on 4×6 photo paper, to keep handy while I’m working. It’s funny how once you start building all of the labels on the PC board disappear.

  2. I’ll stick with compatibility for now.

  3. Correct me if I am wrong… and it might be as simple as rewritting the libraries. Wouldn’t the leo be the perfect time to fix the pin layout. I mean they didnt want to fix the uno since it would break all the shields but with the leo they did that anyway.

  4. @ Denbo

    Leo = not currently compatible with most shields

  5. @Technologic: perhaps in some cases this could be done, but there are many other cases where it just wouldn’t work. Sketches which use the lower 8 digital pins as PORTD (something which dramatically increases speed) won’t work, because those pins are now spread out over 3 ports, and not continuously.

    The best way to look at it is that the Leonardo is a different tool than the Uno or it’s predecessors, to be used in a different way. :)

  6. @ johngineer

    I ment more as making it breadboard friendly.. Getting rid of the weird space.

  7. @Technologic: I was referring to your comment about the libraries.

    @everyone:

    Regarding the header spacing: it’s done, and there’s nothing any of us can do about it. If the only comment you have to make is a complaint about the board, then please refrain from making any comment at all.

  8. +1 john :)

  9. Wow.. sorry.
    Thanks for the layout picture. It is very helpful.

    Also it wasnt ment as a complaint. Sorry if you took it that way.

    I wasnt refering that you (adafruit) could do anything about it.. It was ment it as a query as to the fact that they (arduino.cc) couldnt change the arduino spacing becuase of compatibility but since the leo broke compatibility anyway it was the perfect time to do so.
    Thought maybe you might have had some logic as to it that I didn’t.

    Anyway keep up the Great work.

  10. I swear I read somewhere official that the arduino leonardo was supposed to be a 32bit arm based board with more computing power…. Kind of a letdown since the teensy seems to be about the same thing, and it fits in a breadboard.

  11. Nevermind that’s the arduino Due

  12. I would like to reassure everybody that the Leonardo is compatible with most shields.

    Clearly older shields designed years ago only had to deal with 1 board. Already the mega made it impossible for us to have the same pins in the same places so choices had to be made.

    With the R3 layout we reached the final layout of this Arduino product line and we managed to have all the most common interfaces (analog/pwm/SPI /I2C) in a consistent place on all boards.

    This new layout also allows shields to auto configure when they are used on a 3.3v board (IOREF)

  13. @Technologic: no problem! Please know that the force of my statement about the headers wasn’t directed at you. We received several nasty comments (which never made it past moderation) about the header spacing thing. We just got tired of it, so I had to kinda put the hammer down. :)

    @Massimo: thank you for responding! I think that definitely clears some things up and helps people understand why choices were made.

Sorry, the comment form is closed at this time.