how to add a scrolling main menu and submenu for Wrisky SPI TFT LCD 1.8

Hi everyone,

I need your help to add a scrolling main menu. when any item is selected on main menu the sub menu should appear. after pressing up or down button to add or subst. 5 sec later sub screen should go back to main menu. also the counter should appears on main menu next to each items.

I’m using a Wrisky SPI TFT LCD 1.8"" Serial Module Display + PCB Adapter Power IC SD Socket 128X160.

please help.

see attachment

 #include <SPI.h>
      #include <Wire.h>
      #include <Adafruit_GFX.h>    // Core graphics library
      #include <Adafruit_ST7735.h> // Hardware-specific library
      
      
      #define TFT_PIN_CS 10 
      #define TFT_PIN_DC  9
      #define TFT_PIN_RST 8
      
      int menuitem  = 1;
      int page = 1;
      int count_1 = 0;
      int count_2 = 0;
      int count_3 = 0;
      int count_4 = 0;
    
    volatile boolean up = false;
    volatile boolean down = false;
    volatile boolean select = false;
    
    int downButtonState = 0;
    int upButtonState = 0;  
    int selectButtonState = 0;          
    int lastDownButtonState = 0;
    int lastSelectButtonState = 0;
    int lastUpButtonState = 0;
    
      
      Adafruit_ST7735 tft = Adafruit_ST7735(TFT_PIN_CS, TFT_PIN_DC, TFT_PIN_RST);
      void setup() {   
        Serial.begin(9600);
        tft.initR(INITR_BLACKTAB);
      
      pinMode(4, INPUT_PULLUP);
      pinMode(3, INPUT_PULLUP);
      pinMode(2, INPUT_PULLUP); 
      
      }
      

  

      
      void loop(void) { 
   
        upButtonState     = digitalRead(4);
        downButtonState   = digitalRead(3);
        selectButtonState = digitalRead(2);
       
         drawMenu();
         drawSubMenuItem1();
         drawSubMenuItem2();
         drawSubMenuItem3();
         drawSubMenuItem4();
         checkIfUpButtonIsPressed();
         checkIfDownButtonIsPressed();
         checkIfSelectButtonIsPressed();

        //if menu item 1 selected
          if (up && page == 1) {
            up = false;
            menuitem--;
            if (menuitem == 0) 
            {
              menuitem = 5;
            }
          }
          else if (up && page == 2) {
            up = false;
            count_1 --;
          }
    
          if (down && page == 1) {
            down = false;
            menuitem++;
            if (menuitem == 5)
            {
              menuitem = 1;
            }}
            else if (down && page == 2) {
              down = false;
              count_1++;      
          }

          //if menu item 2 selected
          
          if (up && page == 1) {
            up = false;
            menuitem--;
            if (menuitem == 1) 
            {
              menuitem = 5;
            }
          }
          else if (up && page == 2) {
            up = false;
            count_2 --;
          }
    
          if (down && page == 1) {
            down = false;
            menuitem++;
            if (menuitem == 5)
            {
              menuitem = 2;
            }}
            else if (down && page == 2) {
              down = false;
              count_2++;      
          }


          //if menu item 3 selected
          
          if (up && page == 1) {
            up = false;
            menuitem--;
            if (menuitem == 2) 
            {
              menuitem = 5;
            }
          }
          else if (up && page == 2) {
            up = false;
            count_3 --;
          }
    
          if (down && page == 1) {
            down = false;
            menuitem++;
            if (menuitem == 5)
            {
              menuitem = 3;
            }}
            else if (down && page == 2) {
              down = false;
              count_3++;      
          }

          //if menu item 4 selected
          
          if (up && page == 1) {
            up = false;
            menuitem--;
            if (menuitem == 3) 
            {
              menuitem = 5;
            }
          }
          else if (up && page == 2) {
            up = false;
            count_4 --;
          }
    
          if (down && page == 1) {
            down = false;
            menuitem++;
            if (menuitem == 5)
            {
              menuitem = 4;
            }}
            else if (down && page == 2) {
              down = false;
              count_4++;      
            }  


           //if menu TOTAL selected
          if (up && page == 1) {
            up = false;
            menuitem--;
            if (menuitem == 4) 
            {
              menuitem = 5;
            }
          }
          else if (up && page == 2) {
            up = false;
            count_1 --;
          }
    
          if (down && page == 1) {
            down = false;
            menuitem++;
            if (menuitem == 5)
            {
              menuitem = 5;
            }}
            else if (down && page == 2) {
              down = false;
              count_1++;      
          }
    }
    
    
    void checkIfUpButtonIsPressed() {
      if (upButtonState != lastUpButtonState) 
      {
        if (upButtonState == 0) {
          up = true;
        }
        delay(50);
      }
       lastUpButtonState = upButtonState;   
    }
    
    void checkIfDownButtonIsPressed() {
      if (downButtonState != lastDownButtonState) 
      {
        if (downButtonState == 0) 
        {
          down = true;
        }
        delay(50);
      }
       lastDownButtonState = downButtonState;    
    }
    
    void checkIfSelectButtonIsPressed() {
      if (selectButtonState != lastSelectButtonState) 
      {
        if (selectButtonState == 0) {
          select = true;
        }
        delay(50);
      }
       lastSelectButtonState = selectButtonState;
    }


               //Display Menu
/**********************************************/
                 //page 1
                 
        void drawMenu() {
        
          if (page == 1) {
                  
       tft.setCursor(57,3);
       tft.setTextSize(2);
       tft.drawRect(0,0,160,20, ST7735_WHITE);
       tft.fillRect(0,0,160,20, ST7735_BLACK);
       tft.print("MENU");
//item 1    
       tft.drawRect(0,28,88,20, ST7735_WHITE);
       tft.drawRect(89,28,94,20, ST7735_WHITE);  
//item 2
       tft.drawRect(0,48,88,20, ST7735_WHITE);
       tft.drawRect(89,48,94,20, ST7735_WHITE);
//item 3
       tft.drawRect(0,68,88,20, ST7735_WHITE);
       tft.drawRect(89,68,94,20, ST7735_WHITE);
//item 4
       tft.drawRect(0,88,88,20, ST7735_WHITE);
       tft.drawRect(89,88,94,20, ST7735_WHITE); 
//Total
       tft.drawRect(0,108,88,20, ST7735_WHITE);
       tft.drawRect(89,108,94,20, ST7735_WHITE);

//item 1
        if (menuitem == 1) 
        { 
           tft.setTextColor(ST7735_WHITE);
        }
        else 
        {
           tft.setTextColor(ST7735_BLACK);
        }
           tft.setCursor(2,31);
           tft.setTextSize(2);
           tft.print("ITEM1");
  
//item 2
        if (menuitem == 2) 
        { 
           tft.setTextColor(ST7735_WHITE);
        }
        else 
        {
           tft.setTextColor(ST7735_BLACK);
        }
           tft.setTextSize(2);
           tft.setCursor(2,51); 
           tft.print("ITEM2");
      
//item 3
        if (menuitem == 3) 
        { 
           tft.setTextColor(ST7735_WHITE);
        }
        else 
        {
           tft.setTextColor(ST7735_BLACK);
        }
           tft.setTextSize(2);
           tft.setCursor(2,71);
           tft.print("ITEM3");

//item 4
         if (menuitem == 4) 
        { 
           tft.setTextColor(ST7735_WHITE);
        }
        else 
        {
           tft.setTextColor(ST7735_BLACK);
        }
           tft.setTextSize(2);
           tft.setCursor(2,91); 
           tft.print("ITEM4");
        
 //Total   
          if (menuitem == 5) 
        { 
           tft.setTextColor(ST7735_WHITE);
        }
        else 
        {
           tft.setTextColor(ST7735_BLACK);
        }     
       tft.setTextSize(2);
       tft.setCursor(2,111);
       tft.print("TOTAL");
        }
        }