Do you always have to solder the shield?

I'm new to Arduino and this forum so forgive me for the dumb question

This is the hardware I have...

1 - Arduino Mega 6560 R3

2 - 3.5" TFT LCD Color Touch Screen 480x320

3 - UNO R3 3.5" TFT Touch Screen with SD Card

I want a touch screen with an SD card slot I can use without having to solder wires. Screen 2 and 3 are apparenty designed specifically for the Mega 6560. Both screens have different pins in different places. When I plug in screen 1, the screen works and the SD card doesn't, and on screen 2 the SD card works but the screen doesn't.

I managed to get screen 2 working by soldering the following
SD_SCK - 52
SD_DO - 50
SD-DI - 51
SD_SS - 53

I need a way of doing this without soldering, is there a 3.5" touch screen with SD card for the mega which doesn't need soldering? Or can the pins be changed with coding?

Many Thanks,
Arduino Noob

Looking at option #2, it looks like it is designed to plug directly into the Mega 2560 along the end of the board such that those pins 50..53 would mate directly?

Yes thats correct, both plug directly into the board. But on one the sd card works but not screen, and on the other its the opposite way around

I then have to solder wires to get everything working

But doing the soldering you described is identical to plugging the board in.

FYI.. I do not see any pins labeled SD_SCK, SD_DO, or SD-DI on the board

SD_SCK, SD_DO, SD-DI are on the back of the screen. They would normally fit into 10, 11, 12, 13, but I have to wire them into 50, 51, 52, 53 to get the SD card to work

They are not on the back of the screen for the second screen you linked to. Maybe the first?

Pins 10-13 are for SPI on an UNO, the Mega uses pins 50-53.

Hi blh64, yeah thats what I mean, I'm having to solder it which I want to avoid. Can I change the pins via code? Or do I need to switch to the UNO to not solder?

What library are you using? If the library is using the default SPI pins, then on a mega, it should just use 50-53 by default

I'm using

#include <SPI.h>            // f.k. for Arduino-1.5.2
//#define USE_SDFAT
#include <SD.h>             // Use the official SD library on hardware pins
#include <TMRpcm.h>  
#include <Adafruit_GFX.h>   // Hardware-specific library
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
TMRpcm audio;

On my screen it doesn't connect to pins 50-53. It connects to pins 10-13. I have to wire 10-13 to 50-51, but I want to not have to do that

SD2PinMap.h has --

#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
// Mega

// Two Wire (aka I2C) ports
uint8_t const SDA_PIN = 20;
uint8_t const SCL_PIN = 21;

// SPI port
uint8_t const SS_PIN = 53;    //
uint8_t const MOSI_PIN = 51;  //
uint8_t const MISO_PIN = 50;  //
uint8_t const SCK_PIN = 52;   //

So you are using the first screen you linked to originally? So the issue is that the SD card is using SPI which, on the Mega are pins 50-53 but your shield is connected to pins 10-13. That is the SPI hardware for each of those boards. You can not change that. Rerouting of signals will be required. if you don't connect the shield directly into the Mega, you can use jumper wires (aka Dupont wires) to make all the connections. Just make sure to get the male-to-female type.

It seems like your second shield is much better suited for a mega.

Or change the library to use 10-13 ?

But that is hardware. There is no software SPI. Am I wrong?

Here's one (haven't tried it)
GitHub - RevPhil/arduino_SoftwareSPI: An alternative to SPI using Bit-bang Serial

Arduino Software SPI User Guide - Seeed Wiki (

Display #2 is a Uno Shield. It will plug into the MEGA2560 (or Uno, Due, Leo,...)
Install MCUFRIEND_kbv via IDE Library Manager.
It works 100% on Uno. i.e. TFT, Touch, SD.

However you have to bit-bang the SD Card on a MEGA2560
Install SdFat via IDE Library Manager.
Configure SdFat to use 10,11,12,13 as described in SdFat examples

Display #3 is a Mega2560 Shield. It plugs into MEGA2560 or Due.
There is No Touch. But TFT and SD work 100%.
Install TFT_HX8357 library from Bodmer.

If you do not need Touch, display #3 is the best choice.


p.s. display #3 will work with UTFT. display #2 does not work with UTFT.