implement PIR timeout
[Arduino] / LCD_Keypad_Shield / code.txt
1 \r
2 //example use of LCD4Bit_mod library\r
3 \r
4 #include <LCD4Bit_mod.h> \r
5 //create object to control an LCD.  \r
6 //number of lines in display=1\r
7 LCD4Bit_mod lcd = LCD4Bit_mod(2); \r
8 \r
9 //Key message\r
10 char msgs[5][15] = {"Right Key OK ", \r
11                     "Up Key OK    ", \r
12                     "Down Key OK  ", \r
13                     "Left Key OK  ", \r
14                     "Select Key OK" };\r
15 int  adc_key_val[5] ={30, 150, 360, 535, 760 };\r
16 int NUM_KEYS = 5;\r
17 int adc_key_in;\r
18 int key=-1;\r
19 int oldkey=-1;\r
20 \r
21 void setup() { \r
22   pinMode(13, OUTPUT);  //we'll use the debug LED to output a heartbeat\r
23 \r
24   lcd.init();\r
25   //optionally, now set up our application-specific display settings, overriding whatever the lcd did in lcd.init()\r
26   //lcd.commandWrite(0x0F);//cursor on, display on, blink on.  (nasty!)\r
27    lcd.clear();\r
28   lcd.printIn("KEYPAD testing... pressing");\r
29 }\r
30 \r
31 void loop() {\r
32 \r
33         adc_key_in = analogRead(0);    // read the value from the sensor  \r
34   digitalWrite(13, HIGH);  \r
35   key = get_key(adc_key_in);                    // convert into key press\r
36         \r
37         if (key != oldkey)                                  // if keypress is detected\r
38         {\r
39     delay(50);          // wait for debounce time\r
40                 adc_key_in = analogRead(0);    // read the value from the sensor  \r
41     key = get_key(adc_key_in);                  // convert into key press\r
42     if (key != oldkey)                          \r
43     {                   \r
44       oldkey = key;\r
45       if (key >=0){\r
46       lcd.cursorTo(2, 0);  //line=2, x=0\r
47                         lcd.printIn(msgs[key]);\r
48       }\r
49     }\r
50   }\r
51   \r
52   //delay(1000);\r
53   digitalWrite(13, LOW);\r
54   \r
55 \r
56  \r
57   \r
58   \r
59 }\r
60 \r
61 // Convert ADC value to key number\r
62 int get_key(unsigned int input)\r
63 {\r
64         int k;\r
65     \r
66         for (k = 0; k < NUM_KEYS; k++)\r
67         {\r
68                 if (input < adc_key_val[k])\r
69                 {\r
70            \r
71     return k;\r
72         }\r
73         }\r
74     \r
75     if (k >= NUM_KEYS)\r
76         k = -1;     // No valid key pressed\r
77     \r
78     return k;\r
79 }