وبلاگ محمدرضا اسدی

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

  • سادگی در پیاده‌سازی: ارائه توابعی ساده برای ترسیم اشکال هندسی مختلف.
  • مدیریت رویدادها (Event Handling): امکان تعریف قابلیت کلیک بر روی اشیاء (Objects) بدون نیاز به محاسبه دستی مختصات برخورد (Collision Detection).
  • بهینه‌سازی منابع: کاهش پیچیدگی کد برای دستیابی به سرعت اجرای بالاتر در سیستم‌های Embedded.


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

#include <Arduino.h>
#include <SPI.h>
#include <TFT_eSPI.h>
#include <XPT2046_Touchscreen.h>
#include <tfUI.h>
#include <pgmspace.h>
            
تعریف پین های نمایشگر :

#define TFT_CS   5 
#define TFT_DC   2 
#define TFT_RST  4  
#define TOUCH_CS 15  
#define TOUCH_IRQ 21 
            
تعریف شی SPI و tfUI :

XPT2046_Touchscreen ts(TOUCH_CS);
TFT_eSPI tft = TFT_eSPI();
            
تعریف اشکال مختلف :

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)

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,
0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,
0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0FF5,0x0...
};

    tf::ImageHEX NAME(tft, IMAGE_HEX, WIDTH, HEIGHT);
            
تنظیمات اشکال :

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

#define NAME tft.color565(R, G, B)    // 0 <= R,G,B <= 255
            
تنظیمات متن :

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

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

NAME.isClicked(ts)    //اگر کلیک شده باشد 1 اگر نه 0
//مثال:

if(NAME.isClicked(ts))
   Serial.print("clicked!");
else
   Serial.print("notclicked");
            
دانلود فایل ZIP کتابخانه