نه الان کلید هام کار میدن .فقط میخوام مثلا توی تنظیمات گرما که رفتم بعد از چند دیقه که کلید ها عمل نکردن برگردد به منوی اول
نمایش نسخه قابل چاپ
نه الان کلید هام کار میدن .فقط میخوام مثلا توی تنظیمات گرما که رفتم بعد از چند دیقه که کلید ها عمل نکردن برگردد به منوی اول
ممنون میخواید کل برنامم بدم؟
این برنامه رو ببین
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;
}
}
خیلی هم خوب
من یه نگاه به کد انداختم برام یه سوال پیش اومد
مگه تو اسکچ توابع اصلی loop و setup نیستن؟ اگه باشن پس هر تابع دیگه ای باید حداقل تو یکی از این دوتا تابع فراخوان بشه که عمل کنه دیگه
الان تو این کد برای مثال تابع menuprocess که تعریف شده تو هیچ کدوم از توابع loop یا setup فراخوان نشده ،
پس چجوری تاثیر میذاره؟
دمت گرم عالی بود حرف نداره کارت البته چندتایی if دیگه اضافه کردم یکی برای نو شدن هر صفحه یک حذف lcd بزنه یکی دیگه این که تو این سرس که شما دادین کلید ست ملاک قرار دادین برا همین وقتی دارم با کلید + و - کار میکنم میره صفحه اول که من ی تغییری توش دادم
فقط من یچیزی موندم اون کانتر براچی هستش