--- /dev/null
+
+//example use of LCD4Bit_mod library
+
+#include <LCD4Bit_mod.h>
+//create object to control an LCD.
+//number of lines in display=1
+LCD4Bit_mod lcd = LCD4Bit_mod(2);
+
+//Key message
+char msgs[5][15] = {"Right Key OK ",
+ "Up Key OK ",
+ "Down Key OK ",
+ "Left Key OK ",
+ "Select Key OK" };
+int adc_key_val[5] ={30, 150, 360, 535, 760 };
+int NUM_KEYS = 5;
+int adc_key_in;
+int key=-1;
+int oldkey=-1;
+
+void setup() {
+ pinMode(13, OUTPUT); //we'll use the debug LED to output a heartbeat
+
+ lcd.init();
+ //optionally, now set up our application-specific display settings, overriding whatever the lcd did in lcd.init()
+ //lcd.commandWrite(0x0F);//cursor on, display on, blink on. (nasty!)
+ lcd.clear();
+ lcd.printIn("KEYPAD testing... pressing");
+}
+
+void loop() {
+
+ adc_key_in = analogRead(0); // read the value from the sensor
+ digitalWrite(13, HIGH);
+ key = get_key(adc_key_in); // convert into key press
+
+ if (key != oldkey) // if keypress is detected
+ {
+ delay(50); // wait for debounce time
+ adc_key_in = analogRead(0); // read the value from the sensor
+ key = get_key(adc_key_in); // convert into key press
+ if (key != oldkey)
+ {
+ oldkey = key;
+ if (key >=0){
+ lcd.cursorTo(2, 0); //line=2, x=0
+ lcd.printIn(msgs[key]);
+ }
+ }
+ }
+
+ //delay(1000);
+ digitalWrite(13, LOW);
+
+
+
+
+
+}
+
+// Convert ADC value to key number
+int get_key(unsigned int input)
+{
+ int k;
+
+ for (k = 0; k < NUM_KEYS; k++)
+ {
+ if (input < adc_key_val[k])
+ {
+
+ return k;
+ }
+ }
+
+ if (k >= NUM_KEYS)
+ k = -1; // No valid key pressed
+
+ return k;
+}\r
--- /dev/null
+\r
+//example use of LCD4Bit_mod library\r
+\r
+#include <LCD4Bit_mod.h> \r
+//create object to control an LCD. \r
+//number of lines in display=1\r
+LCD4Bit_mod lcd = LCD4Bit_mod(2); \r
+\r
+//Key message\r
+char msgs[5][15] = {"Right Key OK ", \r
+ "Up Key OK ", \r
+ "Down Key OK ", \r
+ "Left Key OK ", \r
+ "Select Key OK" };\r
+int adc_key_val[5] ={30, 150, 360, 535, 760 };\r
+int NUM_KEYS = 5;\r
+int adc_key_in;\r
+int key=-1;\r
+int oldkey=-1;\r
+\r
+void setup() { \r
+ pinMode(13, OUTPUT); //we'll use the debug LED to output a heartbeat\r
+\r
+ lcd.init();\r
+ //optionally, now set up our application-specific display settings, overriding whatever the lcd did in lcd.init()\r
+ //lcd.commandWrite(0x0F);//cursor on, display on, blink on. (nasty!)\r
+ lcd.clear();\r
+ lcd.printIn("KEYPAD testing... pressing");\r
+}\r
+\r
+void loop() {\r
+\r
+ adc_key_in = analogRead(0); // read the value from the sensor \r
+ digitalWrite(13, HIGH); \r
+ key = get_key(adc_key_in); // convert into key press\r
+ \r
+ if (key != oldkey) // if keypress is detected\r
+ {\r
+ delay(50); // wait for debounce time\r
+ adc_key_in = analogRead(0); // read the value from the sensor \r
+ key = get_key(adc_key_in); // convert into key press\r
+ if (key != oldkey) \r
+ { \r
+ oldkey = key;\r
+ if (key >=0){\r
+ lcd.cursorTo(2, 0); //line=2, x=0\r
+ lcd.printIn(msgs[key]);\r
+ }\r
+ }\r
+ }\r
+ \r
+ //delay(1000);\r
+ digitalWrite(13, LOW);\r
+ \r
+\r
+ \r
+ \r
+ \r
+}\r
+\r
+// Convert ADC value to key number\r
+int get_key(unsigned int input)\r
+{\r
+ int k;\r
+ \r
+ for (k = 0; k < NUM_KEYS; k++)\r
+ {\r
+ if (input < adc_key_val[k])\r
+ {\r
+ \r
+ return k;\r
+ }\r
+ }\r
+ \r
+ if (k >= NUM_KEYS)\r
+ k = -1; // No valid key pressed\r
+ \r
+ return k;\r
+}
\ No newline at end of file