لطفا در مورد ساخت منو کشویی کمکم کنید
میخوام با استفاده از منو کشویی بتوانم دما ورطوبت و سطح نور و زمان تنظیم بکنم
نمایش نسخه قابل چاپ
لطفا در مورد ساخت منو کشویی کمکم کنید
میخوام با استفاده از منو کشویی بتوانم دما ورطوبت و سطح نور و زمان تنظیم بکنم
میخوام مثل استارت ویندوز وقتی کلید set میزنم گذینه باز بشه برای تنظیمات وبا دو کلبد مقادیر از قبل تعیین شده کم و زیاد کنم
مثل :
+زمان +ساعت + تاریخ
+تنظیم دما + دمای وصل رله + دمای قطع رله
+تنظیم رطوبت + دمای وصل رله + دمای قطع رله
+ تنظیم فتوسل +دمای وصل رله + دمای قطع رله
ماژول هایی که فعلا دارم
DS1307 ساعت
UUO اردوینو
HC-05 بلوتوث
i2c1602 نمایشگر کاراکتری
رله 5 ولت چهار کانال تحریک منفی
SHT10 سنسور دما و رطوبت
کسی نیست کمک من کنه
سلام
ببین اینا کمکت میکنه
1 - فیلمش
https://www.youtube.com/watch?v=a1M5kirA2_8
1 - کدهاش
https://gist.github.com/adamzaninovich/3783602
2 - فیلمش
https://www.youtube.com/watch?v=cMqif5ICS5M
2 - کد هاش
[C++] Simple Arduino LCD Menu - Pastebin.com
ممنونم canopus
نه نتوانستم جوابی بگیرم
نه الان کلید هام کار میدن .فقط میخوام مثلا توی تنظیمات گرما که رفتم بعد از چند دیقه که کلید ها عمل نکردن برگردد به منوی اول
ممنون میخواید کل برنامم بدم؟
این برنامه رو ببین
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 بزنه یکی دیگه این که تو این سرس که شما دادین کلید ست ملاک قرار دادین برا همین وقتی دارم با کلید + و - کار میکنم میره صفحه اول که من ی تغییری توش دادم
فقط من یچیزی موندم اون کانتر براچی هستش