Përmbajtje:
- Hapi 1: Arduino Mega 2560
- Hapi 2: Mburoja TFT LCD 2.4 "
- Hapi 3: Bibliotekat
- Hapi 4: Funksionet
- Hapi 5: Shembull
- Hapi 6: Bibliotekat
- Hapi 7: Përcakton
- Hapi 8: Konfigurimi
- Hapi 9: Lak
- Hapi 10: Kontrolloni nëse prekim rrethin
- Hapi 11: Funksionet e Krijimit të Formave Gjeometrike
- Hapi 12: Kontrolloni nëse prekim drejtkëndëshin
- Hapi 13: Kontrolloni nëse prekim rrethin
- Hapi 14: Kontrolloni nëse prekim trekëndëshin
- Hapi 15: Funksioni për të Shtypur Emrin e Objektit të Prekur
- Hapi 16: Skedarët
Video: Arduino me ekran me prekje: 16 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:26
Dëshironi të krijoni meny më të personalizuara dhe ndërfaqe më të mira njerëzore/makinerie? Për projekte të tilla, mund të përdorni një Arduino dhe një ekran me prekje. A tingëllon tërheqëse kjo ide? Nëse është kështu, shikoni videon sot, ku do t'ju tregoj një asamble me një Mega Arduino dhe një ekran me prekje. Ju do të shihni se si të bëni modelet që dëshironi në ekran, dhe gjithashtu si të përcaktoni rajonin e ekranit për të prekur dhe aktivizuar një komandë specifike. Theksoj se kam zgjedhur të përdor Arduino Mega për shkak të sasisë së tij të kunjave.
Kështu sot, unë do t'ju prezantoj me ekranin me prekje, funksionet e tij grafike dhe si të kapni pikën e prekjes në ekran. Le të krijojmë gjithashtu një shembull që përmban të gjithë elementët, të tillë si pozicionimi, shkrimi, dizajnimi i formave, ngjyrave dhe prekjes.
Hapi 1: Arduino Mega 2560
Hapi 2: Mburoja TFT LCD 2.4"
Ky ekran që ne përdorim në projektin tonë ka një veçori interesante: ka një kartë SD. Sidoqoftë, shkrimi dhe leximi i përfshirë në këtë do të shfaqen në një video tjetër, të cilën së shpejti do ta prodhoj. Objektivi i mësimit të sotëm është që të trajtojë në mënyrë specifike tiparet grafike dhe ekranet me prekje të këtij ekrani.
Karakteristikat:
Përmasat e ekranit: 2.4 inç
Vend i kartës MicroSD
LCD me ngjyra: 65K
Shoferi: ILI9325
Rezolucioni: 240 x 320
Ekran me prekje: Ekran me prekje rezistente me 4 tela
Ndërfaqja: Të dhëna 8 bit, plus 4 linja kontrolli
Tensioni i funksionimit: 3.3-5V
Përmasat: 71 x 52 x 7mm
Hapi 3: Bibliotekat
Shtoni bibliotekat:
"Adafruit_GFX"
"SWTFT"
"Ekran me prekje"
Klikoni në lidhjet dhe shkarkoni bibliotekat.
Zbërtheni skedarin dhe ngjiteni në dosjen e bibliotekave të Arduino IDE.
C: / Skedarët e programit (x86) / Arduino / bibliotekat
shënim
Para se të fillojmë programin tonë, duhet të trajtojmë diçka të rëndësishme: kalibrimin TOUCH.
Duke përdorur një program të thjeshtë për të marrë pikat e prekjes në ekran, ruani vlerën e pikave (x, y) në çdo fund (të theksuara me të verdhë në figurën më poshtë). Këto vlera janë të rëndësishme për hartëzimin e prekjes në pikat grafike në ekran.
#include // Portas de leitura das coordenadas do touchvoid #define YP A1 // Y+ është në Analog1 #define XM A2 // X- është në Analog2 #define YM 7 // Y- është në Digital7 #define XP 6 // X+ është në Digital6 // objektet për manipulimin e ngjarjeve të përdorimit të ekranit TouchScreen ts = Ekrani me prekje (XP, YP, XM, YM); void setup () {Serial.begin (9600); } void loop () {TSPoint touchPoint = ts.getPoint (); // pega o touch (x, y, z = pressao) Serial.print ("X:"); Serial.println (touchPoint.x); Serial.print ("Y:"); Serial.println (touchPoint.y); vonesa (1000); }
Hapi 4: Funksionet
Tani le të hedhim një vështrim në disa funksione grafike që bibliotekat mund të na ofrojnë.
1. barazimPiksel
Funksioni drawPixel është përgjegjës për pikturimin e një pike të vetme në ekran në pikën e caktuar.
void drawPixel (ngjyra int16_t x, int16_t dhe, uint16_t);
2. drawLine
Funksioni drawLine është përgjegjës për tërheqjen e një linje nga dy pika.
void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1, ngjyra uint16_t);
3. drawFastVLine
Funksioni drawFastVLine është përgjegjës për tërheqjen e një linje vertikale nga një pikë dhe një lartësi.
void drawFastVLine (int16_t x, int16_t y, int16_t h, ngjyra uint16_t);
4. drawFastHLine
Funksioni drawFastHLine është përgjegjës për tërheqjen e një linje horizontale nga një pikë dhe një gjerësi.
void drawFastHLine (int16_t x, int16_t y, int16_t w, ngjyra uint16_t);
5. tërheqRect
Funksioni drawRect është përgjegjës për vizatimin e një drejtkëndëshi në ekran, duke kaluar një pikë origjine, lartësinë dhe gjerësinë e tij.
void drawRect (int16_t x, int16_t y, int16_t w, int16_t h, ngjyra uint16_t);
6. mbushRect
Funksioni fillRect është i njëjtë me drawRect, por drejtkëndëshi do të mbushet me ngjyrën e dhënë.
void fillRect (int16_t x, int16_t y, int16_t w, int16_t h, ngjyra uint16_t);
7. drawRoundRect
Funksioni drawRoundRect është i njëjtë me drawRect, por drejtkëndëshi do të ketë skaje të rrumbullakosura.
void drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, rreze int16_t, ngjyra uint16_t);
8. fillRoundRect
Funksioni fillRoundRect është i njëjtë me drawRoundRect, por drejtkëndëshi do të mbushet me ngjyrën e dhënë.
void fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, rreze int16_t, ngjyra uint16_t);
9. barazim Trekëndësh
Funksioni drawTriangle është përgjegjës për vizatimin e një trekëndëshi në ekran, duke kaluar pikën e 3 kulmeve.
void drawTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, ngjyra uint16_t);
10. fillTriangle
Funksioni fillTriangle është i njëjtë me drawTriangle, por trekëndëshi do të mbushet me ngjyrën e dhënë.
void fillTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, ngjyra uint16_t);
11. barazimRreth
Funksioni drawCircle është përgjegjës për tërheqjen e një rrethi nga një pikë burimi dhe një rreze.
void drawCircle (int16_t x0, int16_t y0, int16_t r, ngjyra uint16_t);
12. mbush Rrethi
Funksioni fillCircle është i njëjtë me drawCircle, por rrethi do të mbushet me ngjyrën e dhënë.
void fillCircle (int16_t x0, int16_t y0, int16_t r, ngjyra uint16_t);
13. mbush ekranin
Funksioni FillScreen është përgjegjës për mbushjen e ekranit me një ngjyrë të vetme.
void fillScreen (ngjyra uint16_t);
14. setKursori
Funksioni setCursor është përgjegjës për pozicionimin e kursorit për të shkruar në një pikë të caktuar.
void setCursor (int16_t x, int16_t y);
15. setTextColor
Funksioni setTextColor është përgjegjës për caktimin e një ngjyre në tekstin që do të shkruhet. Ne kemi dy mënyra për ta përdorur atë:
void setTextColor (uint16_t c); // vendos ngjyrën e shkrimit vetëm shmang setTextColor (uint16_t c, uint16_t bg); // vendosni ngjyrën e shkrimit dhe ngjyrën e sfondit
16. setTextSize
Funksioni setTextSize është përgjegjës për caktimin e një madhësie në tekstin që do të shkruhet.
void setTextSize (uint8_t s);
17. setTextWrap
Funksioni setTextWrap është përgjegjës për thyerjen e vijës nëse arrin kufirin e ekranit.
void setTextWrap (w boolean w);
18. setRotacioni
Funksioni setRotation është përgjegjës për rrotullimin e ekranit (peizazh, portret).
void setRotation (uint8_t r); // 0 (standard), 1, 2, 3
Hapi 5: Shembull
Ne do të krijojmë një program në të cilin do të përdorim shumicën e burimeve që na ofron ekrani.
Le të shkruajmë disa vargje në madhësi të ndryshme, të krijojmë tre figura gjeometrike dhe të marrim ngjarjen e prekjes mbi to, sa herë që prekim njërën nga figurat, do të kemi reagimet e emrit të figurës pikërisht poshtë tyre.
Hapi 6: Bibliotekat
Së pari le të përcaktojmë bibliotekat që do të përdorim.
#include // responsável pela parte gráfica
#include // responsável për pegar os toques na tela
#include // comunicação com o shfaqje
#include // comunicação com o shfaqje
#përfshi "matematika.h" // potencia llogaritëse
Hapi 7: Përcakton
Ne do të përcaktojmë disa makro për kunjat, dhe gjithashtu vlerat e rëndësishme që do të përdorim.
// Portas de leitura das coordenadas do touch #define YP A1 // Y+ #define XM A2 // X- #define YM 7 // Y- #define XP 6 // X+ // valores encontrados através da calibração do touch // faça um código simple para imprimir os valores (x, y) a cada toque // então encontre os valores nas extremidades max/min (x, y) #define TS_MINX 130 #define TS_MINY 80 #define TS_MAXX 900 #define TS_MAXY 900 // tamanho dos textos #define TEXT_SIZE_L 3 #define TEXT_SIZE_M 2 #define TEXT_SIZE_S 1 // posicionamento dos textos de reagime #define FEEDBACK_LABEL_X 10 #define FEEDBACK_LABEL_Y 200 #define FEEDBACK_TOUCH_X 120 #define FEEDBACK_TOUCH_Y 200 // Valores para detectar a Pressao bëjë #define MINPRESSURE toque 10 #përcaktoni MAXPRESSURE 1000
Ne vazhdojmë me përkufizimin e disa makrove.
// Associa o nome das cores aos valoresrespondentes #define ZI 0x0000 #përcakto të KUQ 0xF800 #përcaktoni GREEN 0x07E0 #përcaktoni CYAN 0x07FF #define YELLOW 0xFFE0 #define WHITE 0xFFFo // për ta bërë cria const int rrethi_x = 240; const int rrethi_y = 125; // objektet për manipulimin e rasteve të përdorimit të ekranit TouchScreen ts = Ekran me prekje (XP, YP, XM, YM); // objeto para manipulacao da parte grafica SWTFT tft;
Hapi 8: Konfigurimi
Në konfigurim, ne do të inicializojmë objektin tonë të kontrollit grafik dhe do të bëjmë konfigurimet e para.
void setup () {Serial.begin (9600); // reseta o objeto da lib grafica tft.reset (); // inicializa objeto controlador da lib grafica tft.begin (); vonesë (500); // rotaciona a tela para peizazhit tft.setRotation (1); // pinta a tela toda de preto tft.fillScreen (BLACK); // chama a função para iniciar nossas configurações initialSettings (); }
Hapi 9: Lak
Në lak, ne do të kapim pikën në të cilën prekim ekranin dhe do të shohim nëse prekja ka ndodhur në njërën nga figurat.
lak void () {TSPoint touchPoint = ts.getPoint (); // pega o touch (x, y, z = pressao) pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); // mapeia o ponto de touch para o (x, y) grafico // o fato de termos rotacionado një tela para peizazhit të nënkuptuar pa X receber ose mapeamento nga Y TSPoint p; p.x = hartë (touchPoint.y, TS_MINY, TS_MAXY, 0, 320); p.y = hartë (touchPoint.x, TS_MINX, TS_MAXX, 240, 0); // verifikimi i një shtypi nuk do të thotë nëse (touchPoint.z> MINPRESSURE && touchPoint.z <MAXPRESSURE) {// verifica se tocou no retangulo if (pointInRect (p)) {writeShape ("Rect"); } // verifica se tocou no triangulo else if (pointInsideTriangle (TSPoint (110, 150, 0), TSPoint (150, 100, 0), TSPoint (190, 150, 0), p)) {writeShape ("Triangle"); } // verifica se tocou no circulo else if (pointInCircle (p)) {writeShape ("Rrethi"); }}}
Hapi 10: Kontrolloni nëse prekim rrethin
Në këtë hap ne merremi me inicimin e ekranit dhe përcaktojmë ngjyrat e teksteve që do të shfaqen.
/ *Desenha na tela os elementos */ void fillimetSettings () {tft.setTextColor (WHITE); tft.setTextSize (TEXT_SIZE_S); tft.println ("HYRJE"); tft.setTextColor (E verdhë); tft.setTextSize (TEXT_SIZE_M); tft.println ("MEU BLOG"); tft.setTextColor (GREEN); tft.setTextSize (TEXT_SIZE_L); tft.println ("FERNANDOK. COM"); createRect (); createTriangle (); createCircle (); tft.setCursor (FEEDBACK_LABEL_X, FEEDBACK_LABEL_Y); tft.setTextColor (CYAN); tft.setTextSize (TEXT_SIZE_L); tft.println ("SHIPE:"); }
Hapi 11: Funksionet e Krijimit të Formave Gjeometrike
Ne krijojmë një drejtkëndësh, një trekëndësh dhe një rreth me origjinën që përcaktojmë.
// cria um retangulo com origem (x, y) = (10, 100) // gjerësia = 80 e lartësia = 50 void createRect () {tft.fillRect (10, 100, 80, 50, KUQ); tft.drawRect (10, 100, 80, 50, E BARDH); } // cria um triangulo com os vertices: // A = (110, 150); B = (150, 100); C = (190, 150) void createTriangle () {tft.fillTriangle (110, 150, 150, 100, 190, 150, YELLOW); tft.drawTriangle (110, 150, 150, 100, 190, 150, WHITE); } // cria um circulo com origem no ponto (x, y) = (240, 125) e raio = 30 void createCircle () {tft.fillCircle (240, 125, 30, GREEN); tft.drawCircle (240, 125, 30, WHITE); }
Hapi 12: Kontrolloni nëse prekim drejtkëndëshin
Ky funksion kontrollon nëse pika është brenda drejtkëndëshit.
// Função que verifica se o ponto está dentro do retângulobool pointInRect (TSPoint p) {// max/min X do retangulo if (px> = 10 && px <= 90) {// max/min Y do retangulo nëse (py = 100) {kthehu i vërtetë; }} kthehu false; }
Hapi 13: Kontrolloni nëse prekim rrethin
Kjo është njësoj si me rrethin.
// distancia entre pontos D = raiz ((xb-xa)^2 + (yb-ya)^2) // vefifica se o ponto está dentro do circulo // se a distancia do ponto pra origem do circulo for menor ou igual ao raio, ele está dentro bool pointInCircle (TSPoint p) {float distance = sqrt (pow (px - circle_x, 2) + pow (py - rreth_y, 2)); nëse (distanca <= rrethi_radius) {kthehu i vërtetë; } kthimi false; }
Hapi 14: Kontrolloni nëse prekim trekëndëshin
I njëjti kontroll i asaj të pikës ndodh edhe brenda trekëndëshit.
// Função que verifica se o ponto p esta dentro do triangulo ABC // Se estiver dentro retorna TRUE senão retorna FALSE bool pointInsideTriangle (TSPoint a, TSPoint b, TSPoint c, TSPoint p) {float ABC = trekëndëshArea (a, b, c); noton ACP = trekëndëshArea (a, c, p); noton ABP = trekëndësh Zona (a, b, p); float CPB = trekëndëshArea (c, p, b); nëse (ABC == ACP+ABP+CPB) {kthehet e vërtetë; } kthimi false; } // Função que calcula a area de um triangulo com base nos pontos x, y float triangleArea (TSPoint a, TSPoint b, TSPoint c) {fabs return ((((bx - ax)*(cy - ay) - (cx - sëpatë) * (nga - ay))/2); }
Hapi 15: Funksioni për të Shtypur Emrin e Objektit të Prekur
Këtu shkruajmë në ekran emrin e figurës gjeometrike që përdoret.
// escreve na tela o nome da figura geométrica que foi tocadavoid writeShape (Forma e vargut) {tft.fillRect (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y, 170, 30, ZI); tft.setCursor (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y); tft.setTextSize (TEXT_SIZE_G); tft.setTextColor (E BARDH); tft.println (formë); }
Hapi 16: Skedarët
Shkarkoni skedarët:
INO
Recommended:
Ekran me prekje Macintosh - Mac klasik me një mini iPad për ekran: 5 hapa (me fotografi)
Ekran me prekje Macintosh | Mac klasik me një IPad Mini për ekranin: Ky është përditësimi im dhe modeli i rishikuar se si të zëvendësoni ekranin e një Macintosh të cilësisë së mirë me një iPad mini. Kjo është e 6 -ta nga këto që kam bërë gjatë viteve dhe jam shumë e lumtur me evolucionin dhe modelin e këtij! Kthehu në vitin 2013 kur bëra
Tre qarqe me sensorë me prekje + Qarku i kohëmatësit me prekje: 4 hapa
Tre Qarqet e Sensorit të Prekjes + Qarku i Kohëmatësit të Prekjes: Sensori i Prekjes është një qark i cili ndizet kur zbulon prekjen në Kunjat e Prekjes. Punon në baza kalimtare, domethënë ngarkesa do të jetë ON vetëm për kohën kur prekja bëhet në kunjat. Këtu, unë do t'ju tregoj tre mënyra të ndryshme për të bërë një prekje sen
Ekran me prekje Arduino: 4 hapa
Ekrani me prekje Arduino: Përshëndetje! Sot, unë do t'ju tregoj se si të përdorni një mburojë me ekran me prekje me Arduino Uno. Mund ta përdorni si një ekran të vogël për thonjëza ose fotografi ose të gjitha llojet e sendeve të tjera
Peshorja e peshimit me ekran me prekje (Arduino): 7 hapa (me fotografi)
Peshimi i peshimit me ekran me prekje (Arduino): A keni dashur ndonjëherë të ndërtoni një peshore me një ekran me prekje? Nuk e keni menduar ndonjëherë? Lexoni mirë dhe provoni të ndërtoni një … A e dini se çfarë janë një ekran me prekje TFT dhe një qelizë ngarkese? Nëse Po kaloni në hapin 1 tjetër thjesht filloni duke lexuar Hyrjen. Hyrje: Çfarë
Arduino Gauntlet me ekran me prekje: 10 hapa
Gauntlet Arduino Touch Screen: Në këtë Instructable unë do t'ju tregoj se si të krijoni Gauntlet tuaj të parë Arduino Touch Screen