Нужна помощь в создании нескольких экранов
- Войдите на сайт для отправки комментариев
Ребята, помогите с проблемой. Мне проблема, наверняка кому-то пустяк. Условие следующее: на дисплее высвечиваются какие-то пеменные данные и имеется кнопка. При нажатии на неё экран должен очистится и появится новый экран со своими кнопками и отображаемыми данными. Мой скетчик работать не хочет, выдает ошибку:
#include <UTouch.h> #include <UTFT.h> #include <Arduino.h> extern uint8_t SmallFont[]; // маленький шрифт extern uint8_t BigFont[]; // большой шрифт extern uint8_t SevenSegNumFont[]; // огромный шрифт UTFT myGLCD(ITDB32S,38,39,40,41); // подключаем дисплей UTouch myTouch(6,5,4,3,2); // подключаем тачскрин int x, y; byte nomerEkrana; void setup() { // Инициализация установки nomerEkrana = 1; nomerEkrana = 2; myGLCD.InitLCD(); // инициализация дисплея myGLCD.clrScr(); myTouch.InitTouch(); // инициализация тачскрина myTouch.setPrecision(PREC_MEDIUM); myGLCD.setFont(BigFont); // инициализация шрифта myGLCD.setBackColor(0, 0, 255); // инициализация заднего цвета шрифта } void loop() { { if (nomerEkrana ==1) { ekran_1(); } else if (nomerEkrana ==2) { ekran_2(); } } void steret() { myGLCD.fillScr (VGA_RED); } void ekran_1() { void drawButtons() { //========================= Задаем кнопку верхнний ряд левая =================================== myGLCD.setColor(0, 0, 255); // цвет левой кнопки верхней строки myGLCD.fillRoundRect (5, 3, 105, 79); // х1-гор, y1-верт,верх-лев точка кнопки, х2-гор, y2-верт,нижн-прав точка кнопки myGLCD.setColor(255, 255, 255); // цвет коёмки кнопки и шрифта myGLCD.drawRoundRect (5, 3, 105, 79); // координаты коемки кнопки myGLCD.print("KNOPKA 1", 33, 35); // надпись и её координаты } //========================= Рисуем красную рамку во время касании кнопки ====================== 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); } while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x=myTouch.getX(); y=myTouch.getY(); x = map(x,0,320,320,0); // костыль для перевёрнутой координты Х if ((y>=3) && (y<=79)) // верхний ряд { if ((x>=5) && (x<=105)) // кнопка CO2 { steret(); nomerEkrana = 2; } } } } } void ekran_2() { void drawButtons() //тут создать кнопку и обработку нажатия на кнопку { //========================= Задаем кнопку верхнний ряд центр =================================== myGLCD.setColor(0, 0, 255); // цвет центр кнопки верхней строки myGLCD.fillRoundRect (110, 3, 210, 79); // координаты кнопки myGLCD.setColor(255, 255, 255); // цвет коёмки кнопки и шрифта myGLCD.drawRoundRect (110, 3, 210, 79); // координаты коемки кнопки myGLCD.print("KNOPKA 2", 143, 35); // надпись и её координаты } //========================= Рисуем красную рамку во время касании кнопки ====================== 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); } if ((y>=3) && (y<=79)) // верхний ряд { if ((x>=110) && (x<=210)) // кнопка O2 { steret(); nomerEkrana = 1; } } } }
Какая-то ерунда с первым постом вышла, прошу модераторов удалить эту кашу )
Ребята, помогите с проблемой. Мне проблема, наверняка кому-то пустяк. Условие следующее: на дисплее высвечиваются какие-то пеменные данные и имеется кнопка. При нажатии на неё экран должен очистится и появится новый экран со своими кнопками и отображаемыми данными. Мой скетчик работать не хочет, выдает ошибку:
на дисплее высвечиваются какие-то пеменные данные и имеется кнопка. При нажатии на неё экран должен очистится и появится новый экран со своими кнопками и отображаемыми данными.
Я тоже заметил что функции обьявлены внутри цикла loop - отсюда и ошибки. Вобщем у вас каша в код попала.
Вначале нарисуйте структуру программы ввиде блоков на бумаге(раз не умеете представлять ее в голове).
И помните что функция loop вызывается циклически и нет смысла плодить while(true) без условия выхода - программа зависнет просто.
Дак уже сказали
функции обьявлены внутри цикла loop - отсюда и ошибки.
Посмотри в чем разница
между
и
Прекратите плакать, стенать и равать волосы во всяких разных местах...
у вас каша в коде, о чем вам и написали... разбираться в вашей каше никто желания не имеет..
вы накопировали кусков отовсюду, причем даже без представления что и зачем...
вот вам ваш код без красных рамочек.. и так убил минус 15.. лень заморачиваться на разборки с рамочками..
счет на ящик пива вышлю отдельно
Puhlyaviy.
Большое спасибо за помощь. Большего мне и не надо, на данном этапе. Про кнопки с рамками вы зря, это вполне рабочий скетч, причем сам его написал. Просто попытался его всунуть в экраны, как мне посоветовали.
Snubist.
Спасибо, разглядел. Я в общем-то и просил чтоб ткнули меня носом... а не размазывали меня как "повидло на сусок хлеба".
Всем от души спасибо ))
Puhlyaviy.
Большое спасибо за помощь. Большего мне и не надо, на данном этапе. Про кнопки с рамками вы зря, это вполне рабочий скетч, причем сам его написал. Просто попытался его всунуть в экраны, как мне посоветовали.
да нет в вашем скече ничего рабочего... просто куча строчек бездумно накопипасченых... выглядит так что вы копипастили по памяти с выключеным монитором... хотя судя по первому посту в этой теме, это с вами часто случается :)
Подниму темку,
Решил попробывать тоже самое, только простым касанием дисплея, нарисовал код.
Только как-то он живет своей жизнью, переключает странички, но может задуматься, и еще чтобы заработал тач после прошивки , нужно передернуть питание, у всех так? Дисплей мне попался редкостной породы.
Укажите на ошибки.