LCD Button Shield V2

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.

LCD Button Shield V2 Product Help and Resources

Example Arduino code for the LinkSprite LCD Button Shield V2

Sample code for this shield can be downloaded here.


Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

1 Soldering

Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels


Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels


Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

2 Electrical Prototyping

Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels


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?

  • 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.1 out of 5

Based on 10 ratings:

Currently viewing all customer reviews.

5 of 5 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.

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.

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.

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.

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.

Not that great

In theory this has all the features I’d want, except that the designers tried to save pins. The R/W (read/write) pin on the HD44780 isn’t connected, which breaks the HD44780 reference code included with AVR LibC. The other annoyance is the use of parallel resistors of different values to encode the key switches onto a single pin. I’m sure it seemed like a good idea at the time, but the analog values for each keyswitch tend to move around. For less design and coding effort they could have just multiplexed the the keyswitches onto the HD44780 data lines. One last neglected detail was the placement of the select switch between the pin socket and the LCD module. It makes the button difficult to hit sometimes.

Unexpected "features"

Overall you can’t beat the price for what you get, although I was a bit surprised to learn how the buttons worked. Each button creates a voltage divider and you are using analog read to determine which button(s) are pressed based on different resistors connected each button (look at the schematic and all is obvious). This is a clever way to save on pins, but you may run into trouble if you were expecting to have buttons generate interrupts as I was. Minor point, but it’s laid out in such a way that the headers do not seat fully on an Adruino UNO, there is mech. interference with the boards USB connector (maybe barrel connector too). It functions, but it could have been done nicer, maybe V3? Third time’s the charm? Would have been nice if there were jumpers so the buttons could be wired to individual pins. Would have also preferred the LCD come unsoldered in case you wanted to add header connectors there as well.

If you dig in, it’s clearly documented, but in a rush it isn’t so obvious what you are signing up for. For the money, it’s a good buy, with some more effort, it could be great…..

my $0.02

Push the button Max!

This was my first experience soldering headers into place and while I’m quite sure I would flunk inspection for the next Space-X launch, it works and all buttons map out OK. Chris was helpful as always. I used the Arduino as an alignment guide which proved interesting trying to get the first 8 pins ( 2 on each header) soldered in between the two shields. Should I have placed the IMU shield on top of the LCD instead of the other way around? Oh Well it worked.

I haven’t incorporated the push button functionality into a sketch yet as I’ve only used it as a display for an Arduino IMU shield project and haven’t figured out the IMU sketch mods yet.

I like the clean installation. Only had to bend out two pins and install two wire jumpers to deal with pin conflicts with the Arduino shield.

Looking forward to exploring more functionality of the push buttons once I get up to speed with the programming.

0 of 1 found this helpful:

LCD Button Shield

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