Arduino TFT LCD -raakskermrekenaar: 3 stappe
Arduino TFT LCD -raakskermrekenaar: 3 stappe
Arduino TFT LCD raakskermrekenaar
Arduino TFT LCD raakskermrekenaar

Hallo ouens, in hierdie instruksies leer ons hoe om 'n sakrekenaar te maak met Arduino Uno met 'n 3,5 TFT LCD -raakskerm. gee die uitset van basiese wiskundige uitdrukkings.

Stap 1: Dinge wat u nodig het

Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het
Dinge wat jy nodig het

Vir hierdie projek benodig u die volgende: 3,5 TFT LCD DISPLAYARDUINO UNO

Stap 2: Installeer TFT -skermbiblioteek in Arduino IDE

Installeer TFT Display Library in Arduino IDE
Installeer TFT Display Library in Arduino IDE

Ons gebruik die SPFD5408 -biblioteek:

om hierdie arduino -sakrekenaarkode te laat werk. Dit is 'n aangepaste biblioteek van Adafruit en kan naatloos werk met ons LCD TFT -module. Dit is baie belangrik dat u hierdie biblioteek sonder enige fout installeer in u Arduino IDE of hierdie program om dit op te stel. Om hierdie biblioteek te installeer, kan u eenvoudig op die skakel hierbo klik, wat u na 'n Github -bladsy bring. Klik daar op kloon of laai af en kies "Download zip". 'N zip -lêer sal afgelaai word. Maak nou Arduino IDE oop en kies Sketch -> Include Librarey -> Add. ZIP library. In die blaaiervenster sal u na die zip -lêer gaan en op "OK" klik. U moet 'Biblioteek bygevoeg tot u biblioteke' in die onderste linkerhoek van Arduino sien.

Stap 3: Laai die sakrekenaarkode op

Laai die sakrekenaarkode op
Laai die sakrekenaarkode op
Laai die sakrekenaarkode op
Laai die sakrekenaarkode op

Nadat u die biblioteek geïnstalleer het, koppel die skerm aan met Arduino en kopieer die volgende kode en laai dit op na Arduino. biblioteek#sluit in "SPFD5408_TouchScreen.h"/*_ Einde van biblioteke _*//*_ Definieer LCD -penne (ek het die standaardwaardes toegeken) _*/#definieer YP A1 // moet 'n analoog pen wees, gebruik ''n' 'notasie!# definieer XM A2 // moet 'n analoog pen wees, gebruik 'An' notasie! #define YM 7 // kan 'n digitale pen wees#definieer XP 6 // kan 'n digitale pen wees#definieer LCD_CS A3#definieer LCD_CD A2#definieer LCD_WR A1#definieer LCD_RD A0#definieer LCD_RESET A4/*_ Einde van definisies _*//*_ Ken name toe aan kleure en druk _*/#definieer WIT 0x0000 // Swart-> Wit#definieer GEEL 0x001F // Blou-> Geel#definieer CYAN 0xF800 // Rooi-> Siaan#definieer ROOI 0x07E0 // Groen-> Pienk#definieer ROOI 0x07FF // Siaan-> Rooi#definieer GROEN 0xF81F // Pienk-> Groen #define BLOU 0xFFE0 // Geel- > Blou#definieer SWART 0xFFFF // Wit-> Swart#definieer MINPRESSURE 10#definieer MAXPRESSURE 1000/*_ Toegewys _*//*_ Kalibreer TFT LCD _*/#definieer TS_MINX 125#definieer TS_MINY 85#definieer TS_MAXX 965#definieer TS_MAXY 905/* _Einde van kalibrasie _*/TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 is die sensitiwiteitAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Begin kommunikasie met LCDString -simbool [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; lang Num1, Num2, Getal; char aksie; booleaanse resultaat = vals; ongeldige opstelling () {Serial.begin (9600); // Gebruik seriële monitor vir die ontfouting van tft.reset (); // Herstel altyd by die begin tft.begin (0x9341); // My LCD gebruik LIL9341 Interface driver IC tft.setRotation (2); // Ek het net so gegooi dat die kragaansluiting na bo wys - opsioneel tft.fillScreen (WHITE); IntroScreen (); draw_BoxNButtons (); } leemte -lus () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); vertraging (300);} TSPoint waitTouch () {TSPoint p; doen {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } terwyl ((p.z MAXPRESSURE)); p.x = kaart (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = kaart (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Detecting Buttons on Column 1 {if (Y> 0 && Y <85) // As die kansellasie -knoppie gedruk word {Serial.println ("Button Cancel"); Getal = Num1 = Num2 = 0; result = false;} as (Y> 85 && Y <140) // As knoppie 1 ingedruk word {Serial.println ("Button 1"); as (Getal == 0) Getal = 1; anders Getal = (Getal*10) + 1; // Twee keer ingedruk} as (Y> 140 && Y <192) // As knoppie 4 ingedruk word {Serial.println ("Knoppie 4"); as (Getal == 0) Getal = 4; anders Getal = (Getal*10) + 4; // Twee keer ingedruk} as (Y> 192 && Y <245) // As knoppie 7 ingedruk word {Serial.println ("Knoppie 7"); as (Getal == 0) Getal = 7; anders Getal = (Getal*10) + 7; // Twee keer ingedruk}} if (X50) // Knoppies opspoor in kolom 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Knoppie 0 word ingedruk as (Number == 0) Number = 0; anders Getal = (Getal*10) + 0; // Twee keer ingedruk} as (Y> 85 && Y <140) {Serial.println ("Knoppie 2"); as (Getal == 0) Getal = 2; anders Getal = (Getal*10) + 2; // Twee keer ingedruk} as (Y> 140 && Y <192) {Serial.println ("Knoppie 5"); as (Getal == 0) Getal = 5; anders Getal = (Getal*10) + 5; // Twee keer ingedruk as (Y> 192 && Y <245) {Serial.println ("Knoppie 8"); as (Getal == 0) Getal = 8; anders Getal = (Getal*10) + 8; // Twic gedruk}} if (X105) // Knoppies op kolom 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal") opspoor; Num2 = Getal; resultaat = waar; } if (Y> 85 && Y <140) {Serial.println ("Knoppie 3"); as (Getal == 0) Getal = 3; anders Getal = (Getal*10) + 3; // Twee keer ingedruk} as (Y> 140 && Y <192) {Serial.println ("Knoppie 6"); as (Getal == 0) Getal = 6; anders Getal = (Getal*10) + 6; // Twee keer ingedruk} as (Y> 192 && Y <245) {Serial.println ("Knoppie 9"); as (Getal == 0) Getal = 9; anders Getal = (Getal*10) + 9; // Twee keer ingedruk}} as (X165) // Knoppies op kolom 3 {Num1 = Number; Getal = 0; tft.setCursor (200, 20); tft.setTextColor (ROOI); as (Y> 0 && Y <85) {Serial.println ("Byvoeging"); aksie = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Aftrekking"); aksie = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Vermenigvuldiging"); aksie = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); aksie = 4; tft.println ('/');} vertraging (300); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; as (aksie == 2) Getal = Num1-Num2; as (aksie == 3) Getal = Num1*Num2; as (aksie == 4) Getal = Num1/Num2; } ongeldig DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // maak die kassie tft.setCursor skoon (10, 20); tft.setTextSize (4); tft.setTextColor (SWART); tft.println (nommer); // opdater nuwe waarde} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (ROOI); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("CALCULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (BLOU); tft.println ("-Circut Digest"); delay (1800);} void draw_BoxNButtons () {// Draw the Resultate Box tft.fillRect (0, 0, 240, 80, CYAN); // Teken eerste kolom tft.fillRect (0, 260, 60, 60, ROOI); tft.fillRect (0, 200, 60, 60, SWART); tft.fillRect (0, 140, 60, 60, SWART); tft.fillRect (0, 80, 60, 60, SWART); // Teken derde kolom tft.fillRect (120, 260, 60, 60, GROEN); tft.fillRect (120, 200, 60, 60, SWART); tft.fillRect (120, 140, 60, 60, SWART); tft.fillRect (120, 80, 60, 60, SWART); // Teken tweede en vierde kolom vir (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLOU); tft.fillRect (60, b, 60, 60, SWART);} // Teken horisontale lyne vir (int h = 80; h <= 320; h+= 60) tft.drawFastHLine (0, h, 240, WHITE); // Teken vertikale lyne vir (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (v, 80, 240, WHITE); // Wys die toetsbordblaaie vir (int j = 0; j <4; j ++) {vir (int i = 0; i <4; i ++) {tft.setCursor (22+(60*i), 100+(60* j)); tft.setTextSize (3); tft.setTextColor (WIT); tft.println (simbool [j] ); }}}} Nadat u die kode opgelaai het, kan u die sakrekenaar in my skerm sien werk, en nou kan u basiese wiskundige berekeninge hierop doen. Geniet dus u eie sakrekenaar met Arduino UNO.

Aanbeveel: