Orodha ya maudhui:

Calculator ya skrini ya kugusa Arduino TFT LCD: Hatua 3
Calculator ya skrini ya kugusa Arduino TFT LCD: Hatua 3

Video: Calculator ya skrini ya kugusa Arduino TFT LCD: Hatua 3

Video: Calculator ya skrini ya kugusa Arduino TFT LCD: Hatua 3
Video: SKR PRO V1.1 TFT35 V2 2024, Novemba
Anonim
Kikokotoo cha skrini ya kugusa ya Arduino TFT LCD
Kikokotoo cha skrini ya kugusa ya Arduino TFT LCD

Hi Guys katika masomo haya tutajifunza jinsi ya kutengeneza kikokotoo kwa kutumia Arduino Uno na onyesho la skrini ya kugusa ya 3.5 TFT LCD. Kwa hivyo tutaandika nambari na kuipakia kwa arduino ambayo itaonyesha kiolesura cha kikokotoo kwenye onyesho na itachukua utendaji wa kugusa na toa pato la maneno ya msingi ya hisabati.

Hatua ya 1: Vitu Unavyohitaji

Vitu Unavyohitaji
Vitu Unavyohitaji
Vitu Unavyohitaji
Vitu Unavyohitaji

Kwa mradi huu utahitaji mambo yafuatayo: 3.5 TFT LCD DISPLAYARDUINO UNO

Hatua ya 2: Kusanikisha Maktaba ya Maonyesho ya TFT katika Arduino IDE

Kufunga Maktaba ya Kuonyesha TFT katika Arduino IDE
Kufunga Maktaba ya Kuonyesha TFT katika Arduino IDE

Tunatumia Maktaba ya SPFD5408:

kupata msimbo huu wa kikokotoo cha arduino ukifanya kazi. Hii ni maktaba iliyobadilishwa ya Adafruit na inaweza kufanya kazi bila mshono na Moduli yetu ya LCD TFT. Ni muhimu kwako kusanikisha maktaba hii katika Arduino IDE yako au mpango huu kukusanya bila kosa lolote. Ili kusanikisha maktaba hii, unaweza kubofya tu kwenye kiunga hapo juu ambacho kitakupeleka kwenye ukurasa wa Github. Hapo bonyeza clone au pakua na uchague "Pakua ZIP". Faili ya zip itapakuliwa Sasa fungua Arduino IDE na uchague Mchoro -> Jumuisha Librarey -> Ongeza maktaba ya. ZIP. Dirisha la kivinjari litafungua nenda kwenye faili ya ZIP na bonyeza "OK". Unapaswa kugundua "Maktaba imeongezwa kwenye Maktaba yako" kwenye kona ya kushoto ya Arduino.

Hatua ya 3: Pakia Nambari ya Kikokotozi

Pakia Nambari ya Kikokotozi
Pakia Nambari ya Kikokotozi
Pakia Nambari ya Kikokotozi
Pakia Nambari ya Kikokotozi

Baada ya kusanikisha maktaba unganisha onyesho kwa Arduino na unakili nambari ifuatayo na uipakie kwa Arduino. maktaba # ni pamoja na "SPFD5408_TouchScreen.h" / * _ Mwisho wa Maktaba _ * // * _ Fafanua pini za LCD (nimetenga maadili ya msingi) _ * / # fafanua YP A1 // lazima iwe pini ya analogi, tumia noti "An"! # fafanua XM A2 // lazima iwe pini ya analogi, tumia "nukuu" #fafanua YM 7 // inaweza kuwa pini ya dijiti # fafanua XP 6 // inaweza kuwa pini ya dijiti # fafanua LCD_CS A3 # fafanua LCD_CD A2 # fafanua LCD_WR A1 # fafanua LCD_RD A0 # fafanua LCD_RESET A4 / * _ Mwisho wa defanitions _ * // * _ Toa majina kwa rangi na shinikizo _ * / # fafanua NYEUPE 0x0000 // Nyeusi-> Nyeupe # fafanua YELLOW 0x001F // Bluu-> Njano # fafanua CYAN 0xF800 // Nyekundu> Cyan # define PINK 0x07E0 // Kijani-> Pink # fafanua RED 0x07FF // Cyan -> Nyekundu # fafanua KIJANI 0xF81F // Pink -> Kijani #fafanua BLUE 0xFFE0 // Njano- > Bluu # fafanua WEUSI 0xFFFF // Nyeupe-> Nyeusi # fafanua UMASHARA 10 # fafanua MAXPRESSURE 1000 / * _ Iliyopewa _ * // * _ Suluhisha TFT LCD _ * / # fafanua TS_MINX 125 # fafanua TS_MINY 85 # fafanua TS_MAXX 965 # fafanua TS_MAXY 905 / * _ Mwisho wa Upimaji _ * / TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 ni unyetiAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Anzisha mawasiliano na ishara ya LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; muda mrefu Num1, Num2, Nambari; hatua ya char; matokeo ya boolean = uwongo; usanidi batili () {Serial.begin (9600); // Tumia mfuatiliaji wa serial kwa utatuzi wa tft.reset (); // Daima kuweka upya mwanzoni tft. Kuanza (0x9341); // LCD yangu hutumia dereva wa Interface LIL9341 IC tft.setRotation (2); // Niliweka tu ili jack ya nguvu iangalie juu - hiari tft.fillScreen (NYEUPE); IntroScreen (); chora_BoxNButtons (); } kitanzi batili () {TSPoint p = waitTouch (); X = p.y; Y = px; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); Tambua Vifungo (); kuchelewesha (300);} TSPoint waitTouch () {TSPoint p; fanya {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } wakati ((p.z MAXPRESSURE)); p.x = ramani (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = ramani (p.y, TS_MINY, TS_MAXY, 0, 240);; Return p;} batili DetectButtons () {if (X0) // Kugundua Vifungo kwenye Safu ya 1 {if (Y> 0 && Y <85) // If cancel Button is pressed {Serial.println ("Button Cancel"); Nambari = Num1 = Num2 = 0; matokeo = uongo; ikiwa (Nambari == 0) Nambari = 1; nambari nyingine = (Nambari * 10) + 1; // Imebanwa mara mbili} ikiwa (Y> 140 && Y <192) // Ikiwa Kitufe cha 4 kimeshinikizwa {Serial.println ("Button 4"); ikiwa (Nambari == 0) Nambari = 4; Nambari nyingine = (Nambari * 10) + 4; // Imebanwa mara mbili} ikiwa (Y> 192 && Y <245) // Ikiwa Kitufe cha 7 kimeshinikizwa {Serial.println ("Button 7"); ikiwa (Nambari == 0) Nambari = 7; nambari nyingine = (Nambari * 10) + 7; // Imebanwa mara mbili}} ikiwa (X50) // Kugundua Vifungo kwenye Safuwima 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Kitufe 0 kimesisitizwa ikiwa (Nambari == 0) Nambari = 0; Nambari nyingine = (Nambari * 10) + 0; // Imesisitizwa mara mbili} ikiwa (Y> 85 && Y <140) {Serial.println ("Button 2"); ikiwa (Nambari == 0) Nambari = 2; nambari nyingine = (Nambari * 10) + 2; // Imesisitizwa mara mbili} ikiwa (Y> 140 && Y <192) {Serial.println ("Button 5"); ikiwa (Nambari == 0) Nambari = 5; Nambari nyingine = (Nambari * 10) + 5; // Bonyeza twic} ikiwa (Y> 192 && Y <245) {Serial.println ("Button 8"); ikiwa (Nambari == 0) Nambari = 8; nambari nyingine = (Nambari * 10) + 8; // Bonyeza twic}} ikiwa (X105) // Kugundua Vifungo kwenye Safuwima 3 {if (Y> 0 && Y <85) {Serial.println ("Button Sawa"); Nambari2 = Nambari; matokeo = kweli; } ikiwa (Y> 85 && Y <140) {Serial.println ("Button 3"); ikiwa (Nambari == 0) Nambari = 3; Nambari nyingine = (Nambari * 10) + 3; // Imesisitizwa mara mbili} ikiwa (Y> 140 && Y <192) {Serial.println ("Button 6"); ikiwa (Nambari == 0) Nambari = 6; nambari nyingine = (Nambari * 10) + 6; // Imesisitizwa mara mbili} ikiwa (Y> 192 && Y <245) {Serial.println ("Button 9"); ikiwa (Nambari == 0) Nambari = 9; Nambari nyingine = (Nambari * 10) + 9; // Imebanwa mara mbili}} ikiwa (X165) // Kugundua Vifungo kwenye Safuwima ya 3 {Num1 = Idadi; Nambari = 0; tft.setCursor (200, 20); tft.setTextColor (RED); ikiwa (Y> 0 && Y <85) {Serial.println ("Nyongeza"); hatua = 1; tft.println ('+');} ikiwa (Y> 85 && Y <140) {Serial.println ("Ondoa"); hatua = 2; tft.println ('-');} ikiwa (Y> 140 && Y <192) {Serial.println ("Kuzidisha"); hatua = 3; tft.println ('*');} ikiwa (Y> 192 && Y <245) {Serial.println ("Devesion"); hatua = 4; tft.println ('/');} kuchelewa (300); }} batili CalculateResult () {if (action == 1) Number = Num1 + Num2; ikiwa (hatua == 2) Nambari = Num1-Num2; ikiwa (hatua == 3) Nambari = Num1 * Num2; ikiwa (hatua == 4) Nambari = Num1 / Num2; } batili DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // wazi sanduku la matokeo tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (NYEUSI); tft.println (Nambari); // sasisha thamani mpya} batili 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 ("- Mzunguko wa Mzunguko"); kuchelewesha (1800);} batili draw_BoxNButtons () {// Chora Sanduku la Matokeo tft.fillRect (0, 0, 240, 80, CYAN); // Chora safu ya kwanza tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, NYEUSI); tft.fillRect (0, 140, 60, 60, NYEUSI); tft.fillRect (0, 80, 60, 60, NYEUSI); // Chora safu ya tatu tft.fillRect (120, 260, 60, 60, KIJANI); tft.fillRect (120, 200, 60, 60, NYEUSI); tft.fillRect (120, 140, 60, 60, NYEUSI); tft.fillRect (120, 80, 60, 60, NYEUSI); // Chora safu ya nne na ya nne ya (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, NYEUSI);} // Chora Mistari Ulalo ya (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Chora Mistari Wima ya (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Onyesha lebo za keypad 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 (NYEUPE); tft.println (ishara [j] ); }}}} Baada ya kupakia nambari hiyo utaweza kuona kikokotoo kikiwa kwenye onyesho lako kama changu na sasa unaweza kufanya mahesabu ya msingi ya hesabu kwenye hii. Kwa hivyo furahiya kutengeneza kikokotoo chako na Arduino UNO.

Ilipendekeza: