I have just bought a 16x2 LCD display with buttons. I can get the display to work and do various basic sketches included in the Arduino IDE. However, I cannot figure out how to control the buttons.
The buttons work using analog pin 0 and from what I was able to understand from what I have read online, it is something to do with the values you receive when the buttons are pressed. I can't seem to find out what values mine gives, I have found a sketch that is supposed to map the buttons, but I cannot get it to work, as I don't really understand what it is doing, I am very new to this.
The code I am using is as follows:
#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 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 < 600) return btnLEFT;
if (adc_key_in < 920) return btnSELECT;
return btnNONE;
}
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Push the buttons");
}
void loop() {
lcd.setCursor(9, 1);
lcd.print(millis()/1000);
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: {
lcd.print("UP ");
break;
}
case btnDOWN: {
lcd.print("DOWN ");
break;
}
case btnSELECT: {
lcd.print("SELECT");
break;
}
case btnNONE: {
lcd.print("NONE ");
break;
}
}
}
If anyone can give me any pointers it would be greatly appreciated.
Liam