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

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 8 ratings:

Currently viewing all customer reviews.

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.

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.

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.

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.

0 of 1 found this helpful:

LCD Button Shield

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

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.