تحلیل کتابخانه

تحلیل و بررسی کتابخانه TFT.h

نوشته شده توسط CiferTech

TFT مخفف “Thin Film Transistor” است. صفحه نمایش TFT LCD رنگی، دارای ترانزیستورهایی است که از فیلمهای نازک سیلیکون آمورف روی شیشه رسوب کرده اند. این به عنوان یک شیر کنترل برای ایجاد ولتاژ مناسب بر روی کریستال های مایع برای زیر پیکسل های جداگانه عمل می کند. به همین دلیل صفحه نمایش TFT LCD را نمایشگر Active Matrix نیز می نامند. نمایشگرهای TFT همگی دارای درجه صنعتی بوده و برای کاربردهایی مانند ترمینال های فضای باز، اتومات پارکینگ، دستگاه POS، اتوماسیون، کیوسک پرداخت، تجهیزات پزشکی و موارد دیگر قابل استفاده هستند. در ادامه آموزش و تحلیل کتابخانه TFT.h با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


نصب کتابخانه


ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه TFT.h خواهیم‌کرد. مراحل زیر را دنبال کنید:

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه TFT را جستجو کنید.
  3. کتابخانه را نصب کنید.

 


اتصالات در برد های مختلف


برد را می توان به دو روش برای استفاده پیکربندی کرد. یکی استفاده از رابط سخت افزاری Arduino SPI است. دیگر این که همه پین ها را به صورت دستی تنظیم کنید. هیچ تفاوتی در عملکرد صفحه نمایش بین این دو روش وجود ندارد، اما استفاده از SPI سخت افزار به طور قابل توجهی سریعتر است. اگر قصد استفاده از کارت SD در ماژول TFT را دارید، باید از SPI سخت افزاری استفاده کنید. تمام نمونه های موجود در کتابخانه برای استفاده از SPI سخت افزار نوشته شده اند. اگر از SPI سخت افزاری با Uno استفاده می کنید ، فقط باید پین های CS ،DC و RESET را تنظیم کنید، زیرا MOSI (پایه ۱۱) و SCLK (پایه ۱۳) قبلا تعریف شده اند.

#define CS   10
#define DC   9
#define RESET  8

TFT myScreen = TFT(CS, DC, RESET);

 

  • برای استفاده از SPI سخت افزاری با Leonardo، پین ها را به این صورت اعلام می کنید:
#define CS   7
#define DC   0
#define RESET  1

TFT myScreen = TFT(CS, DC, RESET);

 

  • هنگام استفاده از SPI سخت افزاری، می توانید از هر پین موجود استفاده کنید، اما باید علاوه بر CD ،DC و RESET پین های MOSI و SCLK را نیز اعلام کنید.
#define SCLK 4
#define MOSI 5
#define CS   6
#define DC   7
#define RESET 8

TFT myScreen = TFT(CS, DC, MOSI, SCLK, RESET);

 

 


مستندات عملکرد اعضا کتابخانه


  • ;()TFT
کلاس پایه برای رسم در برد Arduino TFT. از این مورد برای ایجاد یک نمونه نامگذاری شده از کلاس TFT استفاده کنید تا در طرح خود به آن اشاره کنید.
  • cs : پین برای انتخاب تراشه
  • dc : پین مورد استفاده
  • rst : پین مورد استفاده برای ریست
  • mosi : پین مورد استفاده برای MOSI برای زمانی که از ارتباط SPI استفاده نمی‌کنیم
  • sclk : پین مورد استفاده برای کلاک در زمان استفاده نکردن از SPI
TFT(cs, dc, rst); //برای استفاده از SPI سخت افزاری 
TFT(cs, dc, mosi, sclk, rst); //برای استفاده از تمام پین ها

TFT screen = TFT(cs, dc, rst);

 

  • ;()begin
قبل از ترسیم هر چیزی برای شروع صفحه آردوینو GLCD باید تماس گرفته شود. از این تابع برای شروع کار و مقداردهی اولیه استفاده می‌کنیم.
screen.begin();

 

  • ;()screen.background
با استفاده از رنگ نشان داده شده، همه موارد موجود در صفحه LCD را پاک می کند. می توان از آن در ()loop برای پاک کردن صفحه استفاده کرد. در حالی که background() برای هر یک از کانالهای قرمز، سبز و آبی مقادیر ۸ بیتی را انتظار دارد، صفحه با این فرض نمایش داده نمی شود. مقادیر قرمز و آبی به رنگ ۵ بیتی (۳۲) و سبز با رنگ ۶ بیتی (۶۴) مقیاس بندی می شوند.
  screen.background(255,255,255);

 

  • ;()stroke

قبل از ترسیم شی بر روی صفحه، این تابع رنگ خطوط و حاشیه اشکال را تنظیم می کند. stroke برای هر کانال قرمز، سبز و آبی مقادیر ۸ بیتی را انتظار دارد، اما برد با این فرض نمایش داده نمی شود. مقادیر قرمز و آبی به رنگ ۵ بیتی (۳۲) و سبز با رنگ ۶ بیتی (۶۴) مقیاس بندی می شوند.

screen.stroke(255,255,255);

 

  • ;()fill
قبل از ترسیم شی بر روی صفحه، فراخوانی می‌شود تا شکل و متن را تنظیم می کند.
screen.fill(255,255,255);

 

  • ;()text

متن را در مختصات داده شده روی صفحه نمایش می‌دهد.

screen.text("Testing!", 0, 0);

 

  • ;()setTextSize
اندازه متن زیر را تنظیم می کند. اندازه پیش فرض “۱” است. هر تغییر در اندازه، متن را با ۱۰ پیکسل ارتفاع افزایش می دهد. یعنی اندازه ۱ = ۱۰ پیکسل، اندازه ۲ = ۲۰ پیکسل است.
screen.setTextSize(5);

 

  • ;()point
در مختصات داده شده یک نقطه می کشد. پارامتر اول مقدار افقی نقطه است، مقدار دوم مقدار عمودی نقطه است.
 screen.point(screen.width()/2, screen.height()/2);

 

  • ;()line
بین دو نقطه یک خط می کشد. برای تغییر رنگ چیزی که با خط کشیده شده است از ()stroke استفاده کنید.
screen.line(0, 0, 160, 124);

 

  • ;()rect
یک مستطیل در صفحه TFT رسم می کند. این تابع  چهار آرگومان می گیرد، دو مورد اول گوشه بالا سمت چپ شکل است، دو مورد دیگر مربوط به آخرین عرض و ارتفاع شکل است.
screen.rect(screen.width()/2-5, screen.height()/2-5, 10, 10);

 

  • ;()circle
یک دایره روی صفحه می کشد. دایره نسبت به نقطه مرکزی آن رسم می شود، بدین معنی که قطر کل همیشه یک عدد رندوم خواهد بود.
screen.circle(screen.width()/2, screen.height()/2, 10);

 

  • ;()image
تصویری را از کارت SD می‌خواند و در  مکان مشخص در صفحه می کشد.
PImage logo;

void setup() {
  EsploraTFT.begin();
  SD.begin(SD_CS);
  EsploraTFT.background(0, 0, 0);

  logo = EsploraTFT.loadImage("arduino.bmp");

   if (logo.isValid()) {
       Esplora.writeGreen(255);
  }
  else{
    Esplora.writeRed(255);
  }

  EsploraTFT.image(logo, 0, 0);

}

 


جمع بندی


دو گروه مثال برای TFT وجود دارد. نمونه هایی مختص Arduino Esplora وجود دارد و نمونه هایی برای برد هایی مانند Uno یا Leonardo طراحی شده اند. که ترجمه آنها از کتابخانه به کتابخانه و عملکرد آن آسان است. به کمک این LCD های پرکاربرد قادر خواهید بود در پروژه های مختلفی که نیاز به نمایش اشکال و یا تصاویر مختلف دارید استفاده کنید. این LCD ها همچنین در ساخت منو های کاربردی برای کنترل در پروژه ها کاربرد دارد. تمام رنگ بودن این LCD از عوامل پرطرفدار بودن آنهاست که در پروژه های مختلف با سناریو های مختلف استفاده می‌شود.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

CiferTech

فقط 10 نوع آدم در این دنیا وجود داره، اونی که باینری میفهمه و اونی که باینری نمیفهمه! ^-^

~ اینستاگرام: CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه