Pages: [1]   Go Down
Author Topic: Yet another LCD Menu Question.  (Read 2546 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino Noob - Learning :)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey guys,

I've been looking at loads of examples and i just cant get my head around them, calling different .h files and bits and pieces.

I want to put an LCD Screen and a 3 Button menu in my car.
i have a 16x2 LCD and 3 Large Tactile Switches all connected to the arduino, buttons are connected to Digital Input 8,9,10 and have 4 delays connected to 1,6,7 and 13.

Simple Menu:
--------------------------------
|First
|Second
|Third
|Fouth
--------------------------------

Button 1 = Up
Button 2 = Select
Button 3 = Down

All i want to do is to be able to select an option and turn a relay on and to select it again to turn it off. smiley

I Used this http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1273469106/all to try and make i work and its gone all to pot, any chance anyone could have a look at it please ?

Yeah i am a newbie, altho i should walk before i should run, but any help would be really appriciated?

Many Thanks smiley

This is my altered code:


#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int rly1Pin =  6;
int rly2Pin =  7;
int rly3Pin =  13;
int rly4Pin =  1;
int prognumber = 1;
int line = 1;

int down = 8;
int select = 9;
int up = 10;

void menu();
void LCDclear();
void LCDfirst();
void LCDsecond();
void LCDmenudisplay();

void first();
void second();
void third();
void fourth();

void setup() {
  lcd.begin(16, 2);
  menu();
}

void loop() {
  //nothing to loop but is required in every sketch.
}

void LCDclear(){
  lcd.print(0xFE, BYTE);      
  lcd.clear();
}

void LCDfirst(){
  lcd.print(0xFE, BYTE);
lcd.setCursor(0, 0); // bottom left
}
void LCDsecond(){
  lcd.print(0xFE, BYTE);
lcd.setCursor(0, 1); // bottom left
}

void menu() {
  while(digitalRead(up) == HIGH or digitalRead(down) == HIGH or digitalRead(select) == HIGH){};
  delay(50);
  LCDclear();
  LCDfirst();
  if(prognumber > 1){
  prognumber--;
  }
  else{
    prognumber == 1;
  }
  LCDmenudisplay();
  LCDsecond();
  prognumber++;
  LCDmenudisplay();
  if(line == 1){
  lcd.print(0xFE, BYTE);
  lcd.print(143, BYTE);
  lcd.print("<");
  }
  else {
  lcd.print(0xFE, BYTE);
  lcd.print(207, BYTE);
  lcd.print("<");
  }
  while(digitalRead(up) == LOW && digitalRead(down) == LOW && digitalRead(select) == LOW){}
  if(digitalRead(down) == HIGH){
  line++;
  if(line > 2){
  line = 2;
  prognumber++;
  if(prognumber > 4){
  prognumber = 5;
  }
  }
  menu();
  }
  else if(digitalRead(up) == HIGH){
  line--;
  if(line < 1){
  line = 1;
  prognumber--;
  }
  menu();
  }
  else if(digitalRead(select) == HIGH){
  if(line == 1){
    prognumber--;
  }
  switch (prognumber) {                  
  case 1:                                
    first();
    break;                              
  case 2:
    second();
    break;
  case 3:
    third();
    break;
  case 4:
    fourth();
    break;
  default:
    first();
  }
  }
}

void LCDmenudisplay() {
  switch (prognumber) {                  
  case 1:                                
    lcd.print("First");  
    break;                              
  case 2:
    lcd.print("Second");
    break;
  case 3:
    lcd.print("Third");
    break;
  case 4:
    lcd.print("Fourth");
    break;
  }
  
}

void first() {
  digitalWrite(rly1Pin, HIGH);
  menu();
}

void second() {
    digitalWrite(rly2Pin, HIGH);
  menu();
}

void third() {
    digitalWrite(rly3Pin, HIGH);
  menu();
}
void fourth() {
    digitalWrite(rly4Pin, HIGH);
  menu();
}



Logged

Pages: [1]   Go Up
Jump to: