ዝርዝር ሁኔታ:

አርዱዲኖ TFT ኤልሲዲ የማያንካ ስሌት: 3 ደረጃዎች
አርዱዲኖ TFT ኤልሲዲ የማያንካ ስሌት: 3 ደረጃዎች

ቪዲዮ: አርዱዲኖ TFT ኤልሲዲ የማያንካ ስሌት: 3 ደረጃዎች

ቪዲዮ: አርዱዲኖ TFT ኤልሲዲ የማያንካ ስሌት: 3 ደረጃዎች
ቪዲዮ: SKR 1.4 - Connecting any BTT Touch Screen Display to SKR 1.3/1.4 2024, ህዳር
Anonim
አርዱዲኖ TFT ኤልሲዲ የንክኪ ማያ ካልኩሌተር
አርዱዲኖ TFT ኤልሲዲ የንክኪ ማያ ካልኩሌተር

ሠላም በዚህ አስተማሪዎች ውስጥ አርዱዲኖ ኡኖን በ 3.5 TFT LCD Touchscreen ማሳያ በመጠቀም እንዴት ካልኩሌተር መስራት እንደሚቻል እንማራለን። ስለዚህ ኮድ እንጽፋለን እና በማሳያው ላይ የካልኩሌተር በይነገጽን የሚያሳየው እና የንክኪ ተግባርን የሚወስድ እና ወደ አርዱዲኖ እንሰቅላለን። መሠረታዊ የሂሳብ መግለጫዎችን ውጤት ይስጡ።

ደረጃ 1: የሚያስፈልጉዎት ነገሮች

የሚያስፈልጉዎት ነገሮች
የሚያስፈልጉዎት ነገሮች
የሚያስፈልጉዎት ነገሮች
የሚያስፈልጉዎት ነገሮች

ለዚህ ፕሮጀክት የሚከተሉትን ነገሮች ያስፈልግዎታል - 3.5 TFT LCD DISPLAYARDUINO UNO

ደረጃ 2 በአርዲኖ አይዲኢ ውስጥ የ TFT ማሳያ ቤተ -መጽሐፍት መጫን

በአርዱዲኖ አይዲኢ ውስጥ የ TFT ማሳያ ቤተ -መጽሐፍት መጫን
በአርዱዲኖ አይዲኢ ውስጥ የ TFT ማሳያ ቤተ -መጽሐፍት መጫን

የ SPFD5408 ቤተ -መጽሐፍትን እየተጠቀምን ነው

ይህ የአሩዲኖ ካልኩሌተር ኮድ እንዲሠራ። ይህ የተሻሻለ የአዳፍ ፍሬዝ ቤተ -መጽሐፍት ነው እና በእኛ LCD TFT ሞዱል ያለችግር መስራት ይችላል። ይህንን ቤተመፃህፍት በአርዱዲኖ አይዲኢ ውስጥ ወይም ያለ ምንም ስህተት ለማጠናቀር ይህንን ፕሮግራም መጫን ለእርስዎ በጣም አስፈላጊ ነው። ይህንን ቤተ -መጽሐፍት ለመጫን በቀላሉ ወደ Github ገጽ የሚወስደውን ከላይ ያለውን አገናኝ ጠቅ ማድረግ ይችላሉ። እዚያ ክሎኔን ጠቅ ያድርጉ ወይም ያውርዱ እና “ዚፕ ያውርዱ” ን ይምረጡ። የዚፕ ፋይል ይወርዳል። አሁን ፣ Arduino IDE ን ይክፈቱ እና Sketch -> Librarey ያካትቱ ->. ZIP ቤተ -መጽሐፍት ያክሉ። ወደ ዚፕ ፋይል ይሂዱ እና የአሳሹ መስኮት ይከፈታል እና “እሺ” ን ጠቅ ያድርጉ። በአርዱዲኖ ታች-ግራ ጥግ ላይ “ቤተ-መጽሐፍት ወደ ቤተ-መጽሐፍትዎ ታክሏል” የሚለውን ማስተዋል አለብዎት።

ደረጃ 3: የሂሳብ ማሽን ኮድ ይስቀሉ

የሂሳብ ማሽን ኮድ ይስቀሉ
የሂሳብ ማሽን ኮድ ይስቀሉ
የሂሳብ ማሽን ኮድ ይስቀሉ
የሂሳብ ማሽን ኮድ ይስቀሉ

ቤተ-መጽሐፍቱን ከጫኑ በኋላ ማሳያውን ከአርዱዲኖ ጋር ያገናኙት እና የሚከተለውን ኮድ ይቅዱ እና ወደ አርዱዲኖ ይስቀሉት። ቤተ -መጽሐፍት#“SPFD5408_TouchScreen.h”/*_ የቤተመጻሕፍት መጨረሻ _*//*_ ኤልሲዲ ፒኖችን ይግለጹ (ነባሪ እሴቶችን አስመድቤያለሁ) _*//YP A1 // የአናሎግ ፒን መሆን አለበት ፣ “አን” የሚለውን ምልክት ይጠቀሙ!# ኤክስኤም ኤ 2 // ይግለጹ የአናሎግ ፒን መሆን አለበት ፣ ‹‹›› ን ተጠቀም! A1#LCD_RD A0#ን ይገልፃል LCD_RESET A4/*_ የጥፋቶች መጨረሻ _*//*_ ስሞችን በቀለም እና ግፊት ይመድቡ _*//#WHITE 0x0000 // ብላክ-> ነጭን#ይግለጹ 0x001F // ሰማያዊ-> ቢጫ#CYAN 0x800 ን ይግለጹ // ቀይ-> ሲያን#PINK 0x07E0 ን ይግለጹ // አረንጓዴ-> ሮዝ#ቀይር 0x07FF // ሲያን-> ቀይ#ግሪን 0xF81F // ሮዝ-ሮዝ-> አረንጓዴ#ዲፊን ሰማያዊ 0xFFE0 // ቢጫ- > ሰማያዊ#ጥቁር/0xFFFF // ነጭ/ጥቁር-ጥቁር#መግለፅ MINPRESSURE 10#MAXPRESSURE ን 1000/*_ ተመድቧል _*//*_ መለካት TFT LCD _*//TS_MINX 125#TS_MINY 85#መግለፅ TS_MAXX 965#ይግለጹ TS_MAX _ የመለኪያ መጨረሻ _*/TouchScreen ts = TouchScreen (XP ፣ YP ፣ XM ፣ YM ፣ 300) ፤ // 300 የስሜት ህዋሱ ነው Adfruit_TFTLCD tft (LCD_CS ፣ LCD_CD ፣ LCD_WR ፣ LCD_RD ፣ LCD_RESET)። // በ LCDString ምልክት [4] [4] = {{"7" ፣ "8" ፣ "9" ፣ "/"} ፣ {"4" ፣ "5" ፣ "6" ፣ "*"}) ግንኙነትን ይጀምሩ, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X ፣ Y; ረጅም ቁጥር 1 ፣ ቁጥር 2 ፣ ቁጥር; የቻር እርምጃ; ቡሊያን ውጤት = ሐሰት ፣ ባዶነት ማዋቀር () {Serial.begin (9600); // tft.reset () ን ለማረም ተከታታይ ማሳያ ይጠቀሙ። // ሁል ጊዜ በጅምር ላይ ዳግም ያስጀምሩ tft.begin (0x9341); // የእኔ ኤልሲዲ LIL9341 በይነገጽ ሾፌር IC tft.setRotation (2) ይጠቀማል። // እኔ የኃይል መስቀያው ወደ ፊት እንዲመጣ እኔ ብቻዬን ዞርኩ - አማራጭ tft.fillScreen (WHITE); መግቢያ ማያ ገጽ (); draw_BoxNButtons (); } ባዶነት loop () {TSPoint p = waitTouch () ፤ X = p.y; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons () ፤ ከሆነ (ውጤት == እውነት) ካልኩሌተሪ (); መዘግየት (300);} TSPoint waitTouch () {TSPoint p; አድርግ {p = ts.getPoint (); pinMode (ኤክስኤም ፣ ውፅዓት); pinMode (YP ፣ ውፅዓት); } እያለ ((p.z MAXPRESSURE)); p.x = ካርታ (p.x ፣ TS_MINX ፣ TS_MAXX ፣ 0 ፣ 320); p.y = ካርታ (p.y ፣ TS_MINY ፣ TS_MAXY ፣ 0 ፣ 240);; ተመለስ p;} ባዶ DetectButtons () {ከሆነ (X0) // በአምድ 1 ላይ አዝራሮችን መለየት {if (Y> 0 && Y <85) // ከተሰረዘ አዝራሩ ተጭኗል {Serial.println («አዝራር ሰርዝ»); ቁጥር = Num1 = Num2 = 0; ውጤት = ሐሰት;} ከሆነ (Y> 85 && Y <140) // አዝራር 1 ከተጫነ {Serial.println ("አዝራር 1"); ከሆነ (ቁጥር == 0) ቁጥር = 1; ሌላ ቁጥር = (ቁጥር*10) + 1; // ሁለት ጊዜ ተጭኖ ከሆነ (Y> 140 && Y <192) // አዝራር 4 ከተጫነ {Serial.println ("አዝራር 4"); ከሆነ (ቁጥር == 0) ቁጥር = 4; ሌላ ቁጥር = (ቁጥር*10) + 4; // ሁለት ጊዜ ተጭኖ ከሆነ (Y> 192 && Y <245) // አዝራር 7 ከተጫነ {Serial.println ("አዝራር 7"); ከሆነ (ቁጥር == 0) ቁጥር = 7; ሌላ ቁጥር = (ቁጥር*10) + 7; // ሁለት ጊዜ ተጭኗል}} ከሆነ (X50) // በአምድ 2 ላይ አዝራሮችን መለየት {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // አዝራር 0 ተጭኖ ከሆነ (ቁጥር == 0) ቁጥር = 0; ሌላ ቁጥር = (ቁጥር*10) + 0; // ሁለት ጊዜ ተጭኖ ከሆነ (Y> 85 && Y <140) {Serial.println ("አዝራር 2"); ከሆነ (ቁጥር == 0) ቁጥር = 2; ሌላ ቁጥር = (ቁጥር*10) + 2; // ሁለት ጊዜ ተጭኖ ከሆነ (Y> 140 && Y <192) {Serial.println ("አዝራር 5"); ከሆነ (ቁጥር == 0) ቁጥር = 5; ሌላ ቁጥር = (ቁጥር*10) + 5; // ተጭኗል twic} ከሆነ (Y> 192 && Y <245) {Serial.println ("አዝራር 8"); ከሆነ (ቁጥር == 0) ቁጥር = 8; ሌላ ቁጥር = (ቁጥር*10) + 8; // ተጭኗል twic}} ከሆነ (X105) // በአምድ 3 ላይ አዝራሮችን መለየት {ከሆነ (Y> 0 && Y <85) {Serial.println (“የአዝራር እኩል”); Num2 = ቁጥር; ውጤት = እውነት; } ከሆነ (Y> 85 && Y <140) {Serial.println ("አዝራር 3"); ከሆነ (ቁጥር == 0) ቁጥር = 3; ሌላ ቁጥር = (ቁጥር*10) + 3; // ሁለት ጊዜ ተጭኖ ከሆነ (Y> 140 && Y <192) {Serial.println ("አዝራር 6"); ከሆነ (ቁጥር == 0) ቁጥር = 6; ሌላ ቁጥር = (ቁጥር*10) + 6; // ሁለት ጊዜ ተጭኖ ከሆነ (Y> 192 && Y <245) {Serial.println ("አዝራር 9"); ከሆነ (ቁጥር == 0) ቁጥር = 9; ሌላ ቁጥር = (ቁጥር*10) + 9; // ሁለት ጊዜ ተጭኗል}} ከሆነ (X165) // በአምድ 3 ላይ አዝራሮችን መለየት {Num1 = ቁጥር; ቁጥር = 0; tft.setCursor (200 ፣ 20); tft.setTextColor (RED); ከሆነ (Y> 0 && Y <85) {Serial.println ("መደመር"); ድርጊት = 1; tft.println ('+');} ከሆነ (Y> 85 && Y <140) {Serial.println ("መቀነስ"); ድርጊት = 2; tft.println ('-');} ከሆነ (Y> 140 && Y <192) {Serial.println ("ማባዛት"); ድርጊት = 3; tft.println ('*');} ከሆነ (Y> 192 && Y <245) {Serial.println ("Devesion"); ድርጊት = 4; tft.println ('/');} መዘግየት (300); }} ባዶ CalculateResult () {ከሆነ (እርምጃ == 1) ቁጥር = Num1+Num2; ከሆነ (እርምጃ == 2) ቁጥር = Num1-Num2; ከሆነ (እርምጃ == 3) ቁጥር = Num1*Num2; ከሆነ (እርምጃ == 4) ቁጥር = Num1/Num2; } ባዶ DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // ግልጽ የውጤት ሳጥን tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (ጥቁር); tft.println (ቁጥር); // አዲስ እሴት ያዘምኑ} ባዶ IntroScreen () {tft.setCursor (55 ፣ 120) ፤ tft.setTextSize (3); tft.setTextColor (RED); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("CALCULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (BLUE); tft.println ("-Circut Digest"); መዘግየት (1800) ፤} ባዶ ባዶ draw_BoxNButtons () {// የውጤት ሳጥኑን ይሳሉ tft.fillRect (0 ፣ 0 ፣ 240 ፣ 80 ፣ CYAN) ፤ // የመጀመሪያውን ዓምድ tft.fillRect (0 ፣ 260 ፣ 60 ፣ 60 ፣ RED) ይሳሉ ፤ tft.fillRect (0 ፣ 200 ፣ 60 ፣ 60 ፣ ጥቁር); tft.fillRect (0 ፣ 140 ፣ 60 ፣ 60 ፣ ጥቁር); tft.fillRect (0 ፣ 80 ፣ 60 ፣ 60 ፣ ጥቁር); // ሦስተኛ ዓምድ tft.fillRect (120 ፣ 260 ፣ 60 ፣ 60 ፣ አረንጓዴ) ይሳሉ። tft.fillRect (120 ፣ 200 ፣ 60 ፣ 60 ፣ ጥቁር); tft.fillRect (120 ፣ 140 ፣ 60 ፣ 60 ፣ ጥቁር); tft.fillRect (120 ፣ 80 ፣ 60 ፣ 60 ፣ ጥቁር); // ሴኮንድ እና አራተኛ ዓምድ ለ (int b = 260; b> = 80; b- = 60) {tft.fillRect (180 ፣ ለ ፣ 60 ፣ 60 ፣ BLUE); tft. // ለ (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (ቁ ፣ 80 ፣ 240 ፣ ነጭ) ቀጥ ያሉ መስመሮችን ይሳሉ ፤ // የቁልፍ ሰሌዳ መሰየሚያዎችን ለ (int j = 0; j <4; j ++) {ለ (int i = 0; i <4; i ++) {tft.setCursor (22+(60*i) ፣ 100+(60*) j)); tft.setTextSize (3); tft.setTextColor (ነጭ); tft.println (ምልክት [j] ); }}} ኮዱን ከሰቀሉ በኋላ በማሳያዎ ውስጥ የሚሰራውን ካልኩሌተር እንደኔ ማየት ይችላሉ እና አሁን በዚህ ላይ መሰረታዊ የሂሳብ ስሌቶችን ማከናወን ይችላሉ። ስለዚህ ከ Arduino UNO ጋር የራስዎን ካልኩሌተር በመስራት ይደሰቱ።

የሚመከር: