Ви не увійшли.
Сторінки 1
Уважаемые форумчане. В програмировании я новичек. Вот прикупил Arduino Mega2560 + LCD TFT TOUCH. Все работает нормально. Теперь столкнулся с проблемой построения многостраничного меню. Есть главный экран с 8 кнопками. При нажатии должен происходить переход на следующее меню. Это все работает (запрограммирована только одна кнопка). Проблема в том, что при включении следующего меню не отключаються работающие координаты Touch предыдущего (главного) экрана. По примерам используються т.н. ID экранов. Но они почемуто не работают.
Може
#include <UTFT.h>
#include <UTouch.h>
UTFT myGLCD(NIC35WS,38,39,40,41);
UTouch myTouch( 6, 5, 4, 3, 2);
extern uint8_t BigFont[];
extern uint8_t SmallFont[];
int x, y;
byte menuID;
void clearScreen(){ /
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect(0, 12, 399, 239);
myGLCD.setColor(0, 0, 0);
}
void dispScreen0(){
myGLCD.setFont(BigFont);
// кнопка GRUPA 1
myGLCD.setColor(58, 95, 205);
myGLCD.fillRoundRect(10, 35, 195, 70);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(58, 95, 205);
myGLCD.print("GRUPA 1", 52, 45);
// кнопка GRUPA 2
myGLCD.setColor(240, 0, 108);
myGLCD.fillRoundRect(10, 80, 195, 115);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(240, 0, 108);
myGLCD.print("GRUPA 2", 52, 90);
// кнопка GRUPA 3
myGLCD.setColor(90, 200, 0);
myGLCD.fillRoundRect(10, 125, 195, 160);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(90, 200, 0);
myGLCD.print("GRUPA 3", 52, 135);
// кнопка GRUPA 4
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect(10, 170, 195, 205);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(0, 0, 255);
myGLCD.print("GRUPA 4", 52, 180);
// кнопка TIMER
myGLCD.setColor(48, 89, 255);
myGLCD.fillRoundRect(205, 35, 390, 70);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(48, 89, 255);
myGLCD.print("TIMER", 230, 45);
// кнопка XXXXXXXXXX
myGLCD.setColor(248, 0, 37);
myGLCD.fillRoundRect(205, 80, 390, 115);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(248, 0, 37);
myGLCD.print("XXXXX", 230, 90);
// кнопка XXXXXXXXX
myGLCD.setColor(0, 224, 11);
myGLCD.fillRoundRect(205, 125, 390, 160);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(0, 224, 11);
myGLCD.print("XXXXX", 230, 135);
// кнопка XXXXXXX
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect(205, 170, 390, 205);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(0, 0, 255);
myGLCD.print("XXXXX", 230, 180);
delay(100);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect(10, 35, 195, 70);
myGLCD.drawRoundRect(12, 37, 193, 68);
myGLCD.drawRoundRect(10, 80, 195, 115);
myGLCD.drawRoundRect(12, 82, 193, 113);
myGLCD.drawRoundRect(10, 125, 195, 160);
myGLCD.drawRoundRect(12, 127, 193, 158);
myGLCD.drawRoundRect(10, 170, 195, 205);
myGLCD.drawRoundRect(12, 172, 193, 203);
myGLCD.drawRoundRect(205, 35, 390, 70);
myGLCD.drawRoundRect(207, 37, 388, 68);
myGLCD.drawRoundRect(205, 80, 390, 115);
myGLCD.drawRoundRect(207, 82, 388, 113);
myGLCD.drawRoundRect(205, 125, 390, 160);
myGLCD.drawRoundRect(207, 127, 388, 158);
myGLCD.drawRoundRect(205, 170, 390, 205);
myGLCD.drawRoundRect(207, 172, 388, 203);
}
void dispScreen1(){
clearScreen();
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect(15, 37, 65, 60);
myGLCD.fillRoundRect(79, 37, 129, 60);
myGLCD.fillRoundRect(143, 37, 193, 60);
myGLCD.fillRoundRect(207, 37, 257, 60);
myGLCD.fillRoundRect(271, 37, 321, 60);
myGLCD.fillRoundRect(335, 37, 385, 60);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect(15, 37, 65, 60);
myGLCD.drawRoundRect(79, 37, 129, 60);
myGLCD.drawRoundRect(143, 37, 193, 60);
myGLCD.drawRoundRect(207, 37, 257, 60);
myGLCD.drawRoundRect(271, 37, 321, 60);
myGLCD.drawRoundRect(335, 37, 385, 60);
// кнопки ON
myGLCD.setColor(70, 200, 0);
myGLCD.fillRoundRect(15, 66, 65, 94);
myGLCD.fillRoundRect(79, 66, 129, 94);
myGLCD.fillRoundRect(143, 66, 193, 94);
myGLCD.fillRoundRect(207, 66, 257, 94);
myGLCD.fillRoundRect(271, 66, 321, 94);
myGLCD.fillRoundRect(335, 66, 385, 94);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect(15, 66, 65, 94);
myGLCD.drawRoundRect(79, 66, 129, 94);
myGLCD.drawRoundRect(143, 66, 193, 94);
myGLCD.drawRoundRect(207, 66, 257, 94);
myGLCD.drawRoundRect(271, 66, 321, 94);
myGLCD.drawRoundRect(335, 66, 385, 94);
// размер рамки времени on
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect(15, 96, 65, 128);
myGLCD.drawRoundRect(79, 96, 129, 128);
myGLCD.drawRoundRect(143, 96, 193, 128);
myGLCD.drawRoundRect(207, 96, 257, 128);
myGLCD.drawRoundRect(271, 96, 321, 128);
myGLCD.drawRoundRect(335, 96, 385, 128);
// кнопки OFF
myGLCD.setColor(255, 255, 255);
// myGLCD.setBackColor(255, 0, 0);
myGLCD.drawRoundRect(15, 137, 65, 165);
myGLCD.drawRoundRect(79, 137, 129, 165);
myGLCD.drawRoundRect(143, 137, 193, 165);
myGLCD.drawRoundRect(207, 137, 257, 165);
myGLCD.drawRoundRect(271, 137, 321, 165);
myGLCD.drawRoundRect(335, 137, 385, 165);
myGLCD.setColor(255, 0, 0);
myGLCD.fillRoundRect(15, 138, 65, 164);
myGLCD.fillRoundRect(79, 138, 129, 164);
myGLCD.fillRoundRect(143, 138, 193, 164);
myGLCD.fillRoundRect(207, 138, 257, 164);
myGLCD.fillRoundRect(271, 138, 321, 164);
myGLCD.fillRoundRect(335, 138, 385, 164);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect(15, 167, 65, 199);
myGLCD.drawRoundRect(79, 167, 129, 199);
myGLCD.drawRoundRect(143, 167, 193, 199);
myGLCD.drawRoundRect(207, 167, 257, 199);
myGLCD.drawRoundRect(271, 167, 321, 199);
myGLCD.drawRoundRect(335, 167, 385, 199);
// рамка вокруг кнопки таймера
myGLCD.setColor(130, 130, 130);
myGLCD.drawRoundRect(15, 35, 65, 201);
myGLCD.drawRoundRect(79, 35, 129, 201);
myGLCD.drawRoundRect(143, 35, 193, 201);
myGLCD.drawRoundRect(207, 35, 257, 201);
myGLCD.drawRoundRect(271, 35, 321, 201);
myGLCD.drawRoundRect(335, 35, 385, 201);
myGLCD.setColor(255, 255, 255);
// myGLCD.setFont(BigFont);
myGLCD.setFont(SmallFont);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(0, 0, 255);
myGLCD.print("Tim.1",20,45);
myGLCD.print("Tim.2",84,45);
myGLCD.print("Tim.3",148,45);
myGLCD.print("Tim.4",212,45);
myGLCD.print("Tim.5",276,45);
myGLCD.print("Tim.6",340,45);
myGLCD.setFont(BigFont);
myGLCD.setBackColor(70, 200, 0);
myGLCD.print("ON",22,73);
myGLCD.print("ON",86,73);
myGLCD.print("ON",150,73);
myGLCD.print("ON",214,73);
myGLCD.print("ON",278,73);
myGLCD.print("ON",342,73);
myGLCD.setBackColor(255, 0, 0);
myGLCD.print("OFF",17,143);
myGLCD.print("OFF",81,143);
myGLCD.print("OFF",145,143);
myGLCD.print("OFF",209,143);
myGLCD.print("OFF",273,143);
myGLCD.print("OFF",337,143);
}
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 setup(){
myGLCD.InitLCD();
myGLCD.clrScr();
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
myGLCD.setFont(BigFont);
myGLCD.setBackColor(0, 0, 255);
dispScreen0();
}
void loop(){
while (true)
{
if (myTouch.dataAvailable()){myTouch.read();x=myTouch.getX();y=myTouch.getY();
//======================================
if ((y>=35) && (y<=70)) {
if ((x>=10) && (x<=195)){waitForIt(10, 35, 195, 70);clearScreen();dispScreen1();} // переход
if ((x>205) && (x<=390)){waitForIt(205, 35, 390, 70);}
}
//======================================
if ((y>=80) && (y<=115)){
if ((x>=10) && (x<=195)){waitForIt(10, 80, 195, 115);break;}
if ((x>205) && (x<=390)){waitForIt(205, 80, 390, 115);break;}
}
//======================================
if ((y>=125) && (y<=160)){
if ((x>=10) && (x<=195)){waitForIt(10, 125, 195, 160);break;}
if ((x>205) && (x<=390)){waitForIt(205, 125, 390, 160);break;}
}
//======================================
if ((y>=170) && (y<=205)){
if ((x>=10) && (x<=195)){waitForIt(10, 170, 195, 205);break;}
if ((x>205) && (x<=390)){waitForIt(205, 170, 390, 205);break;}
}
}
}
//========================================
}
т кто-то подскажет, в чем моя ошибка. Еще раз повторяю - я новичек.
Сторінки 1