1. Informații generale
Deci, ia în considerare în detaliu adăugarea de Utouch, conceput pentru a lucra cu ecranul tactil, care este echipat cu cele mai multe ecrane TFT.
2. Noțiuni de bază cu ecranul tactil
Pentru a lucra cu plug-in-ul Utouch, trebuie să îl încărcați în programul dvs. și să efectuați o inițializare. Bineînțeles, biblioteca de bază UTFT trebuie încărcată și inițializată. Rețineți că pentru afișarea noastră, care a fost discutată în articolul precedent, inițializarea este după cum urmează:
#include
UTFT myGLCD (CTE32HR, 25,26,27,28);
Acum încărcați add-on-ul și creați un obiect - un ecran tactil numit myTouch. Ca parametri ai comenzii de inițializare, sunt transmise numerele de PIN la care sunt conectate semnalele TCLK, TCS, TDIN, TDOUT și IRQ. Acești parametri trebuie clarificați cu producătorul afișajului sau plăcuța de identificare, prin care afișajul este conectat la controler.
Prin urmare, pentru afișarea noastră trebuie să introduceți în program următoarele linii:
#include
UTouch myTouch (6,5,4,3,2);
Apoi, trebuie să inițializați afișajul de configurare void () și ecranul tactil în procedură:
void setup () <
myGLCD.InitLCD ();
myTouch.InitTouch ();
>
Comanda InitTouch, ca și comanda InitLCD a bibliotecii de bază, specifică orientarea verticală sau orizontală a afișajului. Implicit este orientarea orizontală. Toate, acum puteți lucra cu ecranul tactil. Luați în considerare un exemplu foarte simplu, cu care ne putem asigura că ecranul tactil funcționează. Compilam următorul program și îl încarcăm în memoria controlerului:
Când programul pornește, afișajul este vopsit în roșu. Acum atingeți ecranul în orice moment - iar afișajul va deveni verde.
3. Calibrați ecranul tactil
Înainte de a continua, trebuie să efectuați o altă procedură importantă - calibrarea ecranului tactil. În programele de probă furnizate împreună cu apendicele Utouch, există un exemplu foarte important, numit UTouch_Calibration.
Pentru a efectua calibrarea, trebuie să deschideți acest exemplu prin meniu:
"Fișier-> Exemple-> UTouch-> Arduino-> UTouch_Calibration".
ATENȚIE! Înainte de a compila, nu uitați să înlocuiți liniile UTFT myGLCD (....) Și UTouch myTouch (....) Cu cele necesare pentru afișarea noastră.
De asemenea, în timpul calibrării, parametrul TOUCH_ORIENTATION trebuie selectat corect. Informații despre valoarea acestui parametru este utilizat pentru a afișa modelul poate fi găsit în fișierul UTouch_Supported_display_modules.pdf care vine cu biblioteca Utouch și plasat în directorul rădăcină. Pentru afișarea noastră, de exemplu, valoarea PORTRAIT ar trebui setată, chiar dacă afișajul în sine este orientat orizontal.
ATENȚIE! Această valoare trebuie setată numai la calibrarea ecranului tactil, în viitor orientarea ecranului ar trebui să coincidă cu orientarea modulului de afișare.
La pornire, programul afișează un text explicativ și așteaptă atingerea ecranului tactil. Apoi, pe ecran se afișează 8 semne încrucișate pe marginea ecranului și o fereastră roșie cu inscripția PRESS în centru. Ghidul dezvoltatorului afirmă că este necesar să se atingă cruce iluminată și mențineți pentru a atinge până când lumina se stinge pe ea, și o casetă roșie în mijloc vedeți mesajul «RELEASE». Această operație simplă trebuie repetată pentru toate încrucișările.
Apropo, dezvoltatorii sfătuiesc să efectuați această operație cu un stilou sau un vârf ascuțit, fără a utiliza degetele, ceea ce va îmbunătăți precizia calibrării. La sfârșitul calibrării, vor fi afișate trei numere în format hexazecimal. De exemplu, aici sunt următoarele:
CAL_X 0xBD95ECC8UL
CAL_Y 0x5EBC8000UL
CAL_S 0x0013F1DFUL
Aceste trei valori trebuie să fie plasate în fișierul UTouch_CD.h, localizat în directorul rădăcină în locul acelor complectări valori UTouch CAL_X, CAL_Y și CAL_S, care sunt enumerate acolo inițial. După aceea, afișajul va funcționa corect.
Acum, ia în considerare în detaliu comenzile de add-on UTouch:
UTouch - creează o clasă de bază a ecranului tactil cu un nume dat, parametrii specificând metoda de conectare.
Comanda arată astfel:
Utouch _NAME_ (TCLK, TCS, TDIN, TDOUT, IRQ);
în cazul în care _NAME_ - arbitrar nume de obiect „touch screen“, care va fi folosit ca un prefix pentru orice referire la ea, și TCLK, TCS, TDIN, TDOUT și IRQ - numărul de pini, care conectează semnalele corespunzătoare touchscreen.
Șirul cu această comandă este plasat în zona de definiție și trebuie să precede orice alte comenzi UTouch. Numele obiectului specificat trebuie folosit ca prefix pentru toate comenzile ulterioare UTouch.
InitTouch - inițializează ecranul tactil și stabilește orientarea orizontală sau verticală. Parametrul identifică identificatorul de orientare.
Dacă specificați PORTRAIT în această comandă sau 0 - orientarea verticală va fi selectată dacă specificați LANDSCAPE sau 1 - orizontal. Rețineți că orientarea ecranului tactil trebuie să corespundă orientării afișajului. Valoarea implicită (fără parametri) comandă setează orientarea orizontală.
setPrecision - stabilește precizia determinării coordonatelor punctului de atingere pe ecranul tactil. Un identificator de precizie este trecut ca parametru.
Un total de patru niveluri de precizie, codificate de la 1 la 4:
PREC_LOW - precizie redusă;
PREC_MEDIUM - precizie medie;
PREC_HI - precizie mare;
PREC_EXTREME - precizie foarte mare.
Bineînțeles, nivelul de precizie este invers proporțional cu timpul petrecut în determinarea coordonatelor. Nivelul optim pentru majoritatea sarcinilor este nivelul PREC_MEDIUM. Dezvoltatorii nu recomandă utilizarea preciziei ridicate și foarte ridicate pentru operațiile care necesită un răspuns rapid.
Diferența dintre nivelurile de precizie poate fi ilustrată prin exemplul UTouch_QuickDraw, furnizat împreună cu biblioteca UTouch. Acest program vă permite să desenați afișajul utilizând ecranul tactil:
Încercați să compilați acest exemplu cu valori diferite ale setului de parametriPrecizie și veți simți imediat diferența.
dataAvailable - O funcție care returnează o valoare booleană adevărată dacă atingerea ecranului tactil este fixă la momentul apelului. În restul timpului - se întoarce fals.
Această funcție poate fi utilizată atât pentru a determina momentul atingerii cât și durata acesteia. În primul nostru exemplu, pe care am menționat-o în secțiunea 2, construcția:
dacă (myTouch.dataAvailable ()) <
myGLCD.fillScr (.255.0);
> altceva
conține un apel la funcția dataAvailable, care a declanșat o modificare a culorii afișajului, care a fost reținută pe durata atingerii. Să luăm în considerare încă un exemplu - măsurarea timpului de atingere în milisecunde:
La atingerea ecranului tactil, programul salvează valoarea curentă a funcției millis în variabila timeOld. Mai mult, atâta timp cât atinge atingerea, programul actualizează în mod constant valoarea milis actuală în variabila timpNew. De îndată ce atingerea sa oprit - afișajul arată diferența dintre aceste două variabile, care va fi egală cu timpul de atingere în milisecunde.
Deci, acum suntem capabili să lucrăm cu evenimentul "atingând ecranul tactil", putem determina momentul contactului, durata și timpul de eliberare. Rămâne foarte puțin - să obțineți coordonatele punctului de contact. Următoarele comenzi sunt utilizate pentru aceasta:
read - începe procedura de determinare a coordonatelor punctului de contact.
Această comandă nu transmite parametri și nu returnează nicio valoare. Ar trebui să fie rulat când funcția dataAvailable este setată la true. Coordonatele primite în formularul "brut" sunt stocate în variabilele interne TP_X și TP_Y. Cu toate acestea, aceste date nu sunt date dimensiunii și rezoluției sale, astfel încât funcțiile speciale getX și getY sunt folosite pentru a obține coordonatele punctului de tangență.
getX - returnează valoarea coordonatei X a punctului de atingere în pixeli în raport cu marginea din stânga a afișajului.
getY - returnează valoarea coordonatei Y a punctului de atingere în pixeli față de marginea superioară a afișajului.
Dat fiind calibrarea corectă și precizia suficientă a ecranului tactil, coordonatele punctului de contact trebuie să coincidă cu coordonatele unui anumit pixel. Tipul de returnare pentru aceste două funcții este int.
Următorul exemplu, când atingeți ecranul tactil, afișează coordonatele punctului de atingere în pixeli și în formatul "brut":
Acum, în scopul de a trata, de exemplu, apăsarea butonului suficient pentru a se asigura că coordonatele obținute din punct de contact se află în regiunea ocupată de afișare a butonului. Iată un alt exemplu:
Programul desenează un buton dreptunghi pe afișaj. Când atingeți ecranul tactil în zona butonului, pe ecran apare mesajul "PRESED", când atingeți în afara dreptunghiului, inscripția se stinge.
Un alt exemplu interesant. Acest program desenează o "fereastră" dreptunghiulară pe ecran și vă permite să redimensionați prin glisarea colțului din dreapta jos. Desigur, acest lucru nu este un DragDrop cu drepturi depline, dar foarte asemănător:
4. Concluzie
Deci, acum știm cum să utilizați ecranul tactil, poate determina momentul de contact și de a determina coordonatele punctului de contact, pentru a lucra cu controale simple, care sunt afișate pe ecran. În următorul articol vom vedea un alt plus față de bibliotecă UTFT - UTFT_Buttons, care vă permite să organizați lucrul cu text și grafică pe ecran butoane.