Реализация меню TFT Touch
- Войдите на сайт для отправки комментариев
Втр, 05/12/2017 - 00:18
Подскажите новичку. Слишком дилетантский подход к реализации многоуровневого меню? Может не в ту сторону роюсь? И есть ли варианты путешествия по меню не в loop? #include <UTFT.h> //подключаем библиотеку UTFT #include <URTouch.h> //подключаем библиотеку сенсорного экрана UTFT myGLCD(ILI9341_16,38,39,40,41); //тип дисплея и контакты URTouch myTouch( 6, 5, 4, 3, 2); //сенсор и контакты extern uint8_t SmallFontRus[]; //подключаем маленький русский шрифт extern uint8_t BigFontRus[]; //подключаем большой русский шрифт extern uint8_t SmallFont[]; //подключаем маленький шрифт extern uint8_t BigFont[]; //подключаем большой шрифт extern uint8_t SevenSegNumFont[]; //подключаем цыфры int x, y; int currentpage = 0; void setup() { myGLCD.InitLCD(); myGLCD.clrScr(); myTouch.InitTouch(); myTouch.setPrecision(PREC_MEDIUM); myGLCD.setFont(BigFont, BigFontRus); myGLCD.setBackColor(0, 0, 255); dispScreen0(); } void clearScreen() { myGLCD.clrScr(); myGLCD.fillScr(0, 0, 255); } //рисуем кнопки void dispScreen0() //экран 0 { myGLCD.fillScr(0, 0, 255); //закрасить фон //кнопка меню myGLCD.setColor(0, 0, 255); //цвет прямоугольника myGLCD.fillRoundRect (10, 10, 310, 115); //закрашенный прямоугольник myGLCD.setColor(255, 255, 255); //цвет рамки myGLCD.drawRoundRect (10, 10, 310, 115); //прямоугольник myGLCD.print("МЕНЮ",128,57); //выводим надпись //кнопка мониторинг myGLCD.setColor(0, 0, 255); //цвет прямоугольника myGLCD.fillRoundRect (10, 125, 310, 230); //закрашенный прямоугольник myGLCD.setColor(255, 255, 255); //цвет рамки myGLCD.drawRoundRect (10, 125, 310, 230); //прямоугольник myGLCD.print("МОНИТОРИНГ",80,170); //выводим надпись } void dispScreen1() //экран 1 меню { myGLCD.fillScr(0,0,255); //закрасить фон //кнопка назад myGLCD.setColor(0, 0, 255); //цвет прямоугольника myGLCD.fillRoundRect (10, 200, 145, 230); //закрашенный прямоугольник myGLCD.setColor(255, 255, 255); //цвет рамки myGLCD.drawRoundRect (10, 200, 145, 230); //прямоугольник myGLCD.print("НАЗАД",38,207); //вторая кнопка myGLCD.setColor(0, 0, 255); //цвет прямоугольника myGLCD.fillRoundRect (165, 200, 310, 230); //закрашенный прямоугольник myGLCD.setColor(255, 255, 255); //цвет рамки myGLCD.drawRoundRect (165, 200, 310, 230); //прямоугольник myGLCD.print("ВПЕРЕД",190,207); } void waitForIt(int x1, int y1, int x2, int y2) { myGLCD.setColor(255, 0, 0); myGLCD.drawRoundRect (x1, y1, x2, y2); while (myTouch.dataAvailable()) myTouch.read(); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (x1, y1, x2, y2); } void loop() { if (currentpage == 0) { if (myTouch.dataAvailable()) { myTouch.read(); x=myTouch.getX(); y=myTouch.getY(); { if(y>=10 && y<=115 && x>=10 && x<=310) { waitForIt(10,10,310,115); currentpage = 1; dispScreen1(); } } } } if (currentpage == 1) { if (myTouch.dataAvailable()) { myTouch.read(); x=myTouch.getX(); y=myTouch.getY(); } if(y>=200 && y<=230 && x>=10 && x<=145) { waitForIt(10,200,145,230); currentpage = 0; dispScreen0(); } } }