Arduino UNO R3 Compatible using CH340T
 

  10.00 JD                  Add to cart

Arduino LCD Keypad Shield  

  10.00 JD                  Add to cart

Arduino LCD KeyPad Shield

 Arduino LCD Keypad Shield comes 6 momentary push button for menu navigation and also a 2×16 LCD. It only required to plug and use with Arduino main board and there no soldering or fly-wiring          are required. 

Hardware

All you need to do is to place the shield on the arduino. the below table shows the shield connection  

PinFunction
Analog 0Button (select, up, right, down and left)
Digital 4DB4
Digital 5DB5
Digital 6DB6
Digital 7DB7
Digital 8RS (Data or Signal Display Selection)
Digital 9Enable
Digital 10Backlit Control

 

 Another thing to notice is the KeyPad configration, the keypad make use of voltage divider concept. the output of the voltage divider is connected to A0. each bush button gives diffrent voltage value.

Code

//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

 /******************************************************* 
This program will test the LCD panel and the buttons
Mark Bramwell, July 2010 
********************************************************/
 
 // select the pins used on the LCD panel 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// define some values used by the panel and buttons 
int lcd_key = 0; 
int adc_key_in = 0; 
#define btnRIGHT 0 
#define btnUP 1 
#define btnDOWN 2 
#define btnLEFT 3 
#define btnSELECT 4 
#define btnNONE 5 

// read the buttons 
int read_LCD_buttons() 
{
adc_key_in = analogRead(0); // read the value from the sensor 
/* my buttons when read are centered at
these values: 0,144, 329, 504, 741 
we add approx 50 to those values and 
check to see if we are close */
 
// We make this the 1st option for speed reasons
since it will be the most likely result

if (adc_key_in > 1000) return btnNONE; 
 
// For V1.1 us this threshold 
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 250) return btnUP; 
if (adc_key_in < 450) return btnDOWN; 
if (adc_key_in < 650) return btnLEFT; 
if (adc_key_in < 850) return btnSELECT; 

// For V1.0 comment the other threshold and use the one below: 
/* if (adc_key_in < 50) return btnRIGHT;
 if (adc_key_in < 195) return btnUP; 
 if (adc_key_in < 380) return btnDOWN; 
 if (adc_key_in < 555) return btnLEFT; 
 if (adc_key_in < 790) return btnSELECT; */

 return btnNONE; // when all others fail, return this...

void setup()
 {
 lcd.begin(16, 2); // start the library 
lcd.setCursor(0,0);
lcd.print("Push the buttons"); // print a simple message 
 }

 void loop() 
{
 // move cursor to second line "1" and 9 spaces over 
 
 lcd.setCursor(9,1);
 lcd.print(millis()/1000); // display seconds elapsed since power-up 

 lcd.setCursor(0,1); // move to the begining of the second line 
 lcd_key = read_LCD_buttons(); // read the buttons 

 // depending on which button was pushed, we perform an action

switch (lcd_key) 
{
 case btnRIGHT: 
 {
 lcd.print("RIGHT "); 
break;
 }
 case btnLEFT:
 {
 lcd.print("LEFT "); 
 break; 
 }
 case btnUP: 
 {
 lcd.print("UP ");
 break;
 case btnDOWN:
 {
 lcd.print("DOWN ");
 break;
 }
 case btnSELECT: 
 {
 lcd.print("SELECT");
 break; 
 case btnNONE: 
 {
 lcd.print("NONE ");
 break;
 } 
 }
 }

 
 Refer to Arduino LCD library page for mor functions and examples