This guide documents compatibility of a variety of Adafruit shields against a number of mainstream Arduino boards. Workarounds are provided for certain otherwise-incompatible cases.

This guide does not cover every esoteric Arduino spinoff out there; just because a board uses the Arduino shield pinout is no guarantee of compatibility. The provided libraries work primarily with AVR-based Arduinos (and occasionally the Arduino Due), but aren’t supported on alternative architecture boards like Netduino, chipKIT or Maple. You might find a compatible library elsewhere, but that’s some Wild West stuff and we can’t help debug this.

Common Troubleshooting Issues

If a shield is not working with a board listed as “compatible,” check the following:
  • If the shield arrived in kit form, or required adding headers, double-check all components and solder connections (look for solder bridges between pads, “cold” solder joints, etc.). Here’s a tutorial on good soldering technique.
  • Test the shield using the example code first. More complex software might exceed available RAM. If your code is behaving unexpectedly and you suspect the Arduino’s memory is full, this guide can help you understand and trim memory usage.
  • Are you having trouble compiling the code? The library might not be installed correctly. Here’s a guide to doing it right.
  • Multiple shields may be trying to use the same pin(s). Check the Pin & Address Reference section of each shield page, looking for any overlap. Many shields can be reconfigured by cutting trace(s) with an X-acto knife and installing a wire jumper to a different pin, then making the corresponding changes in the code.
  • Are you using either a genuine Arduino board, or a reputable firm’s compatible board? Counterfeit Arduino boards look like the real deal, but often cut corners that lead to compatibility headaches. Here’s a guide to spotting fakes.
  • Adafruit shields get badly copied too! Did your shield come from either Adafruit or one of our distributors? If you found a “too good to be true” deal on a discount electronics or auction site, it probably is too good to be true!
  • If nothing else helps, visit the Adafruit Customer Support Forums. You can search past posts to see if others have a solution…or, if not, you can discuss your specific issues with support staff.

Regarding “Soft” SPI and the Arduino Mega

Some shields (those with SD cards) can operate with the Arduino Mega one of two ways:
  • Use the Adafruit SD library, which allows SPI pin numbers to be specified in one’s sketch (usually easier).
  • Modify the stock Arduino SD library to use “soft” SPI.
The latter requires editing one file included in the Arduino distribution. This is relatively straightforward with Windows and Linux:
Alongside the Arduino application executable you’ll find a folder called “libraries.” Look in libraries\SD\utility to find the file Sd2Card.h, which can be opened with Notepad or any simple text editor.
There’s an extra step required on the Mac, where the Arduino application appears as a unified package:
Right-click on the Arduino application and select “Show Package Contents” from the pop-up menu.
Navigate through the sub-folders Contents/Resources/Java/libraries/SD/utility and open the file Sd2Card.h using TextEdit or any simple text editor.
Once editing that file (on all systems — Windows, Mac or Linux), locate and change the following line:
#define MEGA_SOFT_SPI 0
to instead read:
#define MEGA_SOFT_SPI 1
Save the changes to the file, then re-compile your code.

Reverse this change if you want to use the library with non-Mega boards.

This folder is for stock libraries distributed with the Arduino IDE, and will be overwritten any time a new version is installed. Do not install other libraries (such as those from Adafruit) here! They should instead go in your personal sketchbook/libraries folder.

This guide was first published on Aug 14, 2013. It was last updated on Sep 19, 2013.

This page (Overview) was last updated on Jul 22, 2013.

Text editor powered by tinymce.