Проблема с Touchscreen'ом
- Войдите на сайт для отправки комментариев
Проблема следующая.
Есть экран 2.8 ITDB02 SHIELD http://devicter.ru/goods/2-8-TFT-Touch-Shield-2?from=ZTA1
Есть arduino mega 2560, freeduino mega 2560.
Экран заработал только после того как сделал как по ссылке указано http://arduino.ru/forum/apparatnye-voprosy/raznitsa-pri-podklyuchenii-tft-k-leonardo-i-mega-2560
Я делал меню для тача, все нормально работало. В один прекрасный момент перестал работать экран. Загрузка одназначно рабочего скетча не принесла результатов. Начал разбираться, ничего не менялось. Т.к. отключал экран несколько раз находу решил что спалил экран, и купил новый. На новом экране та же фигня. Купил фридуину, скетч загружается, то что должно происходить при нажатии на экран происходит, но не выводится.
Я уже голову сломал, подскажите, что может быть не так?
Пример скетча
#include <UTFT.h> #include <UTouch.h> extern uint8_t BigFont[]; UTFT myGLCD(ILI9325D_8,A5,A4,A3,A2); UTouch myTouch(A1,A2,A0,8,9); int x, y, a, b, c, h, t, p, h1, t1,m; int Vib = A7; int Aud = A6; /************************* ** Custom functions ** *************************/ void drawSettings() { // Основное меню // Рисуется верхняя кнопка myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (5, 5, 310, 120); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (5, 5, 310, 120); myGLCD.print("SETTINGS", 90, 60); } void drawStart() { // Рисуется нижняя кнопка myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (5, 130, 310, 240); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (5, 130, 310, 240); myGLCD.print("START", 115, 180); } void drawProcess() { // Рисуется PROCESS myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (70, 70, 245, 170); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (70, 70, 245, 170); myGLCD.print("PROCESS", 100, 112); } void secMenu11() { // Меню настроек // Рисуется левая кнопка скорости myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (5, 5, 65, 60); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (5, 5, 65, 60); myGLCD.print("<-", 20, 25); } void secMenu12() { // Рисуется скорость myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (70, 5, 170, 60); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (70, 5, 170, 60); myGLCD.print("Speed", 80, 25); } void secMenu13() { // Рисуется правая кнопка скорости myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (175, 5, 235, 60); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (175, 5, 235, 60); myGLCD.print("->", 190, 25); } void secMenu14() { // Рисуется значение скорости myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (240, 5, 310, 60); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (240, 5, 310, 60); myGLCD.printNumI(a, 252, 25); } void secMenu21() { // Усилие // Рисуется левая кнопка усилия myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (5, 65, 65, 120); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (5, 65, 65, 120); myGLCD.print("<-", 20, 85); } void secMenu22() { // Рисуется Усилие myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (70, 65, 170, 120); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (70, 65, 170, 120); myGLCD.print("Force", 80, 85); } void secMenu23() { // Рисуется значение усилия myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (175, 65, 235, 120); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (175, 65, 235, 120); myGLCD.print("->", 190, 85); } void secMenu24() { // Рисуется правая кнопка усилия myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (240, 65, 310, 120); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (240, 65, 310, 120); myGLCD.printNumI(b, 252, 85); } void secMenu31() { // Повторения // Рисуется левая кнопка Повторения myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (5, 125, 65, 180); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (5, 125, 65, 180); myGLCD.print("<-", 20, 145); } void secMenu32() { // Рисуется Повторения myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (70, 125, 170, 180); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (70, 125, 170, 180); myGLCD.print("REPS", 80, 145); } void secMenu33() { // Рисуется значение Повторения myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (175, 125, 235, 180); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (175, 125, 235, 180); myGLCD.print("->", 190, 145); } void secMenu34() { // Рисуется правая кнопка Повторения myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (240, 125, 310, 180); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (240, 125, 310, 180); myGLCD.printNumI(c, 252, 145); } void secMenu4() { // Возврат в меню // Рисуется возврат в меню myGLCD.setColor(100, 200, 140); myGLCD.fillRoundRect (5, 185, 310, 235); myGLCD.setColor(0, 0, 0); myGLCD.drawRoundRect (5, 185, 310, 235); myGLCD.print("Apply", 120, 200); } void Vibration() { digitalWrite(Vib, HIGH); digitalWrite(Aud, HIGH); delay(150); digitalWrite(Vib, LOW); digitalWrite(Aud, LOW); delay(150); } void Vibration2() { digitalWrite(Vib, HIGH); digitalWrite(Aud, HIGH); delay(150); digitalWrite(Vib, LOW); digitalWrite(Aud, LOW); delay(50); digitalWrite(Vib, HIGH); digitalWrite(Aud, HIGH); delay(150); digitalWrite(Vib, LOW); digitalWrite(Aud, LOW); delay(50); digitalWrite(Vib, HIGH); digitalWrite(Aud, HIGH); delay(500); digitalWrite(Vib, LOW); digitalWrite(Aud, LOW); delay(50); } /************************* ** Required functions ** *************************/ void setup() { myGLCD.InitLCD(); myGLCD.clrScr(); myTouch.InitTouch(); myTouch.setPrecision(PREC_MEDIUM); myGLCD.setFont(BigFont); myGLCD.setBackColor(100,200,140); drawSettings(); drawStart(); a=4; b=4; c=4; p=0; m=0; pinMode(Vib, OUTPUT); pinMode(Aud, OUTPUT); } void loop() { back: drawSettings(); drawStart(); while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x=myTouch.getX(); y=myTouch.getY(); if ((x>=5)&&(x<=310)) { if ((y>=5)&&(y<=120)) { Vibration(); myGLCD.clrScr(); secMenu11();secMenu12();secMenu13();secMenu14(); secMenu21();secMenu22();secMenu23();secMenu24(); secMenu31();secMenu32();secMenu33();secMenu34(); secMenu4(); while(true) {if (myTouch.dataAvailable()) { myTouch.read(); t=myTouch.getX(); h=myTouch.getY(); { if ((h>=5)&&(h<=60)) //настройка скорости {if ((t>=5)&&(t<=65)) {if (a>0) {a=a-1; Vibration();} if (a==0) {a=0; Vibration();} secMenu14();} if ((t>=175)&&(t<=235)) {if (a>0) {a=a+1; Vibration();} if (a==0) {a=a+1; Vibration();} secMenu14();} } if ((h>=65)&&(h<=120)) //настройка усилия { if ((t>=5)&&(t<=65)) {if (b>0) {b=b-1; Vibration();} if (b==0) {b=0; Vibration();} secMenu24();} if ((t>=175)&&(t<=235)) {if (b>0) {b=b+1; Vibration();} if (b==0) {b=b+1; Vibration();} secMenu24();} } if ((h>=125)&&(h<=180)) //настройка повторений { if ((t>=5)&&(t<=65)) {if (c>0) {c=c-1; Vibration();} if (c==0) {c=0; Vibration();} secMenu34();} if ((t>=175)&&(t<=235)) {if (c>0) {c=c+1; Vibration();} if (c==0) {c=c+1; Vibration();} secMenu34();} } if ((h>=185)&&(h<=235)) //APPLY { if ((t>=5)&&(t<=310)) {p=0; Vibration2(); myGLCD.clrScr(); goto back;} } } } } } if ((y>=130)&&(y<=240)) { Vibration(); myGLCD.clrScr(); drawProcess(); while(true) { if (myTouch.dataAvailable()) { myTouch.read(); t1=myTouch.getX(); h1=myTouch.getY(); { if ((h1>=5)&&(h1<=310)) {if ((t1>=5)&&(t1<=240)) {myGLCD.clrScr(); Vibration2(); goto back;} } } } } } } } } }//end loop
А что значит - "перестал работать экран"?
- Нет реакции от тачскрина (что напрашивается, исходя из названия темы)?
- Отсутствует изображение (что больше соответствует комбинации слов "экран+работа")?
- Еще что-нибудь?
Отсутствует изображение.
Действие при нажатии на тач есть...
Я, побаловавшись подобным шильдиком, отложил его в сторону - уж очень капризное у него соединение, в некоторых положениях отказывалось служить, как положено. Возможно и у вас проблема с правильным контактом.
Удалось решить проблему. Оказалось, что видимо были внесены изменения в библиотеку UTFT, новая версия не работает с редактированным файлом HW_AVR.h. Если библиотеку не обновлять и оставить старую версию, все прекрано работает.
а можете дать ссылку на старые библиотеки? пожалуйста