Main Site Documentation

Defective product


I have just purchased a LCD & Keypad Shield that I am certain is defective, it runs correctly except for the SELECT, LEFT, and DOWN buttons do not register as being pushed. The RIGTH, and RST do work correctly. Just so that others do not think that I do not know how to spell RIGHT. This is how it is imprinted on the board.

I used the sample code from the website, and I have run the shield directly on the FEZ Domino board, and off of the Flash shield and I have the same results. RST resets the device, UP registers as UP, and RIGTH both register as the button pushes they are. I can not get SELECT, LEFT and DOWN to work at all. When UP is pressed and held it blinks as though it is not being pushed hard enough.

I am certain that AN0 on my FEZ board is working correctly as I have tested this port with other devices. The LCD itself is working correctly. I would like to speak to someone on replacing said unit.


There are 2 different drivers for the board. Are you using the right one? There is the red board and the black board.

All buttons are connected to AN0 as you know and each button have a different resistor to result in different voltage going to An0

Can you do this simple test please? Make a small app that read AN0 and print out the value then try the different buttons and you will see different values coming back. You may need to tweak the values we have in the provided driver.

Let us know how it goes


Also, pick a multi meter and check if the print lines are correctly connected.
(beeping from button to header)


Try connecting a power supply.


For Gus, you asked me to get you a readout of the input from AN0 during running with the shield plugged in. I have done this. I am using Visual Studio C#, and these are the values being printed from the output window. These are the copy pasted values. When the button is pushed the value does not vary and remains constant while the button is held.

No button push = 2.87905097

RIGTH = 895263.25 // Yes, I know this number is out of proportion to the rest of the buttons.
UP = 19.6197128
DOWN = 8.60369396
LEFT = 5.65027237
SELECT = 3.90374994


Change this in the LCD keypad driver:

const int ERROR = 15;

to this

const int ERROR = 25;


const int ERROR = 35;


OUTSTANDING. Okay, 35 worked, if you would not mind, would you please mind explaining what that did? I am more than relieved that it worked, but I would also like to understand what it did.


The buttons work through resistors, those resistors have error, nothing is perfect in life :slight_smile: You basically gave more room for error and it worked.


Thank you very much for your help. Me and a friend of mine, were looking for a chipset to work on a personal project, I have purchased $800 worth of your stuff. I have been nothing but happy with that decision. But this right here, this is how you make a loyal customer. Problem found, problem fixed, just had to ask. Nicely done.


We will fix the driver on our side to handle larger error range. 8)
Thank you for finding this issue.


The problem I had is now fixed to my satisfaction. I apologize for saying that the LCD was defective. I am glad that the fix was this simple also. I would much rather do that than reship the device.

But now my curiosity is up, the values that I was receiving when I modified the driver to remove the comment block on the while loop would explain why the keypad is acting like it does. It looks like the magic number in this case is 30. Is this something that I would have worry about if I purchased additional shields? Should I have a calibration on every shield?

When you do the next set of circuit boards, please correct the RIGTH with RIGHT too. But all things considered, this is a great product. I have already placed the LCD into a project and I have a few more projects for this.