Sadržaj:

Arduino TFT LCD kalkulator zaslona osjetljivog na dodir: 3 koraka
Arduino TFT LCD kalkulator zaslona osjetljivog na dodir: 3 koraka

Video: Arduino TFT LCD kalkulator zaslona osjetljivog na dodir: 3 koraka

Video: Arduino TFT LCD kalkulator zaslona osjetljivog na dodir: 3 koraka
Video: TFT дисплей на ардуино 2024, Srpanj
Anonim
Arduino TFT LCD kalkulator osjetljiv na dodir
Arduino TFT LCD kalkulator osjetljiv na dodir

Bok dečki, u ovim uputama naučit ćemo kako napraviti kalkulator koristeći Arduino Uno sa 3,5 TFT LCD zaslonom osjetljivim na dodir. Dakle, napisat ćemo kôd i prenijeti ga na arduino koji će prikazati sučelje kalkulatora na zaslonu te će uzeti funkcije dodira i dati izlaz osnovnih matematičkih izraza.

Korak 1: Stvari koje trebate

Stvari koje trebate
Stvari koje trebate
Stvari koje trebate
Stvari koje trebate

Za ovaj projekt trebat će vam sljedeće: 3.5 TFT LCD DISPLAYARDUINO UNO

Korak 2: Instaliranje knjižnice TFT zaslona u Arduino IDE

Instaliranje knjižnice TFT zaslona u Arduino IDE
Instaliranje knjižnice TFT zaslona u Arduino IDE

Koristimo biblioteku SPFD5408:

kako bi ovaj kod arduino kalkulatora funkcionirao. Ovo je modificirana biblioteka Adafruit -a i može besprijekorno raditi s našim LCD TFT modulom. Za vas je vrlo važno instalirati ovu knjižnicu u svoj Arduino IDE ili ovaj program za kompajliranje bez ikakvih grešaka. Da biste instalirali ovu biblioteku, jednostavno kliknite gornju vezu koja će vas odvesti na stranicu Github. Tamo kliknite na kloniranje ili preuzimanje i odaberite "Preuzmi ZIP". Zip datoteka će se preuzeti. Sada otvorite Arduino IDE i odaberite Sketch -> Include Librarey -> Add. ZIP library. Otvorit će se prozor preglednika, dođite do ZIP datoteke i kliknite "U redu". Trebali biste primijetiti "Knjižnica dodana vašim knjižnicama" u donjem lijevom kutu Arduina.

Korak 3: Prenesite kôd kalkulatora

Prenesite kôd kalkulatora
Prenesite kôd kalkulatora
Prenesite kôd kalkulatora
Prenesite kôd kalkulatora

Nakon instaliranja knjižnice, spojite zaslon na Arduino i kopirajte sljedeći kôd te ga prenesite na Arduino./*_Import Libraries _*/#include "SPFD5408_Adafruit_GFX.h" // Core graphics library#include "SPFD5408_Adafruit_TFTLCD.h" // Specifično za hardver library#include "SPFD5408_TouchScreen.h"/*_ End of Libraries _*//*_ Definirajte LCD pinove (ja sam dodijelio zadane vrijednosti) _*/#definirajte YP A1 // mora biti analogni pin, koristite oznaku "An"! define XM A2 // mora biti analogni pin, koristiti oznaku "An"! #define YM 7 // može biti digitalni pin#definirati XP 6 // može biti digitalni pin#definirati LCD_CS A3#definirati LCD_CD A2#definirati LCD_WR A1#definirati LCD_RD A0#definirati LCD_RESET A4/*_ Kraj defankcija _*//*_ Dodijeliti imena bojama i pritisku _*/#definirati BIJELO 0x0000 // Crno-> Bijelo#definirati ŽUTO 0x001F // Plavo-> Žuto#definirati CYAN 0xF800 // Crveno-> Cijan#definiraj PINK 0x07E0 // Zeleno-> Ružičasto#definiraj CRVENO 0x07FF // Cijan-> Crveno#definiraj ZELENO 0xF81F // Ružičasto-> Zeleno#definiraj PLAVO 0xFFE0 // Žuto- > Plavo#definiraj CRNO 0xFFFF // Bijelo-> Crno#definiraj MINPRESSURE 10#definiraj MAXPRESSURE 1000/*_ Dodijeljeno _*//*_ Kalibriraj TFT LCD _*/#definiraj TS_MINX 125#definiraj TS_MINY 85#definiraj TS_MAXX 965#definiraj TS_MAXY 905* _ Kraj kalibracije _*/TouchScreen ts = Zaslon osjetljiv na dodir (XP, YP, XM, YM, 300); // 300 je osjetljivostAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Započni komunikaciju sa simbolom LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; dugo Num1, Num2, Broj; akcija char; boolean result = false; void setup () {Serial.begin (9600); // Koristi serijski monitor za ispravljanje pogrešaka tft.reset (); // Uvijek resetiraj pri pokretanju tft.begin (0x9341); // Moj LCD koristi IC upravljački program sučelja LIL9341 tft.setRotation (2); // Upravo sam se okrenuo tako da utičnica za napajanje gleda prema gore - opcionalno tft.fillScreen (BIJELO); IntroScreen (); draw_BoxNButtons (); } void loop () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serijski.ispis (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); delay (300);} TSPoint waitTouch () {TSPoint p; do {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } while ((p.z MAXPRESSURE)); p.x = karta (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = karta (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Otkrivanje gumba u stupcu 1 {if (Y> 0 && Y <85) // Ako se pritisne gumb Cancel {Serial.println ("Button Cancel"); Broj = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // Ako je pritisnuta tipka 1 {Serial.println ("tipka 1"); if (Broj == 0) Broj = 1; else Number = (Broj*10) + 1; // Dvaput pritisnut} if (Y> 140 && Y <192) // Ako je pritisnuta tipka 4 {Serial.println ("Tipka 4"); if (Broj == 0) Broj = 4; else Number = (Broj*10) + 4; // Dvaput pritisnut} if (Y> 192 && Y <245) // Ako je pritisnuta tipka 7 {Serial.println ("Tipka 7"); if (Broj == 0) Broj = 7; else Number = (Broj*10) + 7; // Dvaput pritisnut}} if (X50) // Otkrivanje gumba u stupcu 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Tipka 0 je pritisnuta ako (Broj == 0) Broj = 0; else Number = (Broj*10) + 0; // Dvaput pritisnuto} if (Y> 85 && Y <140) {Serial.println ("Gumb 2"); if (Broj == 0) Broj = 2; else Number = (Broj*10) + 2; // Dvaput pritisnuto} if (Y> 140 && Y <192) {Serial.println ("Button 5"); if (Broj == 0) Broj = 5; else Number = (Broj*10) + 5; // Pritisnuti twic} if (Y> 192 && Y <245) {Serial.println ("Gumb 8"); if (Broj == 0) Broj = 8; else Number = (Broj*10) + 8; // Pritisnuti twic}} if (X105) // Otkrivanje gumba u stupcu 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Broj; rezultat = istina; } if (Y> 85 && Y <140) {Serial.println ("Gumb 3"); if (Broj == 0) Broj = 3; else Number = (Broj*10) + 3; // Dvaput pritisnuto} if (Y> 140 && Y <192) {Serial.println ("Gumb 6"); if (Broj == 0) Broj = 6; else Number = (Broj*10) + 6; // Dvaput pritisnuto} if (Y> 192 && Y <245) {Serial.println ("Button 9"); if (Broj == 0) Broj = 9; else Number = (Broj*10) + 9; // Dvaput pritisnuto}} if (X165) // Otkrivanje gumba u stupcu 3 {Num1 = Number; Broj = 0; tft.setCursor (200, 20); tft.setTextColor (CRVENO); if (Y> 0 && Y <85) {Serial.println ("Dodatak"); akcija = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Oduzimanje"); akcija = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Množenje"); akcija = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); akcija = 4; tft.println ('/');} kašnjenje (300); }} void CalculateResult () {if (akcija == 1) Broj = Num1+Num2; if (akcija == 2) Broj = Num1-Num2; if (akcija == 3) Broj = Num1*Num2; if (akcija == 4) Broj = Num1/Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // očisti okvir rezultata tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (CRNO); tft.println (Broj); // ažuriranje nove vrijednosti} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (CRVENO); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("KALKULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (PLAVO); tft.println ("-Kružni sažetak"); delay (1800);} void draw_BoxNButtons () {// Nacrtaj okvir s rezultatima tft.fillRect (0, 0, 240, 80, CYAN); // Nacrtaj prvi stupac tft.fillRect (0, 260, 60, 60, CRVENO); tft.fillRect (0, 200, 60, 60, CRNO); tft.fillRect (0, 140, 60, 60, CRNO); tft.fillRect (0, 80, 60, 60, CRNO); // Nacrtaj treći stupac tft.fillRect (120, 260, 60, 60, ZELENO); tft.fillRect (120, 200, 60, 60, CRNO); tft.fillRect (120, 140, 60, 60, CRNO); tft.fillRect (120, 80, 60, 60, CRNO); // Nacrtajte drugi i četvrti stupac za (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, PLAVO); tft.fillRect (60, b, 60, 60, BLACK);} // Crtanje vodoravnih linija za (int h = 80; h <= 320; h+= 60) tft.drawFastHLine (0, h, 240, BIJELO); // Nacrtajte okomite crte za (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (v, 80, 240, BIJELO); // Prikaz oznaka tipkovnice za (int j = 0; j <4; j ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22+(60*i), 100+(60* j)); tft.setTextSize (3); tft.setTextColor (BIJELO); tft.println (simbol [j] ); }}} Nakon što učitate kôd, moći ćete vidjeti kako kalkulator radi na vašem zaslonu kao moj, a sada možete izvesti osnovne matematičke izračune o tome. Zato se zabavite izrađujući vlastiti kalkulator s Arduino UNO.

Preporučeni: