menu lcd button?


i have problem in making assignments.
my difficulty in directing cursor button , down on menu.
i ask help, take @ button "up" , "down" in program , see mistake? thanks


code: [select]
#include <liquidcrystal.h>
liquidcrystal lcd(7,6,5,4,3,2); 
 
int keypad_pin = a0;
int keypad_value = 0;
int keypad_value_old = 0;
char btn_push;
byte mainmenupage = 1;
byte mainmenupageold = 1;
byte mainmenutotal = 3;
 
void setup()
{
    lcd.begin(20,4);
    serial.begin(9800);
    mainmenudisplay(); 
}
void loop()
{   
    btn_push = readkeypad();
    mainmenubtn();
    if(btn_push == 's')//enter selected menu
    {
        waitbtnrelease();
        switch (mainmenupage)
        {
            case 1:
              menua();
              break;
            case 2:
              menub();
              break;
            case 3:
              menuc();
              break;
        }
          mainmenudisplay();
          waitbtnrelease();
    }
}
void menua(){ 
    lcd.clear(); lcd.setcursor(0,0); lcd.print("inside menu a");
    while(readkeypad()!= 'l')
    {}}
void menub(){ 
    lcd.clear(); lcd.setcursor(0,0); lcd.print("inside menu b");
    while(readkeypad()!= 'l')
    {}}
void menuc(){ 
    lcd.clear(); lcd.setcursor(0,0); lcd.print("inside menu c");
    while(readkeypad()!= 'l'){}}
 
void mainmenudisplay()
{
    lcd.clear();
    lcd.setcursor(3,0);
    lcd.print("weather portable");
    lcd.setcursor(3,1);
    lcd.print("chek ");
    lcd.setcursor(3,2);
    lcd.print("open sd card");
    lcd.setcursor(3,3);
    lcd.print("open data logger");
    switch (mainmenupage)
    {
        case 1:
          lcd.setcursor(0,1);
          lcd.print("->");
          break;
        case 2:
          lcd.setcursor(0,2);
          lcd.print("->");
          break;
        case 3:
          lcd.setcursor(0,3);
          lcd.print("->");
          break;
    }
}
 
void mainmenubtn()
{
    waitbtnrelease();
    if(btn_push == 'u')
    {
        mainmenupage++;
        if(mainmenupage > mainmenutotal)
          mainmenupage = 1;
    }
    else if(btn_push == 'd')
    {
        mainmenupage++;
        if(mainmenupage < mainmenutotal)
          mainmenupage = 1;   
    }
    if(mainmenupage != mainmenupageold) //only update display when page change
    {
        mainmenudisplay();
        mainmenupageold = mainmenupage;
    }
}
 
char readkeypad()
{

  keypad_value = analogread(keypad_pin);
serial.println(keypad_value);
  if(keypad_value > 540 && keypad_value < 590)
    return 'r';
  else if(keypad_value> 600 && keypad_value < 650)
    return 'u';
  else if(keypad_value >710 && keypad_value< 835)
    return 'd';
  else if(keypad_value >470 && keypad_value < 500)
    return 'l';
  else if(keypad_value>670 && keypad_value < 700)
    return 's';
  else
    return 'n';
}
 
void waitbtnrelease()
{
    while( analogread(keypad_pin)>670 && analogread(keypad_pin) < 700) {}
}



Arduino Forum > Using Arduino > Project Guidance > menu lcd button?


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor