Kazalo:
- 1. korak: Arduino Mega 2560
- Korak: TFT LCD ščit 2,4 "
- 3. korak: Knjižnice
- 4. korak: Funkcije
- 5. korak: Primer
- 6. korak: Knjižnice
- 7. korak: Določa
- 8. korak: Nastavitev
- 9. korak: Zanka
- 10. korak: Preverite, ali se dotaknemo kroga
- 11. korak: Funkcije ustvarjanja geometrijskih oblik
- 12. korak: Preverite, ali se dotaknemo pravokotnika
- 13. korak: Preverite, ali se dotaknemo kroga
- 14. korak: Preverite, ali se dotaknemo trikotnika
- Korak 15: Funkcija za tiskanje imena predmeta, ki se ga dotaknete
- Korak: Datoteke
Video: Arduino z zaslonom na dotik: 16 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Bi radi ustvarili bolj prilagojene menije in boljše vmesnike človek/stroj? Za take projekte lahko uporabite Arduino in zaslon na dotik. Ali se ta ideja sliši vabljivo? Če je tako, si oglejte videoposnetek danes, kjer vam bom pokazal sklop z Mega Arduinom in zaslonom na dotik. Na zaslonu boste videli, kako narediti želene oblike, in tudi, kako določiti območje zaslona, na katerega se dotaknete in aktivirate določen ukaz. Poudarjam, da sem se odločil za uporabo Arduino Mega zaradi količine zatičev.
Danes vam bom predstavil zaslon na dotik, njegove grafične funkcije in način, kako pritegniti dotično točko na zaslonu. Ustvarimo tudi primer, ki vsebuje vse elemente, kot so pozicioniranje, pisanje, oblikovanje oblik, barv in dotika.
1. korak: Arduino Mega 2560
Korak: TFT LCD ščit 2,4"
Ta zaslon, ki ga uporabljamo v našem projektu, ima zanimivo lastnost: ima kartico SD. Vendar bosta pisanje in branje, povezana s tem, prikazana v drugem videu, ki ga bom kmalu izdelal. Cilj današnje lekcije je posebej obravnavati grafične lastnosti in zaslone na dotik tega zaslona.
Značilnosti:
Mera zaslona: 2,4 palca
Reža za kartico MicroSD
Barvni LCD: 65K
Gonilnik: ILI9325
Ločljivost: 240 x 320
Zaslon na dotik: 4-žični uporen zaslon na dotik
Vmesnik: 8 -bitni podatki, plus 4 krmilne vrstice
Delovna napetost: 3,3-5V
Dimenzije: 71 x 52 x 7 mm
3. korak: Knjižnice
Dodajte knjižnice:
"Adafruit_GFX"
"SWTFT"
"Zaslon na dotik"
Kliknite na povezave in prenesite knjižnice.
Razpakirajte datoteko in jo prilepite v mapo knjižnice Arduino IDE.
C: / Programske datoteke (x86) / Arduino / knjižnice
Opomba
Preden začnemo s programom, se moramo lotiti nečesa pomembnega: umerjanja TOUCH.
Z enostavnim programom za prikaz dodirnih točk na zaslonu shranite vrednost točk (x, y) na vsakem koncu (označeno z rumeno na spodnji sliki). Te vrednosti so pomembne za preslikavo dotika na grafične točke na zaslonu.
#include // Portas de leitura das coordenadas do touchvoid #define YP A1 // Y+ je na Analog1 #define XM A2 // X- je na Analog2 #define YM 7 // Y- je na Digital7 #define XP 6 // X+ je na Digital6 // objeto para manipulacao dos eventos de toque na tela TouchScreen ts = Zaslon na dotik (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); zamuda (1000); }
4. korak: Funkcije
Zdaj pa poglejmo nekaj grafičnih funkcij, ki nam jih knjižnice lahko ponudijo.
1. drawPixel
Funkcija drawPixel je odgovorna za poslikavo ene točke na zaslonu v dani točki.
void drawPixel (int16_t x, int16_t in, barva uint16_t);
2. drawLine
Funkcija drawLine je odgovorna za risanje črte iz dveh točk.
void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1, barva uint16_t);
3. drawFastVLine
Funkcija drawFastVLine je odgovorna za risanje navpične črte od točke in višine.
void drawFastVLine (int16_t x, int16_t y, int16_t h, barva uint16_t);
4. drawFastHLine
Funkcija drawFastHLine je odgovorna za risanje vodoravne črte iz točke in širine.
void drawFastHLine (int16_t x, int16_t y, int16_t w, barva uint16_t);
5. drawRect
Funkcija drawRect je odgovorna za risanje pravokotnika na zaslonu, mimo izvorne točke, njene višine in širine.
void drawRect (int16_t x, int16_t y, int16_t w, int16_t h, barva uint16_t);
6. fillRect
Funkcija fillRect je enaka drawRect, vendar bo pravokotnik napolnjen z dano barvo.
void fillRect (int16_t x, int16_t y, int16_t w, int16_t h, barva uint16_t);
7. drawRoundRect
Funkcija drawRoundRect je enaka drawRect, vendar ima pravokotnik zaobljene robove.
void drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, polmer int16_t, barva uint16_t);
8. fillRoundRect
Funkcija fillRoundRect je enaka drawRoundRect, vendar bo pravokotnik napolnjen z dano barvo.
void fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, polmer int16_t, barva uint16_t);
9. drawTriangle
Funkcija drawTriangle je odgovorna za risanje trikotnika na zaslonu, ki prehaja točko treh točk.
void drawTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, barva uint16_t);
10. fillTriangle
Funkcija fillTriangle je enaka drawTriangle, vendar bo trikotnik napolnjen z dano barvo.
void fillTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, barva uint16_t);
11. drawCircle
Funkcija drawCircle je odgovorna za risanje kroga od izvorne točke in polmera.
void drawCircle (int16_t x0, int16_t y0, int16_t r, barva uint16_t);
12. fillCircle
Funkcija fillCircle je enaka drawCircle, vendar bo krog napolnjen z dano barvo.
void fillCircle (int16_t x0, int16_t y0, int16_t r, barva uint16_t);
13. fillScreen
Funkcija fillScreen je odgovorna za polnjenje zaslona z eno samo barvo.
void fillScreen (barva uint16_t);
14. setCursor
Funkcija setCursor je odgovorna za postavitev kazalca za pisanje na določeno točko.
void setCursor (int16_t x, int16_t y);
15. setTextColor
Funkcija setTextColor je odgovorna za dodelitev barve besedilu za pisanje. Uporabljamo ga na dva načina:
void setTextColor (uint16_t c); // nastavi barvo samo za pisanjevoid setTextColor (uint16_t c, uint16_t bg); // nastavimo barvo pisanja in barvo ozadja
16. setTextSize
Funkcija setTextSize je odgovorna za dodelitev velikosti besedilu, ki bo napisano.
void setTextSize (uint8_t s);
17. setTextWrap
Funkcija setTextWrap je odgovorna za prekinitev črte, če doseže mejo zaslona.
void setTextWrap (logično w);
18. setRotation
Za vrtenje zaslona (ležeče, pokončno) je odgovorna funkcija setRotation.
void setRotation (uint8_t r); // 0 (standardno), 1, 2, 3
5. korak: Primer
Ustvarili bomo program, v katerem bomo uporabili večino virov, ki nam jih ponuja zaslon.
Zapišimo nekaj nizov v različnih velikostih, ustvarimo tri geometrijske figure in nanje poberemo dogodek dotika. Vsakič, ko se dotaknemo ene od številk, bomo imeli pod njimi povratne informacije o imenu figure.
6. korak: Knjižnice
Najprej opredelimo knjižnice, ki jih bomo uporabljali.
#include // responsável pela parte gráfica
#include // responsável por pegar os toques na tela
#include // comunicação com o prikaz
#include // comunicação com o display
#vključi "math.h" // računska potencia
7. korak: Določa
Določili bomo nekaj makrov za nožice in tudi pomembne vrednosti, ki jih bomo uporabili.
// 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 simples 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 feedback #define FEEDBACK_LABEL_X 10 #define FEEDBACK_LABEL_Y 200 #defEFE_DATE_FEEDB 10 #define MAXPRESSURE 1000
Nadaljujemo z opredelitvijo nekaterih makrov.
// Associa o nome das cores aos valores korespondentes #define BLACK 0x0000 #define RDEČA 0xF800 #define ZELENA 0x07E0 #define CYAN 0x07FF #define YELLOW 0xFFE0 #define WHITE 0xFFFF // dados de criaçusoo do Circle 30; const int krog_x = 240; const int krog_y = 125; // objekt za manipulacijo dos dogodkov na točki na zaslonu TouchScreen ts = Zaslon na dotik (XP, YP, XM, YM); // objeto para manipulacao da parte grafica SWTFT tft;
8. korak: Nastavitev
V nastavitvah bomo inicializirali naš grafični nadzorni objekt in naredili prve konfiguracije.
void setup () {Serial.begin (9600); // reseta o objeto da lib grafica tft.reset (); // inicializa objeto controlador da lib grafica tft.begin (); zamuda (500); // rotaciona a tela para landscape tft.setRotation (1); // pinta a tela toda de preto tft.fillScreen (BLACK); // chama a função para iniciar nossas configurações initialSettings (); }
9. korak: Zanka
V zanki bomo izbrali točko, na kateri se dotaknemo zaslona, in videli, ali se je dotik zgodil na eni od številk.
void loop () {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 a tela para landscape implica no X Receber o mapeamento de Y TSPoint p; p.x = zemljevid (touchPoint.y, TS_MINY, TS_MAXY, 0, 320); p.y = zemljevid (touchPoint.x, TS_MINX, TS_MAXX, 240, 0); // preveri, da ni nobenega toque foi suficiente if (touchPoint.z> MINPRESSURE && touchPoint.z <MAXPRESSURE) {// preveri, da se tocou no retangulo if (pointInRect (p)) {writeShape ("Rect"); } // preveri, da se ne pojavlja več triangulo drugače, če (pointInsideTriangle (TSPoint (110, 150, 0), TSPoint (150, 100, 0), TSPoint (190, 150, 0), p)) {writeShape ("Trikotnik"); } // preveri, da se ne kroži drugje if (pointInCircle (p)) {writeShape ("Circle"); }}}
10. korak: Preverite, ali se dotaknemo kroga
V tem koraku obravnavamo inicializacijo zaslona in določimo barve prikazanih besedil.
/ *Desenha na tela os elementos */ void initialSettings () {tft.setTextColor (BELO); tft.setTextSize (TEXT_SIZE_S); tft.println ("DOSTOP"); tft.setTextColor (RUMENO); tft.setTextSize (TEXT_SIZE_M); tft.println ("MEU BLOG"); tft.setTextColor (ZELENO); 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 ("OBLIKA:"); }
11. korak: Funkcije ustvarjanja geometrijskih oblik
Ustvarjamo pravokotnik, trikotnik in krog z izhodišči, ki jih določimo.
// cria um retangulo com origem (x, y) = (10, 100) // širina = 80 e višina = 50 void createRect () {tft.fillRect (10, 100, 80, 50, RED); tft.drawRect (10, 100, 80, 50, BELO); } // 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, RUMEN); tft.drawTriangle (110, 150, 150, 100, 190, 150, BELO); } // 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, BELO); }
12. korak: Preverite, ali se dotaknemo pravokotnika
Ta funkcija preveri, ali je točka v pravokotniku.
// 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 if (py = 100) {return true; }} return false; }
13. korak: Preverite, ali se dotaknemo kroga
To je enako kot pri krogu.
// distancia entre pontos D = raiz ((xb-xa)^2 + (yb-ya)^2) // vefifica se o ponto está dentro do circulo // se distancia do ponto pra origem do circulo za menor ou igual ao raio, ele está dentro bool pointInCircle (TSPoint p) {float distance = sqrt (pow (px - krog_x, 2) + pow (py - krog_y, 2)); if (razdalja <= radijski_krog) {return true; } return false; }
14. korak: Preverite, ali se dotaknemo trikotnika
Enako preverjanje točke se zgodi tudi znotraj trikotnika.
// 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 = trikotnikArea (a, b, c); float ACP = trikotnikArea (a, c, p); plavajoči ABP = trikotnikArea (a, b, p); plavajoči CPB = trikotnikArea (c, p, b); če (ABC == ACP+ABP+CPB) {vrne true; } return false; } // Função que izračuna površino de um triangulo com base nos pontos x, y plavajoči trikotnikArea (TSPoint a, TSPoint b, TSPoint c) {return fabs (((bx - ax)*(cy - ay) - (cx - sekira) * (po - ay))/2); }
Korak 15: Funkcija za tiskanje imena predmeta, ki se ga dotaknete
Tu na zaslon napišemo ime uporabljene geometrijske figure.
// escreve na tela o nome da figura geométrica que foi tocadavoid writeShape (String shape) {tft.fillRect (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y, 170, 30, BLACK); tft.setCursor (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y); tft.setTextSize (TEXT_SIZE_G); tft.setTextColor (BELO); tft.println (oblika); }
Korak: Datoteke
Prenesite datoteke:
JAZ NE
Priporočena:
Macintosh z zaslonom na dotik - Klasični Mac z zaslonom IPad Mini: 5 korakov (s slikami)
Macintosh z zaslonom na dotik | Klasični Mac z zaslonom IPad Mini: To je moja posodobljena in prenovljena zasnova, kako zamenjati zaslon starega Macintosha z iPad mini. To je že šesti od teh, ki sem jih naredil v preteklih letih in sem zelo zadovoljen z razvojem in oblikovanjem tega! Leta 2013, ko sem naredil
Bralnik RFID na osnovi ESP32 z zaslonom na dotik: 7 korakov
Bralnik RFID na osnovi ESP32 z zaslonom na dotik: V tem kratkem navodilu bom pokazal, kako ustvariti preprost čitalnik RFID z izhodom TFT za montažo na steno z uporabo modula ESP32 DEV KIT C, tiskalnika PCB na osnovi RC-522 in kompleta ESP AZ-Touch. Ta bralnik lahko uporabite za dostop do vrat ali alarm za vsiljivca
Vizitka z zaslonom na dotik: 8 korakov (s slikami)
Vizitka z zaslonom na dotik: Diplomiral sem kot strojni inženir, vendar sem tudi razvil veščine v elektrotehniki in programiranju iz let projektov, ki vključujejo vezja in mikrokrmilnike. Ker bodo delodajalci pričakovali, da imam znanja inženirja strojništva
Raspberry Pi 7 -palčna tablica z zaslonom na dotik: 15 korakov
Raspberry Pi 7 -palčni tablični računalnik z zaslonom na dotik: Ta navodila kažejo, kako zgraditi polnilno litij -ionsko baterijo, polnjeno tablico z zaslonom na dotik Raspberry Pi. Ta projekt je bil odkrit na Adafruit.com in navodila podrobno opisujejo, kako ponovno ustvariti ta projekt. Ta navodila
Tehtnica z zaslonom na dotik (Arduino): 7 korakov (s slikami)
Tehtnica z zaslonom na dotik (Arduino): Ste si kdaj želeli sestaviti tehtnico z zaslonom na dotik? Nikoli niste pomislili na to? Dobro preberite in poskusite zgraditi enega … Ali veste, kaj sta zaslon na dotik TFT in celica za nalaganje? Če da, pojdite na korak 1, sicer začnite z branjem uvoda. Uvod: Kaj