- Mga Materyal na Kinakailangan:
- Kilalanin ang TFT LCD Screen Module:
- Pag-calibrate sa TFT LCD Screen para sa Touch Screen:
- Mga Koneksyon sa TFT LCD na may Arduino:
- Pag-program ng iyong Arduino para sa TFT LCD:
- Nagtatrabaho:
Palaging nakakatulong ang Arduino upang makabuo ng mga proyekto nang madali at gawin silang mas kaakit-akit. Ang pagprograma ng isang LCD screen na may pagpipilian sa touch screen ay maaaring tunog bilang isang kumplikadong gawain, ngunit ang mga aklatan at kalasag ng Arduino ay talagang napadali. Sa proyektong ito gagamitin namin ang isang 2.4 "Arduino TFT LCD screen upang bumuo ng aming sariling calculator ng Arduino Touch Screen na maaaring gumanap ng lahat ng pangunahing mga kalkulasyon tulad ng Addition, Subtraction, Division at Multiplication.
Mga Materyal na Kinakailangan:
- Arduino Uno
- 2.4 "TFT LCD display Shield
- 9V Baterya.
Kilalanin ang TFT LCD Screen Module:
Bago talaga tayo sumisid sa proyekto mahalagang malaman, kung paano gumagana ang 2.4 "TFT LCD Module na ito at ano ang mga uri na naroroon dito. Tingnan natin ang mga pinout ng 2.4 "TFT LCD module module na ito.
Tulad ng nakikita mo mayroong 28 mga pin na perpektong magkasya sa anumang Arduino Uno / Arduino Mega Board. Ang isang maliit na pag-uuri ng mga pin na ito ay ibinibigay sa talahanayan sa ibaba.
Tulad ng nakikita mo ang mga pin ay maaaring maiuri sa apat na pangunahing pag-uuri tulad ng LCD Command Pins, LCD Data Pins, SD Card Pins at Power Pins, Hindi namin masyadong alam ang tungkol sa detalyadong pagtatrabaho ng mga pin na ito dahil sila ay mag-iingat ng aming Arduino Library.
Maaari ka ring makahanap ng isang puwang ng SD card sa ilalim ng module na ipinakita sa itaas, na maaaring magamit upang mai-load ang isang SD card na may mga file ng imahe ng bmp, at ang mga imaheng ito ay maaaring ipakita sa aming TFT LCD screen gamit ang Arduino Program.
Ang isa pang mahalagang bagay na dapat tandaan ay ang iyong Interface IC. Maraming uri ng mga module na TFT na magagamit sa merkado simula sa orihinal na module ng Adafruit TFT LCD hanggang sa murang mga clone ng Tsino. Ang isang programa na gumagana nang perpekto para sa iyong kalasag na Adafruit ay maaaring hindi gumana nang pareho para sa mga breakout board ng Tsino. Kaya, napakahalagang malaman kung aling mga uri ng pagpapakita ng LCD ang hawak mo. Ang detalyeng ito ay kailangang makuha mula sa vendor. Kung nagkakaroon ka ng isang murang clone tulad ng sa akin pagkatapos ito ay marahil ay gumagamit ng ili9341 driver IC. Maaari mong sundin ang pag-interfacing ng TFT LCD na ito sa Arduino tutorial upang subukan ang ilang pangunahing mga halimbawa ng programa at maging komportable sa LCD screen. Suriin din ang aming iba pang mga proyekto ng TFT LCD kasama ang Arduino dito:
- Paano Gumamit ng NeoPixel LED Strip na may Arduino at TFT LCD
- Kinokontrol ng Smart Phone ang Digital Code Lock gamit ang Arduino
Pag-calibrate sa TFT LCD Screen para sa Touch Screen:
Kung nagpaplano kang gamitin ang touch screen function ng iyong TFT LCD module, kailangan mong i-calibrate ito upang gumana ito nang maayos. Ang isang LCD screen na walang pagkakalibrate ay maaaring hindi gumana, halimbawa maaari kang hawakan sa isang lugar at ang TFT ay maaaring tumugon para sa isang pagpindot sa ibang lugar. Ang mga resulta sa pagkakalibrate ay hindi magiging pareho para sa lahat ng mga board at kaya't ikaw ay naiwan sa iyong sarili upang gawin ito.
Ang pinakamahusay na paraan upang i-calibrate ay ang paggamit ng halimbawa ng programa ng pagkakalibrate (kasama ang library) o gamitin ang serial monitor upang makita ang iyong error. Gayunpaman para sa proyektong ito dahil ang laki ng mga pindutan ay malaki ang pagkakalibrate ay hindi dapat maging isang malaking problema at ipapaliwanag ko rin kung paano mo mai-calibrate ang iyong screen sa ilalim ng seksyon ng programa sa ibaba.
Mga Koneksyon sa TFT LCD na may Arduino:
Ang 2.4 "TFT LCD screen ay isang perpektong Arduino Shield. Maaari mong direktang itulak ang LCD screen sa tuktok ng Arduino Uno at perpektong tumutugma ito sa mga pin at dumulas sa. Gayunpaman, bilang mga bagay sa kaligtasan takpan ang Programming terminal ng iyong Arduino UNO gamit ang isang maliit na insulation tape, kung sakali kung ang terminal ay makipag-ugnay sa iyong TFT LCD screen. Ang LCD na binuo sa UNO ay magmumukhang ganito sa ibaba.
Pag-program ng iyong Arduino para sa TFT LCD:
Gumagamit kami ng SPFD5408 Library upang magamit ang code ng calculator ng arduino na ito. Ito ay isang binagong aklatan ng Adafruit at maaaring gumana nang walang putol sa aming LCD TFT Module. Maaari mong suriin ang kumpletong programa sa pagtatapos ng Artikulo na ito.
Tandaan: Napakahalaga para sa iyo na mai-install ang library na ito sa iyong Arduino IDE o ang program na ito upang mag-ipon nang walang anumang error.
Upang mai-install ang library na ito, maaari mo lamang i-click ang link sa itaas na magdadala sa iyo sa isang pahina ng Github. Mayroong pag-click sa clone o pag-download at piliin ang "I-download ang ZIP". Isang zip file ang mai-download.
Ngayon, buksan ang Arduino IDE at piliin ang Sketch -> Isama ang librarey -> Magdagdag ng.ZIP library. Ang isang window ng browser ay magbubukas mag-navigate sa ZIP file at i-click ang "OK". Dapat mong mapansin ang "Library na idinagdag sa iyong Mga Aklatan" sa kaliwang sulok sa kaliwa ng Arduino, kung matagumpay. Ang isang detalyadong gabay na gawin ang pareho ay ibinibigay sa Interfacing Tutorial.
Ngayon, maaari mong gamitin ang code sa ibaba sa iyong Arduino IDE at i-upload ito sa iyong Arduino UNO para gumana ang Touch Screen Calculator. Sa karagdagang pagbaba, ipinaliwanag ko ang code sa maliliit na mga segment.
Kailangan namin ng tatlong mga silid-aklatan upang gumana ang program na ito; ang lahat ng tatlong mga aklatan na ito ay ibinigay sa ZIP file na na-download mo mula sa naibigay na link sa itaas. Isinama ko lamang ang mga ito sa code tulad ng ipinakita sa ibaba.
# isama
Tulad ng sinabi nang mas maaga kailangan naming i-calibrate ang LCD screen upang ito ay gumana tulad ng inaasahan, ngunit huwag mag-alala ang mga halagang ibinigay dito ay halos unibersal. Ang mga variable na TS_MINX, TS_MINY, TS_MAXX, at TS_MAXY ang nagpapasya sa pagkakalibrate ng Screen. Maaari kang maglaro sa paligid ng mga ito kung sa palagay mo ang pagkakalibrate ay hindi kasiya-siya.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Tulad ng alam natin na ang TFT LCD screen ay maaaring magpakita ng maraming mga kulay, lahat ng mga kulay na ito ay kailangang ipasok sa hex na halaga. Upang gawing mas nababasa ito ng tao, itinatalaga namin ang mga halagang ito sa isang variable tulad ng ipinakita sa ibaba.
#define WHITE 0x0000 // Black-> White #define YELLOW 0x001F // Blue-> Yellow #define CYAN 0xF800 // Red-> Cyan #define PINK 0x07E0 // Green-> Pink #define RED 0x07FF // Cyan -> Red #define GREEN 0xF81F // Pink -> Green #define BLUE 0xFFE0 // Yellow-> Blue #define BLACK 0xFFFF // White-> Black
Okay ngayon, makakapasok tayo sa bahagi ng programa. Mayroong tatlong mga seksyon na kasangkot sa program na ito. Ang isa ay lumilikha ng isang UI ng isang calculator na may mga pindutan at ipinapakita. Pagkatapos, ang pagtuklas ng mga pindutan batay sa mga ugnay ng mga gumagamit at sa wakas ay kinakalkula ang mga resulta at ipakita ang mga ito. Isa-isahin natin sila.
1. Lumilikha ng isang UI ng Calculator:
Dito mo magagamit ang maraming iyong pagkamalikhain upang idisenyo ang User Interface ng calculator. Ginawa ko lamang ang isang pangunahing layout ng isang calculator na may 16 Buttons at isang display unit. Kailangan mong buuin ang disenyo tulad ng pagguhit mo ng isang bagay sa pinturang MS. Papayagan ka ng idinagdag na mga silid-aklatan upang gumuhit ng mga Linya, Parihaba, Bilog, Chars, Mga string at higit pa sa anumang ginustong kulay. Maaari mong maunawaan ang mga magagamit na pag-andar mula sa artikulong ito.
Ginamit ko ang mga kakayahan sa pagguhit ng linya at kahon upang mag-disenyo ng isang UI na mukhang katulad sa calculator ng 90. Ang bawat kahon ay may lapad at taas na 60 pixel.
// Iguhit ang Result Box tft.fillRect (0, 0, 240, 80, CYAN); // Draw First Column tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, BLACK); tft.fillRect (0,140,60,60, BLACK); tft.fillRect (0,80,60,60, BLACK); // Iguhit ang Third Column tft.fillRect (120,260,60,60, GREEN); tft.fillRect (120,200,60,60, BLACK); tft.fillRect (120,140,60,60, BLACK); tft.fillRect (120,80,60,60, BLACK); // Draw Secound & Fourth Column for (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, BLACK);} // Gumuhit ng Mga Pahalang na Linya para sa (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Draw Vertical Lines for (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Ipakita ang mga label ng keypad para sa (int j = 0; j <4; j ++) {para (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * j)); tft.setTextSize (3); tft.setTextColor (PUTI); tft.println (simbolo);
2. Pagtuklas ng mga pindutan:
Ang isa pang mapaghamong gawain ay ang pagtuklas ng ugnayan ng gumagamit. Sa tuwing ang mga gumagamit ay hawakan sa isang lugar magagawa naming kung paano kung saan ang X at Y posisyon ng pixel na hinawakan niya. Ang halagang ito ay maaaring ipakita sa serial monitor gamit ang println tulad ng ipinakita sa ibaba.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Dahil dinisenyo namin ang kahon na may lapad at taas na 60 pixel bawat isa at may apat na Rows at para sa mga haligi na nagsisimula sa (0,0). Ang posisyon ng bawat kahon ay maaaring mahulaan tulad ng ipinakita sa larawan sa ibaba.
Ngunit sa praktikal na kaso, hindi ito ang magiging resulta. Magkakaroon ng isang malaking pagkakaiba sa pagitan ng inaasahan at aktwal na halaga, dahil sa problema sa pagkakalibrate.
Kaya, upang mahulaan ang eksaktong posisyon ng kahon, kailangan mong mag-click sa linya at suriin ang kaukulang posisyon nito sa serial monitor. Maaaring hindi ito pinaka-propesyonal na paraan ng paggawa nito, ngunit ito pa rin ang ganap na gumagana. Sinukat ko ang posisyon ng lahat ng mga linya at nakuha ang mga halagang nasa ibaba.
Ngayon, dahil alam namin ang posisyon ng lahat ng mga kahon. Kapag ang isang gumagamit ay hinawakan kahit saan maaari naming mahulaan kung saan niya hinawakan sa pamamagitan ng paghahambing ng kanyang (X, Y) na halaga sa halaga para sa bawat kahon tulad ng ipinakita sa ibaba.
kung (X <105 && X> 50) // Pagtuklas ng Mga Pindutan sa Hanay 2 {kung (Y> 0 && Y <85) {Serial.println ("Button 0"); // Button 0 ay Pinsala kung (Bilang == 0) Bilang = 0; iba pa Bilang = (Bilang * 10) + 0; // Pinindot ng dalawang beses} kung (Y> 85 && Y <140) {Serial.println ("Button 2"); kung (Bilang == 0) Bilang = 2; iba pa Bilang = (Bilang * 10) + 2; // Pinindot ng dalawang beses}
3. Pagpapakita ng Mga Numero at Pagkalkula ng Resulta:
Ang huling hakbang ay upang makalkula ang resulta at ipakita ang mga ito sa TFT LCD Screen. Ang calculator ng arduino na ito ay maaaring magsagawa ng operasyon na may 2 numero lamang. Ang dalawang numero na ito ay pinangalanan bilang variable na "Num1" at "Num2". Ang variable na "Bilang" ay nagbibigay at kumukuha ng halaga mula sa Num1 at Num2 at nagdadala din ng resulta.
Kapag pinindot ng isang paggamit ang isang pindutan, idinagdag ang isang digit sa numero. Kapag pinindot ang isa pang pindutan, ang nakaraang isang digit ay pinarami ng 10 at ang bagong numero ay idinagdag kasama nito. Halimbawa, kung pipindutin natin ang 8 at pagkatapos ay pindutin ang 5 at pagkatapos ay pindutin ang 7. Pagkatapos muna ang variable ay hahawak ng 8 pagkatapos (8 * 10) + 5 = 85 pagkatapos (85 * 10) +7 = 857. Kaya sa wakas ang variable ay magkakaroon ang halagang 857 kasama nito.
kung (Y> 192 && Y <245) {Serial.println ("Button 8"); kung (Bilang == 0) Bilang = 8; iba pa Bilang = (Bilang * 10) + 8; // Pinindot ulit}
Kapag nagsagawa kami ng anumang operasyon tulad ng pagdaragdag, kapag pinindot ng mga gumagamit ang pindutan ng pagdaragdag ang halaga mula sa Numero ay ililipat sa Num1 at pagkatapos ang Numero ay gagawing zero upang maging handa itong kunin ang input para sa pangalawang numero.
Kapag ang Pantay ay pinindot ang halaga sa Bilang ay ipapadala sa Num2 at pagkatapos ay ang kani-kanilang pagkalkula (sa pagdaragdag ng kasong ito) ay gagawin at ang resulta ay maiimbak muli sa variable na "Bilang".
Sa wakas ang halagang ito ay ipapakita sa LCD screen.
Nagtatrabaho:
Ang pagtatrabaho ng Arduino Touch Screen Calculator na ito ay simple. Kailangan mong i-upload ang ibinigay na code sa ibaba sa iyong Arduino at sunugin ito. Nakukuha mo ang calculator na ipinakita sa iyong LCD screen.
Ngayon, maaari kang magpasok ng anumang numero at maisagawa ang iyong mga kalkulasyon. Limitado ito sa dalawang operand at operator lamang sa ngayon. Ngunit, maaari mong sabunutan ang code upang magkaroon ito ng maraming pagpipilian.
Kailangan mong pindutin ang "C" upang i-clear ang halaga sa screen sa bawat oras pagkatapos magsagawa ng isang pagkalkula. Inaasahan kong naintindihan mo ang proyekto at nasiyahan sa pagbuo ng katulad na bagay. Kung mayroon kang anumang mga pagdududa huwag mag-atubiling i-post ang mga ito sa mga forum o sa seksyon ng komento sa ibaba. Magkita tayo sa susunod na may ibang kawili-wiling proyekto hanggang sa masayang computing !!
Suriin din ang Demonstration Video sa ibaba.