Sadržaj:

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

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

Video: Arduino TFT LCD kalkulator ekrana osjetljivog na dodir: 3 koraka
Video: Объяснение прошивки Marlin 2.0.x 2024, Novembar
Anonim
Arduino TFT LCD kalkulator osjetljiv na dodir
Arduino TFT LCD kalkulator osjetljiv na dodir

Zdravo dečki, u ovim uputama naučit ćemo kako napraviti kalkulator pomoću Arduino Uno sa 3,5 TFT LCD ekranom osjetljivim na dodir. Zato ćemo napisati kôd i prenijeti ga na arduino koji će prikazati sučelje kalkulatora na ekranu i preuzeti 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 projekat trebat će vam sljedeće: 3.5 TFT LCD DISPLAYARDUINO UNO

Korak 2: Instaliranje TFT Display Library u Arduino IDE

Instaliranje TFT Display Library u Arduino IDE
Instaliranje TFT Display Library u Arduino IDE

Koristimo biblioteku SPFD5408:

kako bi ovaj kod arduino kalkulatora funkcionirao. Ovo je modifikovana biblioteka Adafruit -a i može besprekorno raditi sa našim LCD TFT modulom. Za vas je vrlo važno da instalirate ovu biblioteku u svoj Arduino IDE ili ovaj program za kompajliranje bez greške. 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 "Biblioteka je dodana vašim bibliotekama" u donjem lijevom kutu Arduina.

Korak 3: Otpremite kôd kalkulatora

Otpremite kôd kalkulatora
Otpremite kôd kalkulatora
Otpremite kôd kalkulatora
Otpremite kôd kalkulatora

Nakon instaliranja biblioteke, 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"/*_ Kraj biblioteka _*//*_ 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#define 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 = TouchScreen (XP, YP, XM, YM, 300); // 300 je osjetljivostAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Započni komunikaciju sa LCDString simbolom [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; long Num1, Num2, Broj; char action; boolean result = false; void setup () {Serial.begin (9600); // Koristi serijski monitor za otklanjanje grešaka tft.reset (); // Uvijek resetiraj pri pokretanju tft.begin (0x9341); // Moj LCD koristi LIL9341 upravljački program sučelja IC 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.print (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 = mapa (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = mapa (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Otkrivanje dugmadi u stupcu 1 {if (Y> 0 && Y <85) // Ako se pritisne dugme Cancel {Serial.println ("Button Cancel"); Broj = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // Ako je pritisnuto dugme 1 {Serial.println ("dugme 1"); if (Broj == 0) Broj = 1; else Number = (Broj*10) + 1; // dvaput pritisnuto} if (Y> 140 && Y <192) // Ako je pritisnuto dugme 4 {Serial.println ("dugme 4"); if (Broj == 0) Broj = 4; else Number = (Broj*10) + 4; // dvaput pritisnuto} if (Y> 192 && Y <245) // Ako je pritisnuto dugme 7 {Serial.println ("dugme 7"); if (Broj == 0) Broj = 7; else Number = (Broj*10) + 7; // Dvaput pritisnuto}} if (X50) // Otkrivanje dugmadi 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 ("Button 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 ("Button 8"); if (Broj == 0) Broj = 8; else Number = (Broj*10) + 8; // Pritisnuti twic}} if (X105) // Otkrivanje dugmadi u koloni 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Broj; rezultat = istina; } if (Y> 85 && Y <140) {Serial.println ("Dugme 3"); if (Broj == 0) Broj = 3; else Number = (Broj*10) + 3; // Dvaput pritisnuto} if (Y> 140 && Y <192) {Serial.println ("Dugme 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 dugmadi 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 ("-Circular Digest"); delay (1800);} void draw_BoxNButtons () {// Nacrtaj okvir rezultata tft.fillRect (0, 0, 240, 80, CYAN); // Crtanje prve kolone tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, CRNO); tft.fillRect (0, 140, 60, 60, CRNO); tft.fillRect (0, 80, 60, 60, CRNO); // Crtanje treće kolone 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 drugu i četvrtu kolonu 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); // Crtanje okomitih linija za (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (v, 80, 240, BIJELO); // Prikaz oznaka tastature za (int j = 0; j <4; j ++) {za (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 učitavanja koda moći ćete vidjeti kako kalkulator radi na vašem ekranu kao moj, a sada možete izvršiti osnovne matematičke proračune o tome. Zato se zabavite izrađujući vlastiti kalkulator s Arduino UNO.

Preporučuje se: