Оглавление:

Калькулятор сенсорного экрана Arduino TFT LCD: 3 шага
Калькулятор сенсорного экрана Arduino TFT LCD: 3 шага

Видео: Калькулятор сенсорного экрана Arduino TFT LCD: 3 шага

Видео: Калькулятор сенсорного экрана Arduino TFT LCD: 3 шага
Видео: Контроллер для ПВК на Adruino Mega с экраном 3.2" TFT LCD на ILI9341 2024, Ноябрь
Anonim
Калькулятор сенсорного экрана Arduino TFT LCD
Калькулятор сенсорного экрана Arduino TFT LCD

Привет, ребята, в этой инструкции мы узнаем, как сделать калькулятор с помощью Arduino Uno с 3,5-дюймовым сенсорным ЖК-дисплеем TFT. Итак, мы напишем код и загрузим его в Arduino, который отобразит интерфейс калькулятора на дисплее и будет использовать сенсорные функции и дать вывод основных математических выражений.

Шаг 1. Вещи, которые вам нужны

Вещи, которые нужно
Вещи, которые нужно
Вещи, которые нужно
Вещи, которые нужно

Для этого проекта вам понадобятся: 3.5 TFT LCD DISPLAYARDUINO UNO

Шаг 2: Установка библиотеки дисплея TFT в Arduino IDE

Установка библиотеки дисплея TFT в Arduino IDE
Установка библиотеки дисплея TFT в Arduino IDE

Мы используем библиотеку SPFD5408:

чтобы заставить этот код калькулятора Arduino работать. Это модифицированная библиотека Adafruit, которая может без проблем работать с нашим ЖК-модулем TFT. Для вас очень важно установить эту библиотеку в вашу среду разработки Arduino или эту программу для компиляции без каких-либо ошибок. Чтобы установить эту библиотеку, вы можете просто щелкнуть ссылку выше, которая приведет вас на страницу Github. Там нажмите клонировать или загрузить и выберите «Загрузить ZIP». Будет загружен zip-файл. Теперь откройте Arduino IDE и выберите Sketch -> Include Librarey -> Add. ZIP library. В открывшемся окне браузера перейдите к ZIP-файлу и нажмите «ОК». Вы должны заметить «Библиотека добавлена в ваши библиотеки» в нижнем левом углу Arduino.

Шаг 3. Загрузите код калькулятора

Загрузите код калькулятора
Загрузите код калькулятора
Загрузите код калькулятора
Загрузите код калькулятора

После установки библиотеки подключите дисплей к Arduino, скопируйте следующий код и загрузите его в Arduino./*_Импортные библиотеки _ * / # include "SPFD5408_Adafruit_GFX.h" // Базовая графическая библиотека # include "SPFD5408_Adafruit_TFTLCD.h" // Зависит от оборудования library # include "SPFD5408_TouchScreen.h" / * _ Конец библиотек _ * // * _ Определение выводов ЖК-дисплея (я присвоил значения по умолчанию) _ * / # define YP A1 // должен быть аналоговым выводом, используйте обозначение "An"! # define XM A2 // должен быть аналоговым выводом, используйте обозначение "An"! #define YM 7 // может быть цифровым выводом # define XP 6 // может быть цифровым выводом #define LCD_CS A3 # define LCD_CD A2 #define LCD_WR A1 # define LCD_RD A0 # define LCD_RESET A4 / * _ Конец определений _ * // * _ Присвойте имена цветам и давлению _ * / # define WHITE 0x0000 // Black-> White # define YELLOW 0x001F // Blue-> Yellow # define CYAN 0xF800 // Красный-> Голубой # define PINK 0x07E0 // Зеленый-> Pink #define RED 0x07FF // Голубой -> Красный # define GREEN 0xF81F // Розовый -> Зеленый #define BLUE 0xFFE0 // Желтый- > Синий # define ЧЕРНЫЙ 0xFFFF // Белый-> Черный # define MINPRESSURE 10 # define MAXPRESSURE 1000 / * _ Assigned _ * // * _ Калибровка TFT LCD _ * / # define TS_MINX 125 # define TS_MINY 85 # define TS_MAXX 965 #dedefine TS_MAXY 905 / * _ Конец калибровки _ * / TouchScreen ts = TouchScreen (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, Number; действие символа; логический результат = false; void setup () {Serial.begin (9600); // Использование последовательного монитора для отладки tft.reset (); // Всегда сбрасывать при запуске tft.begin (0x9341); // Мой ЖК-дисплей использует IC драйвера интерфейса LIL9341 tft.setRotation (2); // Я просто повернул так, чтобы разъем питания был обращен вверх - необязательно tft.fillScreen (БЕЛЫЙ); IntroScreen (); draw_BoxNButtons (); } void loop () {TSPoint p = waitTouch (); X = р.у; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); delay (300);} TSPoint waitTouch () {TSPoint p; сделать {p = ts.getPoint (); pinMode (XM, ВЫХОД); pinMode (YP, ВЫХОД); } while ((p.z МАКСИМАЛЬНОЕ ДАВЛЕНИЕ)); p.x = карта (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = map (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 ("Button 1"); если (Число == 0) Число = 1; иначе Число = (Число * 10) + 1; // Нажат дважды} if (Y> 140 && Y <192) // Если нажата кнопка 4 {Serial.println ("Button 4"); если (Число == 0) Число = 4; иначе Число = (Число * 10) + 4; // Нажат дважды} if (Y> 192 && Y <245) // Если нажата кнопка 7 {Serial.println ("Button 7"); если (Число == 0) Число = 7; иначе Число = (Число * 10) + 7; // Нажат дважды}} if (X50) // Обнаружение кнопок в столбце 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Кнопка 0 нажата if (Number == 0) Number = 0; иначе Число = (Число * 10) + 0; // Нажат дважды} if (Y> 85 && Y <140) {Serial.println ("Button 2"); если (Число == 0) Число = 2; иначе Число = (Число * 10) + 2; // Нажат дважды} if (Y> 140 && Y <192) {Serial.println ("Button 5"); если (Число == 0) Число = 5; иначе Число = (Число * 10) + 5; // Нажат twic} if (Y> 192 && Y <245) {Serial.println ("Button 8"); если (Число == 0) Число = 8; иначе Число = (Число * 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; иначе Число = (Число * 10) + 3; // Нажат дважды} if (Y> 140 && Y <192) {Serial.println ("Button 6"); если (Число == 0) Число = 6; иначе Число = (Число * 10) + 6; // Нажат дважды} if (Y> 192 && Y <245) {Serial.println ("Button 9"); если (Число == 0) Число = 9; иначе Число = (Число * 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; если (действие == 3) Число = 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 (КРАСНЫЙ); tft.println («АРДУИНО»); tft.setCursor (30, 160); tft.println («КАЛЬКУЛЯТОР»); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (СИНИЙ); tft.println ("- Циклический дайджест"); delay (1800);} void draw_BoxNButtons () {// Отрисовываем окно результатов 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, ЧЕРНЫЙ); // Рисуем второй и четвертый столбец для (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, СИНИЙ); 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 * j)); tft.setTextSize (3); tft.setTextColor (БЕЛЫЙ); tft.println (символ [j] ); }}} После загрузки кода вы увидите, что калькулятор работает на вашем дисплее как мой, и теперь вы можете выполнять с ним базовые математические вычисления. Так что получайте удовольствие, создавая свой собственный калькулятор с Arduino UNO.

Рекомендуемые: