این برنامه رو ببین
3 صفحه منو داره
اگه وارد صفحه 2 و 3 شد اما 5 ثانیه هیچ اکشنی انجام نشد برمیگرده به صفحه اول :
کد:
#include <LCD_GFX.h>
#include <NOKIA5110.h>


NOKIA5110 display = NOKIA5110(7, 6, 5, 4, 3);


int mpage = 0;
int flag8 = 0;
int oldflag8 = 0;
int counter = 0;
long long previousMillis = 0;
unsigned long currentMillis = 0;
void setup()   {
  Serial.begin(9600);
  display.begin();
  display.setContrast(60);
  display.display(); // show splashscreen
  delay(2000);
  display.clearDisplay();   // clears the screen and buffer
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
  Serial.println("End of setup");
}




void loop() {
  keyAction();
}


void showData(String data) {
  display.println(data);   //Write a Text
  display.setTextSize(1);
  display.display();
  display.clearDisplay();
  display.setCursor(0, 15);
  display.println("Counter=");   //Write a Text
  display.setTextSize(1);
  display.display();
  display.clearDisplay();
  display.setCursor(50, 15);
  display.println(counter);   //Write a Text
  display.setTextSize(1);
  display.display();
  display.clearDisplay();
}


void keyAction()
{
  currentMillis = millis();
  if ( digitalRead(8) == LOW  ) {
    previousMillis = currentMillis;
    flag8++;
    delay(200);
  }
  if ( digitalRead(9) == LOW  ) {
    previousMillis = currentMillis;
    counter++;
    delay(200);
  }
  menuProcess() ;
  menuTimeProcess() ;
}


void menuProcess() {
  if ( flag8 == 0)  {
    Serial.println("first");
    showData("Main menu");
    oldflag8 = flag8;
  }
  if ( flag8 == 1)  {
    Serial.println("second");
    showData("submenu1");
  }
  if ( flag8 == 2) {


    Serial.println("Third");
    showData("submenu2");
  }
  if ( flag8 == 3) {
    flag8 = 0;
  }
}
void menuTimeProcess() {
  long diff = currentMillis - previousMillis;
  if ( diff > 5000 )  {
    flag8 = 0;
  }
}