LCD Keypad Shield

http://dx.com/p/lcd-keypad-shield-for-arduino-duemilanove-lcd-1602-118059

http://www.nuelectronics.com/download/projects/LCDshield_v1_1.pdf

http://arduino.cc/en/Tutorial/LiquidCrystal

//From http://www.spcoast.com/wiki/index.php/DX_LCD_Keypad_Shield

/* The circuit:
 * LCD RS pin to digital pin 8
 * LCD Enable pin to digital pin 9
 * LCD D4 pin to digital pin 4
 * LCD D5 pin to digital pin 5
 * LCD D6 pin to digital pin 6
 * LCD D7 pin to digital pin 7
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)



// include the library code:
 * 1) include 

// initialize the library with the numbers of the interface pins LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int ButtonVoltage = 0; int ButtonPressed = 0; int Backlight = 10; int fadeValue = 255;


 * 1) define BUTTON_SELECT   5
 * 2) define BUTTON_LEFT     4
 * 3) define BUTTON_DOWN     3
 * 4) define BUTTON_UP       2
 * 5) define BUTTON_RIGHT    1
 * 6) define BUTTON_NONE     0

void printnum(int n) { if (n<1000) { lcd.print(" "); if (n<100) { lcd.print(" "); if (n<10) { lcd.print(" "); }       }    }    lcd.print(n);

}

void setup { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.setCursor (0,0); lcd.print("Key: "); lcd.setCursor (7,1); lcd.print("Time:");

}

void loop { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(12, 1); lcd.print (millis/1000);

ButtonVoltage = analogRead(0);

lcd.setCursor (4,0); // Observed values: //    NONE:    1023 //    SELECT:  723 //    LEFT:    481 //    DOWN:    307 //    UP:      133 //    RIGHT:   0

if (ButtonVoltage > 800) ButtonPressed = BUTTON_NONE;   // No button pressed should be 1023 else if (ButtonVoltage > 500) ButtonPressed = BUTTON_SELECT; else if (ButtonVoltage > 400) ButtonPressed = BUTTON_LEFT; else if (ButtonVoltage > 250) ButtonPressed = BUTTON_DOWN; else if (ButtonVoltage > 100) ButtonPressed = BUTTON_UP; else ButtonPressed = BUTTON_RIGHT;

switch (ButtonPressed) { case BUTTON_SELECT: lcd.print ("Select"); break; case BUTTON_LEFT: lcd.print ("Left "); break; case BUTTON_DOWN:    { lcd.print ("Down "); fadeValue = fadeValue -5; if (fadeValue < 5) { fadeValue = 0; } analogWrite (Backlight, fadeValue); lcd.setCursor(12,0); printnum(fadeValue); delay (100); }           break; case BUTTON_UP:    { lcd.print ("Up   "); fadeValue = fadeValue +5; if (fadeValue > 254) { fadeValue = 255; } analogWrite (Backlight, fadeValue); lcd.setCursor(12,0); printnum(fadeValue); delay (100); }           break; case BUTTON_RIGHT: lcd.print ("Right "); break; case BUTTON_NONE: lcd.print ("None "); break; }

// print the number of seconds since reset: lcd.setCursor(0,1); lcd.print("V:");

printnum(ButtonVoltage); }