Мазмуну:

Arduino TFT LCD сенсордук экрандын калкулятору: 3 кадам
Arduino TFT LCD сенсордук экрандын калкулятору: 3 кадам

Video: Arduino TFT LCD сенсордук экрандын калкулятору: 3 кадам

Video: Arduino TFT LCD сенсордук экрандын калкулятору: 3 кадам
Video: MKS Gen L - TFT 28 LCD Сенсорный экран 2024, Ноябрь
Anonim
Arduino TFT LCD сенсордук экрандын калкулятору
Arduino TFT LCD сенсордук экрандын калкулятору

Салам балдар, бул көрсөтмөлөрдө биз 3.5 TFT LCD сенсордук экраны бар Arduino Uno менен кантип эсептегич жасоону үйрөнөбүз. Ошентип, биз код жазабыз жана дисплейде эсептегич интерфейсин көрсөтө турган arduinoго жүктөп беребиз жана тийүү функциясын алат. негизги математикалык туюнтмаларды бер.

1 -кадам: Сизге керектүү нерселер

Сиз керек
Сиз керек
Сиз керек
Сиз керек

Бул долбоор үчүн сизге төмөнкү нерселер керек болот: 3.5 TFT LCD DISPLAYARDUINO UNO

2 -кадам: TFT Display китепканасын Arduino IDEге орнотуу

TFT Display китепканасын Arduino IDEге орнотуу
TFT Display китепканасын Arduino IDEге орнотуу

Биз SPFD5408 китепканасын колдонуп жатабыз:

Бул arduino эсептегич кодун иштетүү үчүн. Бул Adafruitтин өзгөртүлгөн китепканасы жана биздин LCD TFT модулубуз менен үзгүлтүксүз иштей алат. Бул китепкананы Arduino IDEге же бул программаны катасыз орнотуу үчүн бул китепкананы орнотуу абдан маанилүү. Бул китепкананы орнотуу үчүн, сиз жөн гана Github бетине алып бара турган жогорудагы шилтемени чыкылдата аласыз. Ал жерде клонду же жүктөөнү чыкылдатып, "ZIPти жүктөө" дегенди тандаңыз. Zip файлы жүктөлүп алынат. Эми Arduino IDE ачыңыз жана Эскиз -> Китепкананы кошуу -> ZIP китепканасын кошууну тандаңыз. Браузердин терезеси ачылат, ZIP файлына өтүңүз жана "OK" баскычын чыкылдатыңыз. Сиз Ардуинонун төмөнкү сол бурчунда "Китепканаларыңызга китепкана кошулганын" байкашыңыз керек.

3 -кадам: Калькулятор кодун жүктөө

Калькулятор кодун жүктөө
Калькулятор кодун жүктөө
Калькулятор кодун жүктөө
Калькулятор кодун жүктөө

Китепкананы орноткондон кийин, дисплейди Arduino менен туташтырып, төмөнкү кодду көчүрүп, Arduino'го жүктөңүз. китепкана#камтыйт "SPFD5408_TouchScreen.h"/*_ Китепканалардын аягы _*//*_ LCD казыктарын аныктаңыз (мен демейки маанилерди койдум) _*/#аныктоо YP A1 // аналогдук пин болушу керек, "An" белгисин колдонуңуз!# аныктоо XM A2 // аналогдук пин болушу керек, "An" белгисин колдонуңуз!#аныктоо YM 7 // санариптик пин болушу мүмкүн#XP 6нын аныкталышы мүмкүн // санариптик пин болушу мүмкүн#LCD_CS A3тын аныктоо#LCD_CD A2#аныктоо LCD_WR A1#аныктоо LCD_RD A0#аныктоо LCD_RESET A4/*_ Дефанциялардын аягы _*//*_ Түстөргө жана басымга ысымдарды ыйгаруу _*/#АКты аныктоо 0x0000 // Кара-> Ак#САРЫ 0x001F // Көк-> Сары#аныктоо CYAN 0xF800 // Red-> Cyan#PINK 0x07E0 аныктоо // Green-> Pink#аныктоо RED 0x07FF // Cyan-> Кызыл#аныктоо GREEN 0xF81F // Pink-> Green #define BLUE 0xFFE0 // Yellow- > Көк#аныктоо КАРА 0xFFFF // Ак-> Кара#аныктоо MINPRESSURE 10#аныктоо MAXPRESSURE 1000/*_ Дайындалган _*//*_ TFT LCDди калибрлөө _*/#аныктоо TS_MINX 125#аныктоо TS_MINY 85#аныктоо TS_MAXX 965#аныктоо TS_MAXX 965#аныктоо _ Калибрлөөнүн аягы _*/TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 - бул sensabilityAdafruit_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; узун Num1, Num2, Number; char action; логикалык натыйжа = false; void setup () {Serial.begin (9600); // tft.reset () мүчүлүштүктөрдү оңдоо үчүн сериялык мониторду колдонуңуз; // Ар дайым баштапкы абалга келтирүү tft.begin (0x9341); // Менин ЖК LIL9341 Interface драйверин IC tft.setRotation (2) колдонот; // Мен жөн эле кубаттуулуктун уячасы өйдө караганча ротация кылдым - кошумча tft.fillScreen (АК); IntroScreen (); draw_BoxNButtons (); } void loop () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); кечигүү (300);} TSPoint waitTouch () {TSPoint p; кыл {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } while ((p.z MAXPRESSURE)); p.x = карта (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = карта (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // 1 -графанын баскычтарын аныктоо {if (Y> 0 && Y <85) // Эгерде жокко чыгаруу баскычы басылса {Serial.println ("Button Cancel"); Number = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // If Button 1 pressed {Serial.println ("Button 1"); if (Number == 0) Number = 1; else саны = (саны*10) + 1; // Эки жолу басылды} if (Y> 140 && Y <192) // If Button 4 is pressed {Serial.println ("Button 4"); if (Number == 0) Number = 4; else саны = (саны*10) + 4; // Эки жолу басылды} if (Y> 192 && Y <245) // If Button 7 is pressed {Serial.println ("Button 7"); if (Number == 0) Number = 7; else саны = (саны*10) + 7; // Эки жолу басылды}} if (X50) // 2 -графанын баскычтарын аныктоо {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // 0 баскычы басылат, эгерде (Сан == 0) Сан = 0; else саны = (саны*10) + 0; // эки жолу басылды} if (Y> 85 && Y <140) {Serial.println ("Button 2"); if (Number == 0) Number = 2; else саны = (саны*10) + 2; // Эки жолу басылды} if (Y> 140 && Y <192) {Serial.println ("Button 5"); if (Number == 0) Number = 5; else саны = (саны*10) + 5; // Басылган twic} if (Y> 192 && Y <245) {Serial.println ("Button 8"); if (Number == 0) Number = 8; else саны = (саны*10) + 8; // Басылган twic}} if (X105) // 3 -графанын баскычтарын аныктоо {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Number; натыйжа = чындык; } if (Y> 85 && Y <140) {Serial.println ("Button 3"); if (Number == 0) Number = 3; else саны = (саны*10) + 3; // Эки жолу басылды} if (Y> 140 && Y <192) {Serial.println ("Button 6"); if (Number == 0) Number = 6; else саны = (саны*10) + 6; // Эки жолу басылды} if (Y> 192 && Y <245) {Serial.println ("Button 9"); if (Number == 0) Number = 9; else саны = (саны*10) + 9; // Эки жолу басылды}} if (X165) // 3 -графада баскычтарды аныктоо {Num1 = Сан; Number = 0; tft.setCursor (200, 20); tft.setTextColor (RED); if (Y> 0 && Y <85) {Serial.println ("Кошуу"); иш = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Subtraction"); иш = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Көбөйтүү"); иш = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); иш = 4; tft.println ('/');} кечигүү (300); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; if (action == 2) Number = Num1-Num2; if (action == 3) Number = Num1*Num2; if (action == 4) Number = Num1/Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // таза жыйынтык кутусу tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (КАРА); tft.println (саны); // жаңы маанини жаңыртуу} void 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 (КӨК); tft.println ("-Circut Digest"); delay (1800);} void 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, GREEN); tft.fillRect (120, 200, 60, 60, КАРА); tft.fillRect (120, 140, 60, 60, КАРА); tft.fillRect (120, 80, 60, 60, КАРА); // Secound & Төртүнчү Колонканы тартуу (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} // Horizontal Lines Draw for (int h = 80; h <= 320; h+= 60) tft.drawFastHLine (0, h, 240, WHITE); // Тик сызыктарды чийүү (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (v, 80, 240, WHITE); // (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 менен өзүңүздүн калькуляторуңузду ачып алыңыз.

Сунушталууда: