Мазмуну:
- 1 -кадам: Сизге керектүү нерселер
- 2 -кадам: TFT Display китепканасын Arduino IDEге орнотуу
- 3 -кадам: Калькулятор кодун жүктөө
Video: Arduino TFT LCD сенсордук экрандын калкулятору: 3 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Салам балдар, бул көрсөтмөлөрдө биз 3.5 TFT LCD сенсордук экраны бар Arduino Uno менен кантип эсептегич жасоону үйрөнөбүз. Ошентип, биз код жазабыз жана дисплейде эсептегич интерфейсин көрсөтө турган arduinoго жүктөп беребиз жана тийүү функциясын алат. негизги математикалык туюнтмаларды бер.
1 -кадам: Сизге керектүү нерселер
Бул долбоор үчүн сизге төмөнкү нерселер керек болот: 3.5 TFT LCD DISPLAYARDUINO UNO
2 -кадам: 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 менен өзүңүздүн калькуляторуңузду ачып алыңыз.
Сунушталууда:
Bluetooth50g - сынган HP50G калкулятору үчүн Upcycle долбоору: 7 кадам
Bluetooth50g - HP50G сынган эсептегичтин Upcycle долбоору. Батарея агып кеткендиктен дисплейге өтүүчү жолдор бузулган. Калькулятор өзү үчүн иштейт, бирок натыйжалары экранда көрүнбөйт (вертикалдуу сызыктар гана). Система Bluetooth клавиатурасын эмуляциялайт жана
Arduino Flappy Bird - Arduino 2.4 "TFT сенсордук экраны SPFD5408 Bird Game Project: 3 кадам
Arduino Flappy Bird | Arduino 2.4 "TFT сенсордук экраны SPFD5408 Bird Game Project: Flappy Bird ал жерде бир нече жыл ичинде өтө популярдуу оюн болгон жана көптөгөн адамдар аны өз жолу менен жаратышкан, мен Arduino менен flappy куштун мина версиясын жана 2.4" TFT Сенсордук экран SPFD5408, Ошентип, баштайлы
Шоджи экрандын артында күйүүчү LEDлер: 5 кадам
Шоджи экранынын артында күйүүчү LEDлер: Өткөн жылы мен колдонулбаган ваннаны саунанын бөлмөсүнө айландырдым. Ваннада биздин үйдүн суу жылыткычы да бар болчу жана мен Amazonдан смоджи экраны сатып алгандыгымды жашыруу үчүн. Экрандын артында жылтылдаган шамдарды коюу жакшы көрүнөт деп ойлогом, бирок
Сублиминалдуу билдирүү менен жарыктандырылган сенсордук экрандын плакаты!: 16 кадам (сүрөттөр менен)
Subliminal Message менен жарыктандырылган сенсордук экрандын плакаты!: Think Geek биринчи жолу Serenity/Firefly жетеги менен жазылган " саякат " тобун жарыялагандан бери. плакаттар, мен өзүмдүн топтомум болушу керек экенин билчүмүн. Бир нече жума мурун мен аларды акыры алдым, бирок дилеммага туш болдум: аларды дубалга кантип орнотуу керек? Кантип кылуу
Кагаз резисторунун калкулятору: 8 кадам
Кагаз резисторунун калкулятору: Бул жерде картанын кагазынан жасай турган үч терүү менен кичинекей резистордук эсептегич. Бул версияда толеранттуулук тобу камтылган эмес, бирок эгерде кызыкдар болсо, мага сызык таштап, мен дизайнды өзгөртө алам