Warning to users of some vendors LCD keypad shields

Hardware Problem Solved, Software Sucks
I just got a SainSmart Keypad Shield 1602 LCD from eBay because it was cheap and had US shipping. After some diddling (I'm an Arduino newbie), I got the example to work, but: 1) I was momentarily blinded by the backlight; and 2) the display flickered when I pressed a button. It seemed as if the shield was drawing too much current. I goggled the problem and found this forum. I thought that II had the problem as in the first post in this topic from bperrybap,

I decided to rectify it with a diode or resistor fix. The schematics provided from SainSmart with the library were the same as posted by bperrybap, and showed the same problem, but my board, marked "LCD Keypad Shield V1.0", wasn't exactly the same, especially around the D10 pin. I took off the LCD display using my trusty hot air rework gun and a solder sucker and found there was indeed, as ringz, aka Martin, noted a 10k resistor in series with D10 and the base. Problem #1, sucking current from the Arduino, solved.

So why does the display flicker?? It's in the library driver DFR_Key.cpp, which is a very poor driver, and in the example program Key_Grab.ino, which is a very poor example. If the call to keypad.getKey() returns with anything other than SAMPLE_WAIT, the whole display is cleared (which takes a lot of time), and then refreshed (which takes even more time), rather then just refreshing the single character that contains the button number. Plus, the DFR_Key.cpp program thinks a button has changed a lot more than it should. If the A/D result differs by only one bit from the previous reading due to jitter, even though there may be no change in the button state, the driver incorrectly thinks the buttons have changed, causing yet more extraneous refreshes.

That's my 2c worth. Bye...