Arduino Wifi Shield together with LCD Display Shield

Hi all,

got into Arduino tinkering just two weeks ago (first simple robot project is here: ) and I love it!

Next project would be a kind of "ticker" which displays a bit of text I get from a website on an LCD Display. I have already used the Wifi Shield to get the data from the Website and can display text with the LCD Keypad Shield - but only one shield at a time.

Any information or tutorial how to make both shields work in combination? Or how I can add an LCD Display (without shield) by my own? I googled a lot but could not find any tutorial or a Youtube demo on the successful combination of Wifi and LCD.


I would go with an I2C LCD, it uses only two pins, A4 and A5. There is a LCD I2C library in the playground section, here is the link.

I know that the Radio Shack where I live sells I2C lcd displays, and Ebay has tons, but the shipping time is terrible.

Added: If you get it from Ebay, they usually give you a compatible library.

OK, thanks for the hint! I just found a serial 7 segment display I ordered from Sparkfun but never used. This one works perfect as long as I only want to show 4 digits :)

For connecting parallel LCD interfaces to arduino, you can use adafruit tutorial:

Just FYI, I sell serial LCDs. You just do Serial.print to it and need no additional library. Google phi-panel LCD backpack and click the store link.

I was also having trouble using the Arduino WiFi shield and a LCD as it needed to use the same pins. But I figure out I could use both by using a Mega 2560. The examples page on of LCD's show that the display needs to use digital pins 5, 4, 3 and 2 for data. But the WiFi shield needs pin 4 for SD card. Also pins 12 and 13 are different on the Mega from the Uno. So the only thing I had to change was move the wire from digital pin 4, to any other pin (I chose 22) and put it in the code. This let me use both at once.

The examples page on of LCD's show that the display needs to use digital pins 5, 4, 3 and 2 for data.

You are interpreting the example incorrectly because the example was not adequately explained.

The LiquidCrystal library can use any available Arduino I/O pin for any of the six LCD signals. The example just happens to use pins 5, 4, 3, and 2 for data (as well as 12 and 11 for RS and E) but that was an arbitrary choice. All you have to do is match up the LiquidCrystal lcd(. . . ); statement to match your connections. Two additional comments in the example would have illustrated this quite well.

// initialize the library with the numbers of the interface pins
// LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);        // put your pin numbers here

Edit: If you are using an LCD shield then the situation is a bit different. In this case the pin numbers are fixed because the designer of the shield has chosen which Arduino I/O pins to use. The choice was arbitrary when he chose the pins but once the shield is manufactured then the LiquidCrystal lcd(. . . ); statement must match that design.