1602 LCD Keypad Shield
[Arduino] / LCD_Keypad_Shield / code.txt
diff --git a/LCD_Keypad_Shield/code.txt b/LCD_Keypad_Shield/code.txt
new file mode 100644 (file)
index 0000000..78db954
--- /dev/null
@@ -0,0 +1,79 @@
+\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