Orodha ya maudhui:
- Hatua ya 1: Arduino Mega 2560
- Hatua ya 2: TFT LCD Shield 2.4 "
- Hatua ya 3: Maktaba
- Hatua ya 4: Kazi
- Hatua ya 5: Mfano
- Hatua ya 6: Maktaba
- Hatua ya 7: Inafafanua
- Hatua ya 8: Sanidi
- Hatua ya 9: Kitanzi
- Hatua ya 10: Angalia ikiwa Tunagusa Mzunguko
- Hatua ya 11: Kazi za Kuunda Maumbo ya Kijiometri
- Hatua ya 12: Angalia Ikiwa Tunagusa Mstatili
- Hatua ya 13: Angalia ikiwa Tunagusa Mzunguko
- Hatua ya 14: Angalia Ikiwa Tunagusa Pembetatu
- Hatua ya 15: Kazi ya Kuchapisha jina la kitu kilichoguswa
- Hatua ya 16: Faili
Video: Arduino Pamoja na Uonyesho wa Skrini ya Kugusa: Hatua 16
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:53
Je! Ungependa kuunda menyu zaidi za kibinafsi na mwingiliano bora wa kibinadamu / mashine? Kwa miradi kama hiyo, unaweza kutumia Arduino na Onyesho la Skrini ya Kugusa. Je! Wazo hili linasikika? Ikiwa ni hivyo, angalia video leo, ambapo nitakuonyesha mkutano na Mega Arduino na Screen Screen ya Kugusa. Utaona jinsi ya kutengeneza miundo unayotaka kwenye skrini, na pia jinsi ya kuamua mkoa wa skrini kugusa na kuamsha amri maalum. Nasisitiza kwamba nilichagua kutumia Arduino Mega kwa sababu ya pini zake.
Kwa hivyo leo, nitakujulisha kwa onyesho la Screen Touch, kazi zake za picha, na jinsi ya kunyakua sehemu ya kugusa kwenye skrini. Wacha pia tuunda mfano ulio na vitu vyote, kama vile kuweka nafasi, kuandika, kubuni maumbo, rangi, na kugusa.
Hatua ya 1: Arduino Mega 2560
Hatua ya 2: TFT LCD Shield 2.4"
Onyesho hili ambalo tunatumia katika mradi wetu lina huduma ya kupendeza: ina kadi ya SD. Walakini, uandishi na usomaji unaohusika katika hii utaonyeshwa kwenye video nyingine, ambayo nitatoa hivi karibuni. Lengo la somo la leo ni kushughulikia haswa picha za picha za skrini na kugusa za onyesho hili.
Tabia:
Kipimo cha Skrini: inchi 2.4
Slot kadi ya MicroSD
Rangi LCD: 65K
Dereva: ILI9325
Azimio: 240 x 320
Skrini ya kugusa: skrini ya kugusa ya waya 4
Interface: data 8 kidogo, pamoja na laini 4 za kudhibiti
Uendeshaji voltage: 3.3-5V
Vipimo: 71 x 52 x 7mm
Hatua ya 3: Maktaba
Ongeza maktaba:
"Adafruit_GFX"
"SWTFT"
"Skrini ya kugusa"
Bonyeza kwenye viungo na pakua maktaba.
Unzip faili na ubandike kwenye folda ya maktaba ya Arduino IDE.
C: / Faili za Programu (x86) / Arduino / maktaba
Kumbuka
Kabla ya kuanza programu yetu, tunahitaji kushughulikia jambo muhimu: usawa wa TOUCH.
Kutumia programu rahisi kupata alama za kugusa kwenye onyesho, kuhifadhi thamani ya alama (x, y) kila mwisho (iliyoangaziwa kwa manjano kwenye takwimu hapa chini). Maadili haya ni muhimu kwa kuchora mguso kwa alama za picha kwenye skrini.
# pamoja na // Portas de leitura das coordenadas do touchvoid #fasili YP A1 // Y + iko kwenye Analog1 #fafanua XM A2 // X- iko kwenye Analog2 #fafanua YM 7 // Y- iko kwenye Digital7 #fafanua XP 6 // X + iko kwenye Digital6 // objeto para manipulacao dos eventos de toque na tela TouchScreen ts = TouchScreen (XP, YP, XM, YM); kuanzisha batili () {Serial.begin (9600); } kitanzi batili () {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); kuchelewesha (1000); }
Hatua ya 4: Kazi
Sasa wacha tuangalie kazi kadhaa za picha ambazo maktaba zinaweza kutupatia.
1. ChoraPikseli
Kazi ya DrawPixel inawajibika kwa kuchora alama moja kwenye skrini kwa hatua iliyopewa.
batili DrawPixel (int16_t x, int16_t na, rangi ya uint16_t);
2. Chora Mstari
Kazi ya DrawLine inawajibika kwa kuchora mstari kutoka kwa alama mbili.
Utupu wa kutekaLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1, rangi ya uint16_t);
3. choraFastVLine
Kazi ya DrawFastVLine inawajibika kwa kuchora laini ya wima kutoka hatua na urefu.
utupu wa kutekaFastVLine (int16_t x, int16_t y, int16_t h, rangi ya uint16_t);
4. choraFastHLine
Kazi ya DrawFastHLine inawajibika kwa kuchora laini ya usawa kutoka kwa hatua na upana.
kuteka batiliFastHLine (int16_t x, int16_t y, int16_t w, uint16_t rangi);
5. choraTeka
Kazi ya DrawRect inawajibika kwa kuchora mstatili kwenye skrini, kupitisha alama ya asili, urefu na upana.
kuteka utupuRect (int16_t x, int16_t y, int16_t w, int16_t h, rangi ya uint16_t);
6. kujazaRect
Kazi ya kujazaRect ni sawa na kuteka, lakini mstatili utajazwa na rangi iliyopewa.
batili kujazaRect (int16_t x, int16_t y, int16_t w, int16_t h, rangi ya uint16_t);
7. ChoraRoundRect
Kazi ya kutekaRoundRect ni sawa na kutekaRect, lakini mstatili utakuwa na kingo zenye mviringo.
batili DrawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, rangi ya uint16_t);
8. kujazaRoundRect
Kazi ya kujazaRoundRect ni sawa na DrawRoundRect, lakini mstatili utajazwa na rangi iliyopewa.
utupu kujazaRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, rangi ya uint16_t);
9. chora Mstatili
Kazi ya kuteka ya Triangle inawajibika kwa kuchora pembetatu kwenye skrini, kupita hatua ya vipeo 3.
chora batili Triangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, rangi ya uint16_t);
10. kujazaTriangle
Kazi ya kujaza Triangle ni sawa na DrawTriangle, lakini pembetatu itajazwa na rangi iliyopewa.
utupu kujazaTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, rangi ya uint16_t);
11. Chora Mzunguko
Kazi ya DrawCircle inawajibika kwa kuchora duara kutoka kwa chanzo na eneo.
kuteka batili Mzunguko (int16_t x0, int16_t y0, int16_t r, rangi ya uint16_t);
12. jaza Mzunguko
Kazi ya kujazaCircle ni sawa na DrawCircle, lakini mduara utajazwa na rangi iliyopewa.
batili fillCircle (int16_t x0, int16_t y0, int16_t r, rangi ya uint16_t);
13. jaza Skrini
Kazi ya kujazaScreen inawajibika kwa kujaza skrini na rangi moja.
utupu wa kujazaScreen (rangi ya uint16_t);
14. kuwekaCursor
Kazi ya setCursor inawajibika kuweka mshale kwa kuandika kwa nukta fulani.
setCursor batili (int16_t x, int16_t y);
15. kuwekaTextColor
Kazi ya setTextColor inawajibika kwa kupeana rangi kwa maandishi ya kuandikwa. Tuna njia mbili za kuitumia:
batili setTextColor (uint16_t c); // huweka rangi ya uandishi tu bila kuweka setTextColor (uint16_t c, uint16_t bg); // weka rangi ya uandishi na rangi ya asili
16. kuwekaTextSize
Kazi ya setTextSize inawajibika kupeana saizi kwa maandishi ambayo yataandikwa.
batili setTextSize (uint8_t s);
17. kuwekaTextWrap
Kazi ya setTextWrap inawajibika kwa kuvunja mstari ikiwa inafikia kikomo cha skrini.
batili setTextWrap (boolean w);
18. kuwekaRotation
Kazi ya setRotation inawajibika kwa kuzunguka skrini (mazingira, picha).
kuweka batiliRotation (uint8_t r); // 0 (kiwango), 1, 2, 3
Hatua ya 5: Mfano
Tutaunda programu ambayo tutatumia rasilimali nyingi ambazo onyesho hutupatia.
Wacha tuandike kamba kadhaa kwa saizi tofauti, tengeneza takwimu tatu za kijiometri, na tuchukue hafla ya kugusa juu yao, kila wakati tunapogusa moja ya takwimu, tutakuwa na maoni ya jina la kielelezo chini yao tu.
Hatua ya 6: Maktaba
Kwanza hebu tufafanue maktaba ambayo tutatumia.
# pamoja na // respondável pela parte gráfica
#include // respondável por pegar os toques na tela
# pamoja na // comunicação com o onyesho
# pamoja na // comunicação com o onyesho
# pamoja na "math.h" // potencia ya calcium
Hatua ya 7: Inafafanua
Tutafafanua macros kadhaa kwa pini, na pia maadili muhimu ambayo tutatumia.
// Portas de leitura das coordenadas do touch # define YP A1 // Y + #fasili XM A2 // X- #fafanua YM 7 // Y- #fafanua 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) #fasili TS_MINX 130 #fasili TS_MINY 80 #fafanua TS_MAXX 900 #fafanua TS_MAXY 900 // tamanho dos textos #fasili TEXT_SIZE_L 3 #fasili TEXT_SIZE_M 2 #fasili TEXT_SIZE_S 1 // posicionamento dos textos de feedback #fasili FEEDBACK_LABEL_X 10 #fasili FEEDBACK_LABEL_Y 200 #fasili FEEDBACK_TOUCHOUX_Fichi_Kufanya_Kufanya_Kufanya_Kufanya mara 200 10 #fafanua MAFUNZO 1000
Tunaendelea na ufafanuzi wa baadhi ya macros.
// Associa o nome das cores aos valores correspondentes # define BLACK 0x0000 #fasili RED 0xF800 #define GREEN 0x07E0 #fefisha CYAN 0x07FF #define MANJANO 0xFFE0 #fasili WHITE 0xFFFF // dados de criação do circulo const circ Circus const circus const circule const Circle const 30; const int mduara_x = 240; const int mduara_y = 125; // objeto para manipulacao dos eventos de toque na tela TouchScreen ts = TouchScreen (XP, YP, XM, YM); // objeto para manipulacao da parte grafica SWTFT tft;
Hatua ya 8: Sanidi
Katika usanidi, tutaanzisha kitu chetu cha kudhibiti picha na kufanya usanidi wa kwanza.
kuanzisha batili () {Serial.begin (9600); // reseta o objeto da lib grafica tft.reset (); // inicializa objeto controlador da lib grafica tft.begin (); kuchelewesha (500); // rotaciona a tela para landscape tft.setRotation (1); // pinta a tela toda de preto tft.fillScreen (NYEUSI); // chama a função para iniciar nossas configurações initialSettings (); }
Hatua ya 9: Kitanzi
Katika kitanzi, tutachukua hatua ambayo tunagusa skrini, na tuone ikiwa mguso ulitokea katika moja ya takwimu.
kitanzi batili () {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 receiver o mapeamento de Y TSPoint p; p.x = ramani (touchPoint.y, TS_MINY, TS_MAXY, 0, 320); p.y = ramani (touchPoint.x, TS_MINX, TS_MAXX, 240, 0); // verifica se a pressão no toque foi suficiente if (touchPoint.z> MINPRESSURE && touchPoint.z <MAXPRESSURE) {// verifica se tocou no retangulo if (pointInRect (p)) {writeShape ("Rect"); } // verifica se tocou no triangulo nyingine ikiwa (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 ("Circle"); }}}
Hatua ya 10: Angalia ikiwa Tunagusa Mzunguko
Katika hatua hii tunashughulikia uanzishaji wa skrini na kufafanua rangi za matini zinazoonyeshwa.
/ * Desenha na tela os elementos * / void initialSettings () {tft.setTextColor (WHITE); tft.setTextSize (TEXT_SIZE_S); tft.println ("ACESSE"); tft.setTextColor (YELLOW); tft.setTextSize (TEXT_SIZE_M); tft.println ("MEU BLOG"); tft.setTextColor (KIJANI); tft.setTextSize (TEXT_SIZE_L); tft.println ("FERNANDOK. COM"); kuundaRect (); kuundaTriangle (); kuunda Mzunguko (); tft.setCursor (FEEDBACK_LABEL_X, FEEDBACK_LABEL_Y); tft.setTextColor (CYAN); tft.setTextSize (TEXT_SIZE_L); tft.println ("SURA:"); }
Hatua ya 11: Kazi za Kuunda Maumbo ya Kijiometri
Tunaunda mstatili, pembetatu, na duara na asili tunayoamua.
// cria um retangulo com origem (x, y) = (10, 100) // width = 80 e height = 50 void createRect () {tft.fillRect (10, 100, 80, 50, RED); tft.drawRect (10, 100, 80, 50, NYEUPE); } // cria um triangulo com os vertices: // A = (110, 150); B = (150, 100); C = (190, 150) batili ya kuundaTriangle () {tft.fillTriangle (110, 150, 150, 100, 190, 150, MANJANO); tft.draw Triangle (110, 150, 150, 100, 190, 150, NYEUPE); } // cria um circulo com origem no ponto (x, y) = (240, 125) e raio = 30 batili kuunda Mzunguko () {tft.fillCircle (240, 125, 30, KIJANI); tft.draw Mzunguko (240, 125, 30, NYEUPE); }
Hatua ya 12: Angalia Ikiwa Tunagusa Mstatili
Kazi hii huangalia ikiwa uhakika uko ndani ya mstatili.
// 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) {kurudi kweli; }} kurudi uwongo; }
Hatua ya 13: Angalia ikiwa Tunagusa Mzunguko
Hii ni sawa na mduara.
// 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 for menor ou igual ao raio, ele está dentro bool pointInCircle (TSPoint p) {umbali wa kuelea = sqrt (pow (px - circle_x, 2) + pow (py - circle_y, 2)); ikiwa (umbali <= circle_radius) {kurudi kweli; } kurudi uwongo; }
Hatua ya 14: Angalia Ikiwa Tunagusa Pembetatu
Cheki hiyo hiyo ya uhakika pia hufanyika ndani ya pembetatu.
// 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) {kuelea ABC = pembetatuArea (a, b, c); kuelea ACP = pembetatuArea (a, c, p); kuelea ABP = pembetatuArea (a, b, p); kuelea CPB = pembetatuArea (c, p, b); ikiwa (ABC == ACP + ABP + CPB) {kurudi kweli; } kurudi uwongo; } // Função que calcula a area de um triangulo com base nos pontos x, y float triangleArea (TSPoint a, TSPoint b, TSPoint c) {kurudisha vitambaa (((bx - ax) * (cy - ay) - (cx - shoka) * (na - ay)) / 2); }
Hatua ya 15: Kazi ya Kuchapisha jina la kitu kilichoguswa
Hapa tunaandika kwenye skrini jina la takwimu ya kijiometri ambayo hutumiwa.
// 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, NYEUSI); tft.setCursor (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y); tft.setTextSize (TEXT_SIZE_G); tft.setTextColor (NYEUPE); tft.println (sura); }
Hatua ya 16: Faili
Pakua faili:
INO
Ilipendekeza:
Skrini ya kugusa Macintosh - Mac ya kawaida na Mini ya IPad kwa Skrini: Hatua 5 (na Picha)
Skrini ya kugusa Macintosh | Mac ya kawaida na Mini iPad ya Screen: Hii ndio sasisho langu na muundo uliyorekebishwa juu ya jinsi ya kubadilisha skrini ya Macintosh ya mavuno na mini iPad. Hii ni moja ya 6 ya haya ambayo nimefanya kwa miaka mingi na ninafurahi sana na mageuzi na muundo wa hii! Nyuma mnamo 2013 wakati nilifanya
Zungusha Uonyesho wa Raspberry Pi na Skrini ya Kugusa: Hatua 4
Zungusha Uonyesho wa Raspberry Pi na Skrini ya Kugusa: Hii ni ya msingi inayoweza kufundishwa kukuonyesha jinsi ya kuzungusha onyesho na skrini ya kugusa kwa Pi yoyote ya Raspberry inayoendesha mfumo wa uendeshaji wa Buster Raspbian, lakini nimetumia njia hii tangu Jessie. Picha zilizotumiwa katika hii zinatoka kwa Raspberry Pi
ESP32 Codelock Pamoja na Skrini ya Kugusa: Hatua 5
ESP32 Codelock Pamoja na Skrini ya Kugusa: Watu wengi waliniuliza mfano rahisi sana wa nambari ya ArduiTouch ili kujaribu kazi yao na pia kama mwanzo wa maendeleo yao wenyewe. Msimbo huu rahisi sana utaonyesha kazi za msingi za Arduitouch bila kengele yoyote na filimbi
Ndege ya Arduino Flappy - Arduino 2.4 "Skrini ya kugusa TFT SPFD5408 Mradi wa Mchezo wa Ndege: Hatua 3
Ndege ya Arduino Flappy | Mradi wa Mchezo wa Ndege wa Arduino 2.4 "Mradi wa Mchezo wa Ndege wa SpFD5408: Ndege ya Flappy ilikuwa mchezo maarufu sana huko nyuma katika miaka michache na watu wengi waliiunda kwa njia yao wenyewe vile vile mimi, niliunda toleo langu la ndege flappy na Arduino na bei rahisi ya 2.4 " TFT Skrini ya kugusa SPFD5408, Basi wacha tuanze
Uonyesho wa Skrini ya Kugusa Arduino: Hatua 4
Onyesho la skrini ya kugusa ya Arduino: Halo! Leo, nitakuonyesha jinsi ya kutumia ngao ya skrini ya kugusa na Arduino Uno. Unaweza kuitumia kama onyesho ndogo kwa nukuu au picha au kila aina ya vitu vingine