Pages: 1 [2]   Go Down
Author Topic: Scrolling menu program hangs...  (Read 1891 times)
0 Members and 1 Guest are viewing this topic.
North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
#include <NewSoftSerial.h>

NewSoftSerial LCDserial(0, 2);

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 fifth();

void setup() {
  LCDserial.begin(9600);
}

void loop() {
  menu();
}

void LCDclear(){
  LCDserial.print(0xFE, BYTE);
  LCDserial.print(0x01, BYTE);
}

void LCDfirst(){
  LCDserial.print(0xFE, BYTE);
  LCDserial.print(128, BYTE);
}
void LCDsecond(){
  LCDserial.print(0xFE, BYTE);
  LCDserial.print(192, BYTE);
}

void menu() {
  while(digitalRead(up) == HIGH || digitalRead(down) == HIGH || digitalRead(select) == HIGH){};
  LCDclear();
  LCDfirst();
  if(prognumber > 1){
    prognumber--;
  }
  else{
    prognumber = 1;
  }
  LCDmenudisplay();
  LCDsecond();
  prognumber++;
  LCDmenudisplay();
  if(line == 1){
    LCDserial.print(0xFE, BYTE);
    LCDserial.print(143, BYTE);
    LCDserial.print("<");
  }
  else {
    LCDserial.print(0xFE, BYTE);
    LCDserial.print(207, BYTE);
    LCDserial.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;
      }
    }
  }
  else if(digitalRead(up) == HIGH){
    line--;
    if(line < 1){
      line = 1;
      prognumber--;
    }
  }
  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;
    case 5:
      fifth();
      break;
    default:
      first();
    }
  }
  delay(50);
}

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

}

void first() {
  digitalWrite(13, HIGH);
}

void second() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
}

void third() {
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
}

void fourth() {
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(100);
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
}

void fifth() {
  digitalWrite(13, LOW);
}  

As I never posted up the completely correct code before.  smiley-razz
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I never used it, but here is a menu library:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1240415211

May be could be useful to you.

Cheers,
Logged

North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I have seen that library but it did not do what I wanted it to  smiley-wink

So I wrote some code that did   smiley-grin
Logged

Pages: 1 [2]   Go Up
Jump to: