Could someone give me some advice related to building a menu for a 128x64 LCD using 5 pushButtons?
i have 5 screens.
btn1 is for display MainMenu and Selection.
btn2 and btn3 is for up and down scrolling
btn 4 and btn4 is for switching on/off and increase decrease values.
the problem which i encounter is related to btn2 and btn3.
i don;t know how to use them for scrolling in in another screen except screen1 (MainMenu).
#include "U8glib.h"
U8GLIB_ST7920_128X64_1X u8g(13,12,11); //Enable, RW, RS, RESET
int selectionButton = A1, selectionButtonState, selectionButtonLastState = 0, cntSelectionButtonPressed = 0, cntSelectionButtonPressed2ForMenu2 = 0;
int menuButton = A0, menuButtonState, menuButtonLastState = 0;
int scrollDownButton = A3, scrollDownButtonState, scrollDownButtonLastState = 0;
boolean mainMenu = false;
void setup()
{
Serial.begin(9600);
if ( u8g.getMode() == U8G_MODE_R3G3B2 )
u8g.setColorIndex(255); // white
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
u8g.setColorIndex(3); // max intensity
else if ( u8g.getMode() == U8G_MODE_BW )
pinMode(selectionButton,INPUT);
pinMode(menuButton,INPUT);
pinMode(scrollDownButton,INPUT);
}
void loop()
{
scrollDownButtonState = digitalRead(A3);
selectionButton = digitalRead(A1);
menuButton = digitalRead(A0);
//pin A1 = RiGHT
if(selectionButton != selectionButtonLastState)
{
if(digitalRead(A1) == HIGH)
{
cntSelectionButtonPressed += 1;
if(cntSelectionButtonPressed == 4)
{
cntSelectionButtonPressed = 0;
}
}
selectionButtonLastState = selectionButton;
}
////////////////////////
if(menuButton != menuButtonLastState)
{
if(cntSelectionButtonPressed == 1 && digitalRead(A0) == HIGH)
{
cntSelectionButtonPressed2ForMenu2 += 1;
}
if(cntSelectionButtonPressed2ForMenu2 == 4)
{
cntSelectionButtonPressed2ForMenu2 = 0;
}
u8g.firstPage();
do{
Menu2();
}while(u8g.nextPage());
menuButtonLastState = menuButton;
}
else
{
u8g.firstPage();
do{
MainMenu();
}while(u8g.nextPage());
}
}
void MainMenu(){
switch(cntSelectionButtonPressed)
{
case 1:
u8g.setFont(u8g_font_6x13);
u8g.setPrintPos(15,15);
u8g.print("> Ceas");
u8g.setPrintPos(15,25);
u8g.print(" Interior casa");
u8g.setPrintPos(15,35);
u8g.print(" Exterior casa");
break;
case 2:
u8g.setFont(u8g_font_6x13);
u8g.setPrintPos(15,15);
u8g.print(" Ceas");
u8g.setPrintPos(15,25);
u8g.print("> Interior casa");
u8g.setPrintPos(15,35);
u8g.print(" Exterior casa");
break;
break;
case 3:
u8g.setFont(u8g_font_6x13);
u8g.setPrintPos(15,15);
u8g.print(" Ceas");
u8g.setPrintPos(15,25);
u8g.print(" Interior casa");
u8g.setPrintPos(15,35);
u8g.print("> Exterior casa");
break;
}
}
void Menu2()
{
switch(cntSelectionButtonPressed2ForMenu2)
{
case 1:
u8g.setFont(u8g_font_6x13);
u8g.setPrintPos(15,15);
u8g.print("> Stil1");
u8g.setPrintPos(15,25);
u8g.print(" Stil2");
u8g.setPrintPos(15,35);
u8g.print(" Stil3");
break;
case 2:
u8g.setFont(u8g_font_6x13);
u8g.setPrintPos(15,15);
u8g.print(" Stil1");
u8g.setPrintPos(15,25);
u8g.print("> Stil2");
u8g.setPrintPos(15,35);
u8g.print(" Stil3");
break;
break;
case 3:
u8g.setFont(u8g_font_6x13);
u8g.setPrintPos(15,15);
u8g.print(" Stil1");
u8g.setPrintPos(15,25);
u8g.print(" Stil2");
u8g.setPrintPos(15,35);
u8g.print("> Stil3");
break;
}
}