I have added some serial debug lines and it appears to jump from 22a to 31 then to 38 and hang there..
Code:
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() {
Serial.println(" 1");
while(digitalRead(up) == HIGH or digitalRead(down) == HIGH or digitalRead(select) == HIGH){};
Serial.println(" 2");
delay(50);
Serial.println(" 3");
LCDclear();
Serial.println(" 4");
LCDfirst();
Serial.println(" 5");
if(prognumber > 1){
Serial.println(" 6");
prognumber--;
Serial.println(" 7");
}
else{
Serial.println(" 8");
prognumber == 1;
Serial.println(" 9");
}
LCDmenudisplay();
Serial.println(" 10");
LCDsecond();
Serial.println(" 11");
prognumber++;
Serial.println("12 ");
LCDmenudisplay();
Serial.println("13 ");
if(line == 1){
Serial.println("14 ");
LCDserial.print(0xFE, BYTE);
Serial.println("15 ");
LCDserial.print(143, BYTE);
Serial.println(" 16");
LCDserial.print("<");
Serial.println("17 ");
}
else {
Serial.println("18 ");
LCDserial.print(0xFE, BYTE);
Serial.println("19 ");
LCDserial.print(207, BYTE);
Serial.println("20 ");
LCDserial.print("<");
Serial.println(" 21");
}
Serial.println("22A ");
while(digitalRead(up) == LOW && digitalRead(down) == LOW && digitalRead(select) == LOW){}
Serial.println("22 ");
delay(50);
if(digitalRead(down) == HIGH){
Serial.println(" 23");
line++;
Serial.println("24 ");
if(line > 2){
Serial.println("25 ");
line = 2;
Serial.println(" 26");
prognumber++;
Serial.println("27 ");
}
if(prognumber > 4){
Serial.println("28 ");
prognumber = 5;
Serial.println(" 29");
}
Serial.println(" 30");
menu();
Serial.println(" 31");
}
delay(50);
if(digitalRead(up) == HIGH){
Serial.println("32 ");
line--;
Serial.println("33 ");
if(line < 1){
Serial.println("34 ");
line = 1;
Serial.println("35 ");
prognumber--;
Serial.println("36 ");
}
Serial.println(" 37");
menu();
Serial.println("38 ");
}
delay(50);
if(digitalRead(select) == HIGH){
Serial.println("39 ");
if(line == 1){
Serial.println(" 40");
prognumber--;
Serial.println("41 ");
}
Serial.println("42 ");
switch (prognumber) {
case 1:
Serial.println("43 ");
first();
break;
case 2:
Serial.println("44 ");
second();
break;
case 3:
Serial.println("45 ");
third();
break;
case 4:
Serial.println("46 ");
fourth();
break;
case 5:
Serial.println("47");
fifth();
break;
default:
Serial.println("48");
first();
break;
}
}
}
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);
menu();
}
void second() {
menu();
}
void third() {
menu();
}
void fourth() {
menu();
}
void fifth() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
menu();
}
any ideas????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() {
Serial.println(" 1");
while(digitalRead(up) == HIGH or digitalRead(down) == HIGH or digitalRead(select) == HIGH){};
Serial.println(" 2");
delay(50);
Serial.println(" 3");
LCDclear();
Serial.println(" 4");
LCDfirst();
Serial.println(" 5");
if(prognumber > 1){
Serial.println(" 6");
prognumber--;
Serial.println(" 7");
}
else{
Serial.println(" 8");
prognumber == 1;
Serial.println(" 9");
}
LCDmenudisplay();
Serial.println(" 10");
LCDsecond();
Serial.println(" 11");
prognumber++;
Serial.println("12 ");
LCDmenudisplay();
Serial.println("13 ");
if(line == 1){
Serial.println("14 ");
LCDserial.print(0xFE, BYTE);
Serial.println("15 ");
LCDserial.print(143, BYTE);
Serial.println(" 16");
LCDserial.print("<");
Serial.println("17 ");
}
else {
Serial.println("18 ");
LCDserial.print(0xFE, BYTE);
Serial.println("19 ");
LCDserial.print(207, BYTE);
Serial.println("20 ");
LCDserial.print("<");
Serial.println(" 21");
}
Serial.println("22A ");
while(digitalRead(up) == LOW && digitalRead(down) == LOW && digitalRead(select) == LOW){}
Serial.println("22 ");
delay(50);
if(digitalRead(down) == HIGH){
Serial.println(" 23");
line++;
Serial.println("24 ");
if(line > 2){
Serial.println("25 ");
line = 2;
Serial.println(" 26");
prognumber++;
Serial.println("27 ");
}
if(prognumber > 4){
Serial.println("28 ");
prognumber = 5;
Serial.println(" 29");
}
Serial.println(" 30");
menu();
Serial.println(" 31");
}
delay(50);
if(digitalRead(up) == HIGH){
Serial.println("32 ");
line--;
Serial.println("33 ");
if(line < 1){
Serial.println("34 ");
line = 1;
Serial.println("35 ");
prognumber--;
Serial.println("36 ");
}
Serial.println(" 37");
menu();
Serial.println("38 ");
}
delay(50);
if(digitalRead(select) == HIGH){
Serial.println("39 ");
if(line == 1){
Serial.println(" 40");
prognumber--;
Serial.println("41 ");
}
Serial.println("42 ");
switch (prognumber) {
case 1:
Serial.println("43 ");
first();
break;
case 2:
Serial.println("44 ");
second();
break;
case 3:
Serial.println("45 ");
third();
break;
case 4:
Serial.println("46 ");
fourth();
break;
case 5:
Serial.println("47");
fifth();
break;
default:
Serial.println("48");
first();
break;
}
}
}
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);
menu();
}
void second() {
menu();
}
void third() {
menu();
}
void fourth() {
menu();
}
void fifth() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
menu();
}
thanks heaps
ben