DFBOT Arduino LCD Keypad Shield
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
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
int i = 0;
int read_LCD_buttons(){
adc_key_in = analogRead(0);
if (adc_key_in > 1000) return btnNONE;
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;
return btnNONE;
}
void setup(){
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Push the buttons");
lcd.setCursor(9,1);
lcd.print(i);
}
void loop(){
lcd.setCursor(0,1);
lcd_key = read_LCD_buttons();
switch (lcd_key){
case btnRIGHT:
{
lcd.print("RIGHT ");
break;
}
case btnLEFT:
{
lcd.print("LEFT ");
break;
}
case btnUP:
{
i++;
lcd.print("UP ");
if(i>=0){
lcd.setCursor(9,1);
if(i>=10){
lcd.setCursor(8,1);
if(i>=100){
lcd.setCursor(7,1);
if(i>=1000){
lcd.setCursor(6,1);
}
}
}
}
lcd.print(i);
break;
}
case btnDOWN:
{
i--;
lcd.print("DOWN ");
if(i<10000){
lcd.setCursor(5,1);
lcd.print(" ");
if(i<1000){
lcd.setCursor(6,1);
lcd.print(" ");
if(i<100){
lcd.setCursor(7,1);
lcd.print(" ");
if(i<10){
lcd.setCursor(8,1);
}
}
}
}
if(i<0){
i=0;
lcd.setCursor(8,1);
lcd.print("No");
}
else lcd.print(i);
break;
}
case btnSELECT:
{
lcd.print("SELECT");
break;
}
case btnNONE:
{
lcd.print("NONE ");
break;
}
}
}