mrawebمحمدرضا اسدی — Zanjan, Iran
LIBRARY // ARDUINO · ESP32

یه رابط لمسی، بدون دردسر Collision Detection.

این کتابخانه یه پیاده‌سازی سبک (Lightweight) و بهینه‌سازی‌شده از کتابخانه‌ی اصلی نمایشگرهای TFT 3.5 اینچه که برای محیط‌های Arduino و طیف گسترده‌ای از میکروکنترلرها توسعه یافته.

// ویژگی‌ها

چرا این کتابخانه

SIMPLE

سادگی در پیاده‌سازی

ارائه‌ی توابعی ساده برای ترسیم اشکال هندسی مختلف، بدون شلوغی کد.

EVENTS

مدیریت رویدادها

امکان تعریف قابلیت کلیک روی اشیاء بدون نیاز به محاسبه‌ی دستی مختصات برخورد (Collision Detection).

PERFORMANCE

بهینه‌سازی منابع

کاهش پیچیدگی کد برای دستیابی به سرعت اجرای بالاتر در سیستم‌های Embedded.

// مستندات

فراخوانی و استفاده

فراخوانی کتابخانه:

main.ino
#include <Arduino.h>
#include <SPI.h>
#include <TFT_eSPI.h>
#include <XPT2046_Touchscreen.h>
#include <tfUI.h>
#include <pgmspace.h>

تعریف پین‌های نمایشگر:

pins.h
#define TFT_CS   5
#define TFT_DC   2
#define TFT_RST  4
#define TOUCH_CS 15
#define TOUCH_IRQ 21

تعریف شیء SPI و tfUI:

setup.ino
XPT2046_Touchscreen ts(TOUCH_CS);
TFT_eSPI tft = TFT_eSPI();

تعریف اشکال مختلف:

shapes.ino
tf::RoundedRect NAME = tf::makeRounded(tft, WIDTH, HEIGHT, BORDER_RADIUS); // تعریف roundedrect
tf::Rect NAME = tf::makeRect(tft, WIDTH, HEIGHT);                          // تعریف مستطیل
tf::Circle NAME = tf::makeCircle(tft, RADIUS);                             // تعریف دایره
tf::Text NAME = tf::makeText(tft, SIZE);                                   // تعریف متن

تعریف عکس (کد hex):

image.ino
const uint16_t IMAGE_HEX[SIZE] PROGMEM = {
0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,
0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,
0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,
0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FD5,0x0F74,0x0FF5,0x0FF5,
// ...
};

tf::ImageHEX NAME(tft, IMAGE_HEX, WIDTH, HEIGHT);

تنظیمات اشکال:

shape-config.ino
NAME.setPosition(X,Y);             // تعیین موقعیت
NAME.setFillColor(COLOR);          // رنگ داخل شکل
NAME.setOutlineColor(COLOR);       // رنگ دور شکل
NAME.setOutlineThickness(SIZE);    // ضخامت دور شکل
NAME.setVisible(BOOL);             // وضعیت مشاهده
NAME.draw();                       // رسم شکل
NAME.clear();                      // پاک کردن شکل

تعریف رنگ:

color.ino
#define NAME tft.color565(R, G, B)    // 0 <= R,G,B <= 255

تنظیمات متن:

text.ino
NAME.setPosition(X,Y);       // تعیین موقعیت
NAME.setbgColor(COLOR);      // رنگ پس‌زمینه
NAME.setColor(COLOR);        // رنگ متن
NAME.setString(STRING);      // متن عنصر
NAME.setText(STRING);        // به‌روزرسانی متن عنصر
NAME.setVisible(BOOL);       // حالت نمایش
NAME.draw();                 // رسم متن
NAME.clear();                // پاک کردن متن

تنظیمات عکس:

image-config.ino
NAME.setPosition(X,Y);         // تعیین موقعیت
NAME.setVisible(BOOL);         // حالت نمایش
NAME.clear();                  // پاک کردن از صفحه
NAME.draw();                   // رسم تصویر

بررسی کلیک روی عنصر:

click.ino
NAME.isClicked(ts)    // اگر کلیک شده باشد 1، اگر نه 0

// مثال:
if (NAME.isClicked(ts))
    Serial.print("clicked!");
else
    Serial.print("notclicked");

کتابخانه رو دانلود کن

فایل ZIP کامل کتابخانه شامل تمام هدرها و مثال‌های استفاده.