Съдържание:
- Стъпка 1: Неща, от които се нуждаете
- Стъпка 2: Инсталиране на TFT Display Library в Arduino IDE
- Стъпка 3: Качете кода на калкулатора
Видео: Arduino TFT LCD Калкулатор със сензорен екран: 3 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Здравейте, момчета, в тази инструкция ще се научим как да правим калкулатор, използвайки Arduino Uno с 3.5 TFT LCD сензорен екран. Така че ще напишем код и ще го качим в arduino, който ще покаже интерфейса на калкулатора на дисплея и ще използва функционалността на докосване и дават изхода на основните математически изрази.
Стъпка 1: Неща, от които се нуждаете
За този проект ще ви трябват следните неща: 3.5 TFT LCD DISPLAYARDUINO UNO
Стъпка 2: Инсталиране на TFT Display Library в Arduino IDE
Използваме библиотеката SPFD5408:
за да работи този код на калкулатор arduino. Това е модифицирана библиотека на Adafruit и може да работи безпроблемно с нашия LCD TFT модул. За вас е много важно да инсталирате тази библиотека във вашата Arduino IDE или тази програма, за да компилирате без никакви грешки. За да инсталирате тази библиотека, можете просто да кликнете върху връзката по -горе, която ще ви отведе до страница на Github. Щракнете върху клониране или изтегляне и изберете „Изтегляне на ZIP“. Ще бъде изтеглен zip файл. Сега отворете Arduino IDE и изберете Sketch -> Include Librarey -> Add. ZIP library. Ще се отвори прозорец на браузър, отворете ZIP файла и кликнете върху „OK“. Трябва да забележите „Библиотека, добавена към вашите библиотеки“в долния ляв ъгъл на Arduino.
Стъпка 3: Качете кода на калкулатора
След като инсталирате библиотеката, свържете дисплея към Arduino и копирайте следния код и го качете в Arduino./*_Импортиране на библиотеки _*/#включва „SPFD5408_Adafruit_GFX.h“// Основна графична библиотека#включва „SPFD5408_Adafruit_TFTLCD.h“// Специфично за хардуера library#include "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 // Червено-> Циан#дефиниране PINK 0x07E0 // Зелено-> Розово#дефиниране на ЧЕРВЕНО 0x07FF // Синьо-> Червено#дефиниране на ЗЕЛЕНО 0xF81F // Розово-> Зелено#определено СИНЕ 0xFFE0 // Жълто- > Син#дефинира ЧЕРЕН 0xFFFF // Бял-> Черен#дефинира МИНПРЕСУР 10#дефинира МАКСИМАТУРА 1000/*_ Присвоява _*//*_ Калибрира TFT LCD _*/#дефинира TS_MINX 125#дефинира TS_MINY 85#дефинира TS_MAXX 965#дефинира TS_MAXY 905* _ Край на калибрирането _*/TouchScreen ts = Сензорен екран (XP, YP, XM, YM, 300); // 300 е чувствителносттаAdafruit_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, Номер; char действие; логически резултат = невярно; void setup () {Serial.begin (9600); // Използвайте сериен монитор за отстраняване на грешки в tft.reset (); // Винаги нулиране при стартиране tft.begin (0x9341); // Моят LCD използва LIL9341 интерфейсен драйвер 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; do {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"); Брой = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // Ако е натиснат Бутон 1 {Serial.println ("Бутон 1"); ако (Число == 0) Число = 1; else Number = (Number*10) + 1; // Натиснат два пъти} if (Y> 140 && Y <192) // Ако е натиснат Бутон 4 {Serial.println ("Бутон 4"); ако (Число == 0) Число = 4; else Number = (Number*10) + 4; // Натиснат два пъти} if (Y> 192 && Y <245) // Ако е натиснат Бутон 7 {Serial.println ("Бутон 7"); ако (Число == 0) Число = 7; else Number = (Number*10) + 7; // Натиснат два пъти}} if (X50) // Откриване на бутони в колона 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Бутон 0 се натиска, ако (Номер == 0) Номер = 0; else Number = (Number*10) + 0; // Натиснат два пъти} if (Y> 85 && Y <140) {Serial.println ("Бутон 2"); ако (Число == 0) Число = 2; else Number = (Number*10) + 2; // Натиснат два пъти} if (Y> 140 && Y <192) {Serial.println ("Button 5"); ако (Число == 0) Число = 5; else Number = (Number*10) + 5; // Натиснат twic} if (Y> 192 && Y <245) {Serial.println ("Бутон 8"); ако (Число == 0) Число = 8; else Number = (Number*10) + 8; // Натиснат twic}} if (X105) // Откриване на бутони в колона 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Номер; резултат = вярно; } if (Y> 85 && Y <140) {Serial.println ("Бутон 3"); ако (Число == 0) Число = 3; else Number = (Number*10) + 3; // Натиснат два пъти} if (Y> 140 && Y <192) {Serial.println ("Button 6"); ако (Число == 0) Число = 6; else Number = (Number*10) + 6; // Натиснат два пъти} if (Y> 192 && Y <245) {Serial.println ("Button 9"); ако (Число == 0) Число = 9; else Number = (Number*10) + 9; // Натиснат два пъти}} if (X165) // Откриване на бутони в колона 3 {Num1 = Number; Брой = 0; tft.setCursor (200, 20); tft.setTextColor (ЧЕРВЕНО); if (Y> 0 && Y <85) {Serial.println ("Добавяне"); действие = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Изваждане"); действие = 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; ако (действие == 2) Номер = Num1-Num2; if (действие == 3) Номер = Num1*Num2; if (действие == 4) Номер = 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 (ЧЕРВЕНО); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("КАЛКУЛАТОР"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (СИН); tft.println ("-Circut Digest"); забавяне (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, ЗЕЛЕН); 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, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} // Начертайте хоризонтални линии за (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, БЯЛ); // Показва етикетите на клавиатурата за (int j = 0; j <4; j ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22+(60*i), 100+(60* й)); tft.setTextSize (3); tft.setTextColor (БЯЛ); tft.println (символ [j] ); }}} След като качите кода, ще можете да видите калкулатора, който работи на дисплея ви като мой, и сега можете да извършвате основни математически изчисления по това. Затова се забавлявайте, като направите свой собствен калкулатор с Arduino UNO.
Препоръчано:
Визитна картичка със сензорен екран: 8 стъпки (със снимки)
Визитна картичка със сензорен екран: По степен съм машинен инженер, но също така съм развил умения по електротехника и програмиране от години проекти, включващи схеми и микроконтролери. Тъй като работодателите ще очакват, че имам умения по машинен инженер
Калкулатор на Arduino със сензорен екран: 7 стъпки
Калкулатор със сензорен екран на Arduino: Здравейте! Това е проект за създаване на калкулатор със сензорен екран, използващ Arduino Uno и TFT LCD щит. Измислих концепцията за моя клас по програмиране в домашни условия и опитът при изграждането на този проект беше много интересен. Този калкулатор може да
Везна за претегляне със сензорен екран (Arduino): 7 стъпки (със снимки)
Везна за претегляне със сензорен екран (Arduino): Искали ли сте някога да създадете везна за претегляне със сензорен екран? Никога не сте мислили за това? Добре прочетете и опитайте да създадете такъв … Знаете ли какво са TFT сензорен екран и клетка за зареждане? Ако отговорът е „Да“, преминете към стъпка 1, просто започнете с четене на Въведение. Въведение: Какво
Arduino Uno: Растрова анимация на ILI9341 TFT сензорен екран Щит на дисплея с Visuino: 12 стъпки (със снимки)
Arduino Uno: Анимация на растерни изображения на ILI9341 TFT сензорен екран с щит с Visuino: ILI9341 базиран на TFT сензорен дисплей с сензорен екран са много популярни нискоразходни екранни щитове за Arduino. Visuino има подкрепа за тях от доста време, но никога не съм имал възможност да напиша урок за това как да ги използвам. Наскоро обаче малко хора попитаха
Сензорен екран за семейна синхронизация и домашен контролен панел със сензорен екран: 7 стъпки (със снимки)
Сензорен сензорен панел за семейно синхронизиране и домашен контролен панел: Имаме календар, който се актуализира ежемесечно със събития, но се извършва ръчно. Ние също сме склонни да забравяме неща, които сме свършили или други дребни задължения. На тази възраст си мислех, че е много по -лесно да има синхронизиран календар и система от тип бележник, която да