Kazalo:

Arduino TFT LCD kalkulator zaslona na dotik: 3 koraki
Arduino TFT LCD kalkulator zaslona na dotik: 3 koraki

Video: Arduino TFT LCD kalkulator zaslona na dotik: 3 koraki

Video: Arduino TFT LCD kalkulator zaslona na dotik: 3 koraki
Video: SKR 1.3 - TFT35 V3 RepRap Discount Full Graphic Smart Controller Mode (1 of 3) 2024, November
Anonim
Arduino TFT LCD kalkulator na zaslonu na dotik
Arduino TFT LCD kalkulator na zaslonu na dotik

Pozdravljeni fantje, v teh navodilih se bomo naučili, kako narediti kalkulator z uporabo Arduino Uno s 3,5 -palčnim zaslonom na dotik TFT LCD. Zato bomo napisali kodo in jo naložili v arduino, ki bo prikazal vmesnik kalkulatorja na zaslonu in prevzel funkcionalnost dotika in podaj osnovne matematične izraze.

Korak: Stvari, ki jih potrebujete

Stvari, ki jih potrebujete
Stvari, ki jih potrebujete
Stvari, ki jih potrebujete
Stvari, ki jih potrebujete

Za ta projekt boste potrebovali naslednje: 3,5 -palčni TFT LCD DISPLAYARDUINO UNO

2. korak: Namestitev knjižnice TFT Display v Arduino IDE

Namestitev knjižnice TFT Display v Arduino IDE
Namestitev knjižnice TFT Display v Arduino IDE

Uporabljamo knjižnico SPFD5408:

da ta koda kalkulatorja arduino deluje. To je spremenjena knjižnica Adafruit in lahko brezhibno deluje z našim LCD TFT modulom. Za vas je zelo pomembno, da to knjižnico namestite v svoj Arduino IDE ali ta program za sestavo brez napak. Če želite namestiti to knjižnico, preprosto kliknite zgornjo povezavo, ki vas pripelje na stran Github. Tam kliknite na kloniranje ali prenos in izberite »Prenesi ZIP«. Naložena bo datoteka zip. Zdaj odprite Arduino IDE in izberite Sketch -> Include Librarey -> Add. ZIP library. Odpre se okno brskalnika, pomaknite se do datoteke ZIP in kliknite »V redu«. V spodnjem levem kotu Arduina bi morali opaziti »Knjižnica dodana v vaše knjižnice«.

3. korak: Naložite kodo kalkulatorja

Naložite kodo kalkulatorja
Naložite kodo kalkulatorja
Naložite kodo kalkulatorja
Naložite kodo kalkulatorja

Po namestitvi knjižnice povežite zaslon z Arduinom in kopirajte naslednjo kodo ter jo naložite v Arduino./*_Import Libraries _*/#include "SPFD5408_Adafruit_GFX.h" // Core graphics library#include "SPFD5408_Adafruit_TFTLCD.h" // Hardware specific library#include "SPFD5408_TouchScreen.h"/*_ Konec knjižnic _*//*_ Določite zatiče LCD (dodelil sem privzete vrednosti) _*/#določite YP A1 // mora biti analogni pin, uporabite zapis "An"! define XM A2 // mora biti analogni pin, uporabite zapis "An"! #define YM 7 // je lahko digitalni pin#define XP 6 // je lahko digitalni pin#define LCD_CS A3#definiraj LCD_CD A2#določi LCD_WR A1#definiraj LCD_RD A0#določi LCD_RESET A4/*_ Konec defenzij _*//*_ Dodelite imena barvam in pritisku _*/#določite BELO 0x0000 // Črno-> Belo#definirajte RUMENO 0x001F // Modro-> Rumeno#določite CYAN 0xF800 // Rdeča-> Cyan#definiraj PINK 0x07E0 // Green-> Pink#define RED 0x07FF // Cyan-> Red#define GREEN 0xF81F // Pink-> Green #define BLUE 0xFFE0 // Yellow- > Modra#definiraj ČRNA 0xFFFF // Bela-> Črna#določi MINPRESSURE 10#definiraj MAXPRESSURE 1000/*_ Dodeljena _*//*_ Umerjanje TFT LCD _*/#definiraj TS_MINX 125#določi TS_MINY 85#določi TS_MAXX 965#določi TS_MAXY 905* _ Konec umerjanja _*/Zaslon na dotik ts = Zaslon na dotik (XP, YP, XM, YM, 300); // 300 je občutljivostAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Začni komunikacijo s simbolom LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; dolga Num1, Num2, Število; akcija char; logični rezultat = false; void setup () {Serial.begin (9600); // Uporabite serijski monitor za odpravljanje napak tft.reset (); // Vedno ponastavi ob zagonu tft.begin (0x9341); // Moj LCD uporablja gonilnik vmesnika LIL9341 IC tft.setRotation (2); // Pravkar sem se vrtel tako, da je vtičnica obrnjena navzgor - izbirno tft.fillScreen (BELO); IntroScreen (); draw_BoxNButtons (); } void loop () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serijski.tisk (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 = zemljevid (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = zemljevid (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Zaznavanje gumbov v stolpcu 1 {if (Y> 0 && Y <85) // Če pritisnete gumb za preklic {Serial.println ("Button Cancel"); Število = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // Če pritisnete gumb 1 {Serial.println ("gumb 1"); če (Število == 0) Število = 1; else Število = (Število*10) + 1; // Dvakrat pritisnjen} if (Y> 140 && Y <192) // Če pritisnete gumb 4 {Serial.println ("Gumb 4"); če (Število == 0) Število = 4; else Število = (Število*10) + 4; // Dvakrat pritisnjen} if (Y> 192 && Y <245) // Če pritisnemo gumb 7 {Serial.println ("Gumb 7"); če (Število == 0) Število = 7; else Število = (Število*10) + 7; // Dvakrat pritisnjen}} if (X50) // Zaznavanje gumbov v stolpcu 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Gumb 0 pritisnemo, če (Število == 0) Število = 0; else Število = (Število*10) + 0; // Dvakrat pritisnjen} if (Y> 85 && Y <140) {Serial.println ("Button 2"); če (Število == 0) Število = 2; else Število = (Število*10) + 2; // Dvakrat pritisnjen} if (Y> 140 && Y <192) {Serial.println ("Button 5"); če (Število == 0) Število = 5; else Število = (Število*10) + 5; // stisnjen twic} if (Y> 192 && Y <245) {Serial.println ("Gumb 8"); če (Število == 0) Število = 8; else Število = (Število*10) + 8; // stisnjen twic}} if (X105) // Zaznavanje gumbov v stolpcu 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Število; rezultat = res; } if (Y> 85 && Y <140) {Serial.println ("Gumb 3"); če (Število == 0) Število = 3; else Število = (Število*10) + 3; // Dvakrat pritisnjen} if (Y> 140 && Y <192) {Serial.println ("Gumb 6"); če (Število == 0) Število = 6; else Število = (Število*10) + 6; // Dvakrat pritisnjen} if (Y> 192 && Y <245) {Serial.println ("Button 9"); če (Število == 0) Število = 9; else Število = (Število*10) + 9; // Dvakrat pritisnjen}} if (X165) // Zaznavanje gumbov v stolpcu 3 {Num1 = Number; Število = 0; tft.setCursor (200, 20); tft.setTextColor (RDEČA); if (Y> 0 && Y <85) {Serial.println ("Dodatek"); dejanje = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Odštevanje"); dejanje = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Množenje"); dejanje = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); dejanje = 4; tft.println ('/');} zakasnitev (300); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; if (dejanje == 2) Število = Num1-Num2; if (dejanje == 3) Število = Num1*Num2; if (dejanje == 4) Število = Num1/Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // počisti polje z rezultati tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (ČRNO); tft.println (Število); // posodobi novo vrednost} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (RDEČA); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("KALKULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (MODRA); tft.println ("-Krožni povzetek"); delay (1800);} void draw_BoxNButtons () {// Nariši polje z rezultati tft.fillRect (0, 0, 240, 80, CYAN); // Nariši prvi stolpec tft.fillRect (0, 260, 60, 60, RDEČA); tft.fillRect (0, 200, 60, 60, ČRNO); tft.fillRect (0, 140, 60, 60, ČRNO); tft.fillRect (0, 80, 60, 60, ČRNO); // Nariši tretji stolpec tft.fillRect (120, 260, 60, 60, ZELENO); tft.fillRect (120, 200, 60, 60, ČRNO); tft.fillRect (120, 140, 60, 60, ČRNO); tft.fillRect (120, 80, 60, 60, ČRNO); // Nariši drugi in četrti stolpec za (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} // Nariši vodoravne črte za (int h = 80; h <= 320; h+= 60) tft.drawFastHLine (0, h, 240, BELO); // Nariši navpične črte za (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (v, 80, 240, BELO); // Prikaz oznak 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 (BELO); tft.println (simbol [j] ); }}} Ko naložite kodo, boste lahko videli, da je kalkulator na vašem zaslonu prikazan kot moj, zdaj pa lahko za to izvedete osnovne matematične izračune. Zato se zabavajte pri izdelavi svojega kalkulatorja z Arduino UNO.

Priporočena: