Replace old LCD and 4 buttons with LCD sheild

Good day to you all, my name is terry and i am new to arduino, being old does not make this any easier to learn :~
Anyhow , here is my problem, i had an old led controler that used a basic LCD and 4 buttons, on an old arduino board purchased from a third party, sadly the LCD died. I decided to replace the whole unit and purchased myself a Mega 2560 with a DS1307 RTC, and a LCD Keypad shield, I have managed over a few weeks to learn some programing reading this forum, allowing me to convert my old program to the new board and arduino 1.0.5 but i am now stuck on the button side of things.
i have no idea how to convert the button menu from pin to analog i have.
my new buttons run on 1 pin
"int lcd_key = 0;
int adc_key_in = 0;"
and my question is how do i replace the old button code that have pin numbers, with the new button code in the menu please.

here are the bits of old and new code.
the old button code.

// create the buttons
Button menu     = Button(28,PULLDOWN);
Button select   = Button(29,PULLDOWN);
Button plus     = Button(30,PULLDOWN);
Button minus    = Button(31,PULLDOWN);

the new button code

// define some values used by the panel and buttons
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
 
// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor 
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 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 < 650)  return btnLEFT; 
 if (adc_key_in < 850)  return btnSELECT;

Is this done in the button library or in the program itself
any help would be greatly appreciated .
i have attached the full codes for each below if it helps

button_setup.ino (5.71 KB)

Terry,

Could you post where you purchased your new LCD shield so I can find some details about its buttons? Then I will need your original code (everything including libraries it uses). Depending on the architecture of your old code, you may need some modifications to make it work.

hello liudr thank you for the fast reply
i will try to attach all files i am using, some are big so may need 2 posts
here is where i got the parts
http://hobbycomponents.com/index.php/lcd-keypad-shield-for-arduino-duemilanove-lcd-16x02.html

I will attach all files i can, please be mercifully as i am new to arduino.
once again thank you for your time and assistance

EEPROMVar.h (2.04 KB)

LiquidCrystal.cpp (8.39 KB)

LiquidCrystal.h (2.67 KB)

here are the other library items attached and here is the button sketch

//Sample using LiquidCrystal library
#include <LiquidCrystal.h>
 
/*******************************************************
 
This program will test the LCD panel and the buttons
Mark Bramwell, July 2010
 
********************************************************/
 
// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 
// define some values used by the panel and buttons
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
 
// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor 
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 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 < 650)  return btnLEFT; 
 if (adc_key_in < 850)  return btnSELECT;  
 
 // For V1.0 comment the other threshold and use the one below:
/*
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 195)  return btnUP; 
 if (adc_key_in < 380)  return btnDOWN; 
 if (adc_key_in < 555)  return btnLEFT; 
 if (adc_key_in < 790)  return btnSELECT;   
*/
 
 
 return btnNONE;  // when all others fail, return this...
}
 
void setup()
{
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("Push the buttons"); // print a simple message
}
  
void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 lcd.print(millis()/1000);      // display seconds elapsed since power-up
 
 
 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons
 
 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   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;
     }
 }
 
}

Wire.cpp (7.36 KB)

Wire.h (2.45 KB)

DS1307.h (1.81 KB)

DS1307.cpp (4.78 KB)

due to the size i have put the main program here

if you need more please let me know

Great thanks. It'll take me sometime to figure out how your original code works and I might have some further questions :wink:

i have tried it with another set of buttons to the program pins, just to make sure it all works ok and it does,
so should all fail it would mean i have to put extra buttons in and not use the shield buttons.

i have just bean reading your blog, do you sell in to the uk

good afternoon Liudr, i hope you had a good christmas,
just in case you need the library files i have put them HERE as a zip file, top of the page.