Arduino Leonardo + 2 Shields. Pins compatibility?

Hi guys, I have an arduino leonardo board and wish to add 2 shields on it.

Following the specs, pins 10,11 and 12 are conflicting, can someone confirm?
I'm kinda new to arduino, but I assume the used pins are defined in the associated libraries?

I tried to take a look at the ethernet shield library (github/arduino-libraries/Ethernet) and could find the pin 10 used for initialization. (Ethernet.init(sspin = 10) so I assume I can easily change it with a free pin like the pin 2?
What about others, can I easily remap them to other pins or is it hardcoded in the hardware?

Both boards use the SPI interface which is a bus and you can connect multiple devices (shields in your case) to it. So there is no need to change 11, 12 and 13.

Note that on a Leonardo the SPI interface is not on pins (10),11,12 and 13 but on the 6-pin header.

  1. USB host shield
    I can't find in the schematic (https://www.arduino.cc/en/uploads/Main/USBHostShield-Rev2.pdf) that pins 11, 12 and 13 are used.
  2. Ethernet shield
    The same, schematic https://www.arduino.cc/en/uploads/Main/arduino-Ethernet-Shield2-V2-sch.pdf

It does not look like you can adjust the CS (SS) pin for the host shield library but I might be wrong , you can adjust it in the ethernet library, hack the ethernet shield and route pin 10 to another pin.

Hello, thanks for your answer. By hacking what do you mean exactly? Before using it I must init the ethernet shield using Ethernet.init(sspin=10). Can I just change the pin from this parameter?

Also, since you mentionned these 6 headers, I'm wondering if both shields are even connectable without doing some soldering..


As you can see both shields don't forward the 6 front pins, so I guess it's a problem?

By hacking I mean that you have to cut a trace or pin on the shield that does not allow you to select a CS in software and next solder (or jump) a wire to a different pin.

I will try to look at that tomorrow or the day after as I'm not behind a computer at the moment.

Those shields indeed do not extend the pins so you do have a problem.

I think it's too much work for nothing. I mean, you the expert here but I could just use a DUE instead of a LEONARDO what do you think?
DUE natively supports an additionnal USB port for mouse/keyboard support, so it'd just require an ethernet shield over it, am I wrong?
As it's not AVR but SAMD? or yea I mean I figured out it's a different proc, would the ethernet shield used on the picture work on that model as well?

Here the arduino model I mean: Arduino Due — Arduino Official Store

Thanks for your feedbacks

PS: does DUE performances outperforms leonardo?

I can't say; the product mage only mentions Uno and Mega.

I'm not familiar with the Due.

It runs on a higher clock; however to execute a certain C++ statement might take more clock cycles. You can easily compile the same sketch for e.g. an Uno and a Due; the Due's reported memory usage (code) is significantly bigger than the Uno's one. E.g. a digitalWrite might result in e.g. 50 machine instructions on an Uno and 200 machine instructions on a Due (numbers are just thumbsuck).

For pure calculations I think it will be a lot faster.

Sorry that I can't help further.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.