Creative Commons images are CC BY 2.0

Description: Do you need an easy to use interface for your LCD screen? The LCD Button Shield V2 attaches to your Arduino to provide a 16x2, black character, green back light LCD with a keypad consisting of 5 keys — select, up, right, down and left. With this shield you will be able to move through menus and make selections straight from one board attached to your Arduino without requiring a massive tower of shields.

The LCD Button Shield V2 works perfectly in 4-bit mode with the “LiquidCrystal” library found in the Arduino IDE, using this library will allow you to control the LCD with only 6 digital I/O lines. Version 2 of this shield provides you with the capability of pushing multiple buttons at once and combining the results. No longer will you be restrained to only 5 inputs, now you have the ability to make use of 32 different button combinations!

Check the LCD Button Shield V2 Wiki link is the Documents section below for example code, schematics, and additional information.

Note: Headers are included with this shield but not soldered on.


Recommended Products

Customer Comments

  • I’m interested in using this with a SparkFun Photon RedBoard. The Photon runs at 3.3v, but it looks like this LCD shield uses 5v (per schematic). Can I modify it to use 3.3v, or does it need all 5v?

    • Did you get this to work? We are interested in it for a 3.3v Arduino Zero project.

  • Just soldered mine together and for whatever reason, it will not work. I have it on an Arduino uno, which works, tested all connections, and tried the LiquidCrystal hello world example with both the default pins and the ones given in the shield’s documentation. However, it shows only a single row of 16 black boxes. Does anyone have any suggestions?

  • I have the ESP8266 WiFi Shield and would like to stack the LCD shield on top of this. Would this create a conflict in the pins used, or would both shields work together?

  • Are there any plans to release this as a bare pcb? I have an LCD and buttons laying around, it would be nice to be able to use those and save a few $.

  • Are you really supplying stackable headers with this? :-) (Stackable like in “I want to place another shield on top of this”…)

    • cheap perfboard with a window cutout makes for a quick and easy front panel :D
      I suspect the headers are more for access to pins for testing, and if you’ve got umpteenthousand stackable ones in inventory, you might as well use them ;)

    • The stackable headers are useful if you are prototyping with a breadboard.

  • “capability of pushing multiple buttons at ones” should be ‘once’

Customer Reviews

4.3 out of 5

Based on 7 ratings:

Currently viewing all customer reviews.

1 of 1 found this helpful:

Almost perfect!

Good backlight, buttons are nice and clicky - software library is complete and has good examples.

The buttons didn’t work out of the box for me, in any of the sample code. The resistances were all wrong! Luckily I had an LCD shield, so I just had the LCD display the button ADC values and plugged them in; working perfectly ever since.

I would like the ability to switch the button-read input… otherwise worked well.

4 of 4 found this helpful:

Would be excellent if there were better documentation

LCD + menu buttons = Just what I needed.

As this is the top shield for a project, I ditched the included headers and used break-away male headers with the pins pointed downward and soldered on the top of the board. No female connectors but no lost as far as my project is concerned.

The wiki offers sample code with little to no documentation and that code is wrong, at least for this version of the board. There’s no way to change the wiki so I’ll just leave this here:

There are some magic #define’s at the top that set values for Rbase, Rup, Rdown, Rleft, Rright, and Rselect. These values are the resistor values (in K Ohms) attached to the respective buttons but they are wrong, at least for V2 of the board. A quick glance at the schematics will show the the correct values should be:

Rbase : 10 Rup : 100 Rdown : 75 Rleft : 51 Rright : 39 Rselect : 15

This will get the code to work correctly and help you see what’s going on.

Apart from the documentation, If there were one thing that would like to see it would be some type of button extenders (silicone? plastic caps?) that would allow this to be mounted in a box.

3 of 3 found this helpful:

Quick And Simple LCD Shield

This is my first shield to go along with my first Arduino board (SparkFun RedBoard), and it was a good choice. For those somewhat new to electronics and Arduino, this shield is quite easy to understand. The sample code is a different story. Keep in mind you will need to solder on the headers to attach this shield to an Arduino.

All of the buttons have a different value resistor tied to ground and analog pin A0, which should give you a different value if you analogRead() pin A0. This keeps the analog pin usage to a minimum, as well as allows you to push more than one button at a time (which may not be that useful with this button arrangement). You can also set the LED backlight brightness by writing via analogWrite() to pin 10 a value of 0 to 255 (this outputs a PWM signal at a duty cycle defined by your input value).

The quality of this board is pretty good, but my OCD kicked in when I saw the LCD soldered in not completely straight. The stackable headers are not useful for stacking something on top of the LCD, but are for breadboard prototyping.

The price is good, seeing that the same price only gets you a SparkFun branded display on this site. Overall, I would recommend this shield to anyone.

Simple - and pretty tough

I’m using one of these to show status on an autonomous (RoboMagellan) robot. It was simple to set up and start using and, having taken the brunt of a couple of rollover crashes, I can report it’s pretty tough too.

One caveat is the documentation, which is, initially at least, confusing.

0 of 1 found this helpful:

LCD Button Shield

The first one has been working great! Take care with your soldering!

It works fine, but not perfect

It works and it’s easy to use. Very easy way to add a user interface to your project.

But… It uses 7 i/o pins! That’s a lot for some projects, it only leaves you 12 i/o’s on an Uno. So you have to plan your project around this limited amount of i/o.

And… Beware, the older version had different resistor values or something, so code on the web written for that version will need the analog values for each button tweaked.

But it works fine. You just have to plan for these limitations.