- Необходими материали:
- Запознаване с TFT LCD екранния модул:
- Калибриране на TFT LCD екрана за сензорен екран:
- TFT LCD връзки с Arduino:
- Програмиране на вашия Arduino за TFT LCD:
- Работа:
Arduino винаги е помагал за лесното изграждане на проекти и да ги направи да изглеждат по-привлекателни. Програмирането на LCD екран с опция за сензорен екран може да звучи като сложна задача, но библиотеките и щитовете на Arduino са го направили наистина лесно. В този проект ще използваме 2,4 ”Arduino TFT LCD екран, за да изградим собствен калкулатор Arduino Touch Screen, който може да извършва всички основни изчисления като събиране, изваждане, деление и умножение.
Необходими материали:
- Arduino Uno
- 2,4 ”TFT LCD дисплей Щит
- 9V батерия.
Запознаване с TFT LCD екранния модул:
Преди да се впуснем в проекта е важно да знаем как работи този 2,4-инчов TFT LCD модул и какви са видовете в него. Нека да разгледаме пиновете на този 2.4 ”TFT LCD екранен модул.
Както можете да видите, има 28 щифта, които перфектно се вписват във всяка Arduino Uno / Arduino Mega Board. В таблицата по-долу е дадена малка класификация на тези щифтове.
Както можете да видите, щифтовете могат да бъдат класифицирани в четири основни класификации, като LCD командни щифтове, LCD щифтове за данни, щифтове за SD карти и захранващи щифтове, Ние не трябва да знаем много за детайлната работа на тези щифтове, тъй като те ще се погрижат от нашата библиотека Arduino.
Можете също така да намерите слот за SD карта в долната част на модула, показан по-горе, който може да се използва за зареждане на SD карта с bmp файлове с изображения и тези изображения могат да бъдат показани в нашия TFT LCD екран с помощта на програмата Arduino.
Друго важно нещо, което трябва да се отбележи, е вашата интерфейсна интегрална схема. На пазара се предлагат много видове TFT модули, започвайки от оригиналния TFT LCD модул Adafruit до евтини китайски клонинги. Програма, която работи идеално за вашия щит Adafruit, може да не работи по същия начин за китайските дъски за разбиване. Така че е много важно да знаете кои типове LCD дисплеи държите в ръка. Тази подробност трябва да бъде получена от продавача. Ако имате евтин клон като моя, най-вероятно той използва IC9 на драйвера ili9341. Можете да следвате тази TFT LCD връзка с урок Arduino, за да изпробвате някои основни примерни програми и да се почувствате комфортно с LCD екрана. Вижте и другите ни TFT LCD проекти с Arduino тук:
- Как да използваме NeoPixel LED лента с Arduino и TFT LCD
- Заключване на цифров код с контролиран от смарт телефон с помощта на Arduino
Калибриране на TFT LCD екрана за сензорен екран:
Ако планирате да използвате функцията за сензорен екран на вашия TFT LCD модул, трябва да го калибрирате, за да работи правилно. LCD екран без калибриране може да работи малко вероятно, например можете да докоснете на едно място и TFT да реагира за докосване на друго място. Резултатите от тези калибрирания няма да бъдат сходни за всички дъски и следователно ще останете сами да направите това.
Най-добрият начин за калибриране е да използвате примерната програма за калибриране (идва с библиотека) или да използвате серийния монитор, за да откриете вашата грешка. Въпреки това за този проект, тъй като размерът на бутоните е голям, калибрирането не би трябвало да е голям проблем и аз също ще обясня как можете да калибрирате екрана си в раздела за програмиране по-долу.
TFT LCD връзки с Arduino:
2,4-инчовият TFT LCD екран е перфектният Arduino Shield. Можете директно да натиснете LCD екрана върху Arduino Uno и той ще съвпадне перфектно с щифтовете и ще се плъзне. По отношение на безопасността обаче покрийте терминала за програмиране на вашия Arduino UNO с малка изолационна лента, за всеки случай, ако терминалът влезе в контакт с вашия TFT LCD екран. LCD, сглобен на UNO, ще изглежда по-долу по следния начин.
Програмиране на вашия Arduino за TFT LCD:
Използваме библиотеката SPFD5408, за да работи този код на калкулатора на arduino. Това е модифицирана библиотека на Adafruit и може да работи безпроблемно с нашия LCD TFT модул. Можете да проверите пълната програма в края на тази статия.
Забележка: Много е важно за вас да инсталирате тази библиотека във вашата Arduino IDE или тази програма, за да компилирате без никаква грешка.
За да инсталирате тази библиотека, можете просто да кликнете върху връзката по-горе, която ще ви отведе до страница на Github. Там кликнете върху клониране или изтегляне и изберете „Изтегляне на ZIP“. Ще бъде изтеглен zip файл.
Сега отворете Arduino IDE и изберете Скица -> Включване на Librarey -> Добавяне на.ZIP библиотека. Ще се отвори прозорец на браузъра, отидете до ZIP файла и щракнете върху „OK“. Трябва да забележите „Библиотека, добавена към вашите библиотеки“ в долния ляв ъгъл на Arduino, ако успее. Подробно ръководство за това е дадено в Инструкцията за взаимодействие.
Сега можете да използвате кода по-долу във вашата ID на Arduino и да го качите на вашия Arduino UNO, за да работи калкулаторът на сензорния екран. По-нататък обясних кода на малки сегменти.
Имаме нужда от три библиотеки, за да работи тази програма; всички тези три библиотеки са дадени в ZIP файла, който сте изтеглили от предоставената по-горе връзка. Просто ги включих в кода, както е показано по-долу.
#include
Както казахме по-рано, трябва да калибрираме LCD екрана, за да работи така, както се очаква, но не се притеснявайте, стойностите, дадени тук, са почти универсални. Променливите TS_MINX, TS_MINY, TS_MAXX и TS_MAXY решават калибрирането на екрана. Можете да играете около тях, ако смятате, че калибрирането не е задоволително.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Тъй като знаем, че TFT LCD екранът може да показва много цветове, всички тези цветове трябва да бъдат въведени в шестнадесетична стойност. За да го направим по-разбираем за човека, ние присвояваме тези стойности на променлива, както е показано по-долу.
#define БЯЛ 0x0000 // Черен-> Бял #define ЖЪЛТ 0x001F // Син-> Жълт #define CYAN 0xF800 // Червен-> Циан #define PINK 0x07E0 // Зелен-> Розов #define ЧЕРВЕН 0x07FF // Син -> Червен #define GREEN 0xF81F // Розов -> Зелен #define BLUE 0xFFE0 // Жълт-> Син #define BLACK 0xFFFF // Бял-> Черен
Добре сега, можем да влезем в частта за програмиране. В тази програма участват три раздела. Единият е създаването на потребителски интерфейс на калкулатор с бутони и дисплей. След това, откривайки бутоните въз основа на докосването на потребителите и накрая изчислявайки резултатите и ги показва. Нека преминем през тях един по един.
1. Създаване на потребителски интерфейс на калкулатора:
Тук можете да използвате голяма част от творчеството си, за да проектирате потребителския интерфейс на калкулатора. Просто направих основно оформление на калкулатор с 16 бутона и един дисплей. Трябва да конструирате дизайна, точно както ще нарисувате нещо върху боята на MS. Добавените библиотеки ще ви позволят да рисувате линии, правоъгълник, кръгове, символи, низове и много повече от всеки предпочитан цвят. Можете да разберете наличните функции от тази статия.
Използвал съм способностите за чертане на линии и кутии, за да проектирам потребителски интерфейс, който изглежда много подобен на калкулатора от 90-те. Всяка кутия има ширина и височина от 60 пиксела.
// Начертайте полето за резултати tft.fillRect (0, 0, 240, 80, CYAN); // Теглене на първа колона tft.fillRect (0,260,60,60, ЧЕРВЕНО); 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, ЧЕРЕН); // Начертайте Secound & Четвърта колона за (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, ЧЕРНО);} // Начертайте хоризонтални линии за (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 ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * й)); tft.setTextSize (3); tft.setTextColor (БЯЛ); tft.println (символ);
2. Откриване на бутоните:
Друга предизвикателна задача е откриването на потребителското докосване. Всеки път, когато потребителят докосне някъде, ще можем да разберем къде е позицията X и Y на пиксела, който е докоснал. Тази стойност може да се покаже на серийния монитор с помощта на println, както е показано по-долу.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Тъй като сме проектирали кутията с ширина и височина по 60 пиксела и имаме четири реда и за колони, започващи от (0,0). Позицията на всяка кутия може да се предвиди, както е показано на снимката по-долу.
Но на практика това няма да е резултатът. Ще има голяма разлика между очакваната и действителната стойност поради проблема с калибрирането.
Така че, за да предскажете точната позиция на полето, трябва да щракнете върху реда и да проверите съответстващата му позиция на серийния монитор. Това може да не е най-професионалният начин да го направите, но все пак работи перфектно. Измерих позицията на всички линии и получих следните стойности.
Сега, тъй като знаем позицията на всички кутии. Когато потребителят докосне където и да е, можем да предскажем къде е докоснал, като сравним неговите (X, Y) стойности със стойността за всяко поле, както е показано по-долу.
if (X <105 && X> 50) // Откриване на бутони в колона 2 {if (Y> 0 && Y <85) {Serial.println ("Бутон 0"); // Бутон 0 е натиснат, ако (Number == 0) Number = 0; else Number = (Number * 10) + 0; // Притиснат два пъти} if (Y> 85 && Y <140) {Serial.println ("Бутон 2"); if (Number == 0) Number = 2; else Число = (Число * 10) + 2; // Притиснат два пъти}
3. Показване на числа и изчисляване на резултата:
Последната стъпка е да се изчисли резултатът и да се покажат на TFT LCD екран. Този калкулатор на arduino може да извършва операции само с 2 числа. Тези две числа са наречени като променливи „Num1“ и „Num2“. Променливата “Number” дава и приема стойност от Num1 и Num2 и също носи резултата.
Когато даден бутон натисне бутон, към цифрата се добавя една цифра. Когато се натисне друг бутон, предишната една цифра се умножава с 10 и с нея се добавя новото число. Например, ако натиснем 8 и след това натиснете 5 и след това натиснете 7. Тогава първо променливата ще държи 8, след това (8 * 10) + 5 = 85, след това (85 * 10) +7 = 857. Така че накрая променливата ще има стойността 857 с него.
ако (Y> 192 && Y <245) {Serial.println ("Бутон 8"); if (Number == 0) Number = 8; else Число = (Число * 10) + 8; // натиснат отново}
Когато изпълняваме каквато и да е операция като събиране, когато потребителите натиснат бутона за добавяне, стойността от Number ще бъде прехвърлена в Num1 и тогава Number ще бъде направена нула, така че да се приготви да вземе входа за второ число.
При натискане на Equal стойността в Number ще бъде изпратена до Num2 и след това ще бъде направено съответното изчисление (в този случай добавяне) и резултатът отново ще бъде съхранен в променливата “Number”.
Накрая тази стойност ще се покаже на LCD екрана.
Работа:
Работата с този Arduino Touch Screen Calculator е проста. Трябва да качите дадения по-долу код на вашия Arduino и да го запалите. Показвате калкулатора на вашия LCD екран.
Сега можете да въведете произволно число и да извършите изчисленията си. Засега е ограничено до само два операнда и единствен оператор. Но можете да промените кода, за да има много възможности.
Трябва да натиснете „C“, за да изчистите стойността на екрана всеки път след извършване на изчисление. Надявам се, че сте разбрали проекта и сте се радвали да изградите нещо подобно. Ако имате някакви съмнения, не се колебайте да ги публикувате във форуми или в раздела за коментари по-долу. Ще се видим следващия път с друг интересен проект до тогава щастливи компютри !!
Също така проверете демонстрационното видео по- долу.