INHOUDSOPGAWE:

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

Video: Arduino TFT LCD -raakskermrekenaar: 3 stappe

Video: Arduino TFT LCD -raakskermrekenaar: 3 stappe
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Julie
Anonim
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: