آموزش راه اندازی شیلد ال سی دی لمسی tft توسط آردوینو

سلام امیدوارم که حالتون خوب باشه و تا امروز مطالب آموزشی ما براتون مفید واقع شده باشه

دراین جلسه آموزش راه اندازی شیلد ال سی دی لمسی tft توسط آردوینو قصد داریم .  و با راه اندازی شیلد ال سی دی لمسی tft   دوتا کار جالب بکنیم.  از جمله کشیدن نقاشی – نشون دادن رنگ هاکه  بر روی  ال سی دی می باشد.

وسایل مورد نیاز برای آموزش راه اندازی شیلد ال سی دی لمسی tft توسط آردوینو :

[icon name=”check-circle” class=”” unprefixed_class=””] یک برد آردوینو(UNO)

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد کابل USB چاپگر

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد شیلد TFT ال سی دی لمسی

[icon name=”star-half-o” class=”” unprefixed_class=””]به یاد داشته باشید که این شیلد ها قابلیت ذخیره کردن یا نمایش دادن عکس از روی MICRO SD را نیز دارا می باشد.

 

شمای فنی شیلد TFT ال سی دی :

آموزش راه اندازی شیلد ال سی دی لمسی به کمک آردوینو (2)

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

علاوه بر این، استفاده از شیلد حجم اشغال شده توسط دستگاه‌تان را کم می‌کند. راه‌اندازی شیلدها معمولا تفاوتی با ماژول‌های مجزا ندارد و همان کد را بر روی آردوینو آپلود می‌کنید. در این آموزش از شیلد ماژول نمایشگر TFT لمسی استفاده شده است.

آموزش راه اندازی شیلد ال سی دی لمسی به کمک آردوینو (3)

در تصویر بالا با نحوه قرار گرفتن شیلد TFT ال سی دی بر روی آردوینو آشنا شدیم هنگامی که این شیلد بر روی آردوینو Uno قرار می‌گیرد ،پین‌‌های دیجیتال ۵ تا ۱۳ و آنالوگ ۰ تا ۳ را مورد استفاده قرار می گیرند.

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

پس بنابراین اگر می‌خواهید کار گرافیکی نسبتا سنگینی انجام دهید بهتر است به سراغ بردهای قوی‌ترین مانند رزبری پای بروید.با وجود این محدودیت‌ها به لطف کتابخانه‌های موجود و طراحی‌های خاص تراشه‌های موجود در نمایشگرها، آردوینو می‌تواند تصاویر نسبتا قابل قبولی تولید کند که برای خیلی از پروژه‌ها کافی است.در این آموزش از شیلد نمایشگر لمسی TFT که مناسب آردوینو UNO ساخت شرکت MCUFriend استفاده شده است.

کاربرد شیلد ال سی دی لمسی tft توسط آردوینو

 

در تصویر بالا با نحوه قرار گرفتن شیلد TFT ال سی دی بر روی آردوینو آشنا شدیم هنگامی که این شیلد بر روی آردوینو Uno قرار می‌گیرد ،پین‌‌های دیجیتال ۵ تا ۱۳ و آنالوگ ۰ تا ۳ را مورد استفاده قرار می گیرند.

 

خب حالا میریم سراغ آشنایی با دستورات راه اندازی برای کشیدن نقاشی توسط شیلد TFT:

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

<include <Adafruit_GFX.h#

این دستور در اول صفحه بالای void setup نوشته می شود. دستور بالا مربوط به فراخوانی کتابخانه لازمه به برنامه آردوینو می باشد.

[icon name=”star-half-o” class=”” unprefixed_class=””]توجه: دستوراتی که در ابتدای آن ها از کلمه  #include استفاده می شود برای فراخوانی کتابخانه نیز می باشد.

مانند کد زیر:

#include <Adafruit_GFX.h>

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;MCUFRIEND_kbv tft

این دستور در اول صفحه بالای void setup نوشته می شود. دستور بالا مربوط به زیر مجموعه بودن کتابخانه ها می باشد.

مانند کد زیر:

MCUFRIEND_kbv tft;

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;uint8_t YP = A1

این دستور در اول صفحه بالای void setup نوشته می شود. دستور بالا مربوط به معرفی پین A1 به عنوان آنالوگ می باشد.

مانند کد زیر:

uint8_t YP = A1;

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;uint8_t YM = 7

این دستور در اول صفحه بالای void setup نوشته می شود. دستور بالا مربوط به معرفی پین 7 به عنوان دیجیتال می باشد.

مانند کد زیر:

uint8_t YM = 7;

[icon name=”star-half-o” class=”” unprefixed_class=””]توجه : دستورات معرفی پایه ها اگر از A استفاده شده بود مربوط به پین های آنالوگ آردوینو می باشد.

ولی اگر از خود عدد استفاده شده بود مربوط به پین های دیجیتال آردوینو می باشد.

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300)

این دستور در اول صفحه بالای void setup نوشته می شود. دستور بالا مربوط به تعریف تاچ اسکیرین به اندازه مورد نظر می باشد.

مانند کد زیر:

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;TSPoint tp

define MINPRESSURE 20

define MAXPRESSURE 1000

;{define SWAP(a, b) {uint16_t tmp = a; a = b; b = tmp#

این دستور در اول صفحه بالای void setup نوشته می شود. دستورات بالا برای معرفی ماکسیموم و مینیموم نیز می باشد.

مانند کد زیر:

TSPoint tp;
#define MINPRESSURE 20
#define MAXPRESSURE 1000
#define SWAP(a, b) {uint16_t tmp = a; a = b; b = tmp;}

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;nt16_t BOXSIZE

;int16_t PENRADIUS = 3

;uint16_t identifier, oldcolor, currentcolor

;uint8_t Orientation = 0

این دستور در اول صفحه بالای void setup نوشته می شود. دستورات بالا برای معرفی مختصات رنگ ها به برنامه می باشد.

مانند کد زیر:

int16_t BOXSIZE;
int16_t PENRADIUS = 3;
uint16_t identifier, oldcolor, currentcolor;
uint8_t Orientation = 0;

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

#define BLACK 0x0000

این دستور در اول صفحه بالای void setup نوشته می شود. دستور بالا مربوط به معرفی مختصات رنگ مشکی می باشد.

[icon name=”star-half-o” class=”” unprefixed_class=””]توجه: دستورات زیرین بعدی مربوط به معرفی رنگ ها به برنامه می باشد.

مانند کد زیر:

#define BLACK 0x0000

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;uint16_t tmp

 ;(tft.begin(9600

; tft.reset()

; identifier = tft.readID()

; TS_LEFT = 920; TS_RT = 139; TS_TOP = 944; TS_BOT = 150

; SwapXY = 0

این دستورات در پایین void setup نوشته می شود. دستورات بالا مربوط به معرفی سرعت ریست و بالا اومدن تاچ اسکیرین می باشد.

مانند کد زیر:

 uint16_t tmp;
 tft.begin(9600);
 tft.reset();
 identifier = tft.readID();
 TS_LEFT = 920; TS_RT = 139; TS_TOP = 944; TS_BOT = 150;
 SwapXY = 0;

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;(ts = TouchScreen(XP, YP, XM, YM, 300

;( tft.begin(identifier

;( tft.setRotation(0

;( tft.fillScreen(BLACK

 BOXSIZE = tft.width() / 6

;( tft.fillScreen(BLACK

این دستورات در پایین void setup نوشته می شود. دستورات بالا مربوط به معرفی رنگ پس زمینهخ تاچ اسکیرین نیز می باشد.

مانند کد زیر:

ts = TouchScreen(XP, YP, XM, YM, 300);
 tft.begin(identifier);
 tft.setRotation(0);
 tft.fillScreen(BLACK);
 BOXSIZE = tft.width() / 6;
 tft.fillScreen(BLACK);

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;uint16_t xpos, ypos

دستور بالا در قسمت void loop نیز نوشته می شود و مربوط به مختصات صفحه تاپچ اسکیرین نیز می باشد.

مانند کد زیر:

 uint16_t xpos, ypos;

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;(pinMode(XM, OUTPUT

دستور بالا زیر void loop نوشته می شود که مربوط به قرار دادن xm به عنوان خروجی می باشد.

مانند کد زیر:

 pinMode(XM, OUTPUT);

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

(if (tp.z > MINPRESSURE && tp.z < MAXPRESSURE

دستور بالا زیر void loop نوشته می شود مربوط به قرار دادن tp.z به عنوان ماکسیموم و مینیموم نیز می باشد.

مانند کد زیر:

 if (tp.z > MINPRESSURE && tp.z < MAXPRESSURE)

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;(xpos = map(tp.x, TS_LEFT, TS_RT, 0, tft.width()

;( ypos = map(tp.y, TS_TOP, TS_BOT, 0, tft.height()

دستورات بالا زیر void loop نوشته می شود و مربوط به مقادیر adc نیز می باشد.

مانند کد زیر:

 xpos = map(tp.x, TS_LEFT, TS_RT, 0, tft.width());
 ypos = map(tp.y, TS_TOP, TS_BOT, 0, tft.height());

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;(if (xpos < BOXSIZE

;currentcolor = RED

;( tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE

 } else if (xpos < BOXSIZE * 2)

; currentcolor = YELLOW

 ;(tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, WHITE

 } else if (xpos < BOXSIZE * 3

; currentcolor = GREEN

{

دستورات بالا زیر void loop نوشته می شود. دستورات بالا مربوط به انتخابب تک به تک رنگ های نقاشی ما می باشد.

مانند کد زیر:

 if (ypos < BOXSIZE) {
 oldcolor = currentcolor;

 if (xpos < BOXSIZE) {
 currentcolor = RED;
 tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 2) {
 currentcolor = YELLOW;
 tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 3) {
 currentcolor = GREEN;
 tft.drawRect(BOXSIZE * 2, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 4) {
 currentcolor = CYAN;
 tft.drawRect(BOXSIZE * 3, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 5) {
 currentcolor = BLUE;
 tft.drawRect(BOXSIZE * 4, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 6) {
 currentcolor = MAGENTA;
 tft.drawRect(BOXSIZE * 5, 0, BOXSIZE, BOXSIZE, WHITE);
 }

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

}if (oldcolor != currentcolor) 

دستور بالا مربوط به شرط گذاری برای رنگ های تاچ اسکیرین نیز می باشد.

مانند کد زیر:

if (oldcolor != currentcolor) {

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;if (oldcolor == RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED)

دستور بالا مربوط به شرط گذاری برای رنگ قرمز تاچ اسکرین ما نیز می باشد.

مانند کد زیر:

 if (oldcolor == RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);

 

سورس کامل برنامه:

#include <Adafruit_GFX.h>
//دستور بالا مربوط به فراخوانی کتابخانه مورد نیاز به برنامه می باشد
#include <MCUFRIEND_kbv.h>
//دستور بالا برای معرفی کتابخانه مورد نیاز برنامه می باشد
MCUFRIEND_kbv tft;
//دستور بالا مربوط به زیر مجموعه کتابخانه که در دستور بالا معرفی کردیم می باشد
#include <TouchScreen.h>
//دستور بالا برای فراخوانی کتابخانه تاچ اسکرین به برنامه می باشد
//print(www.robotafzar.com)
uint8_t YP = A1;
//دستور بالا مربوط به استفاده از پین A1 به عنوان پین آنالوگ می باشد
uint8_t XM = A2;
//دستور بالا مربوط به استفاده از پین A2 به عنوان پین آنالوگ می باشد
uint8_t YM = 7;
//از دستور بالا به عنوان پین دیجیتال باید استفاده کرد
uint8_t XP = 6;
//دستور بالا به عنوان پین دیجیتال باید استفاده کرد
uint8_t SwapXY = 0;
 
uint16_t TS_LEFT = 920;
uint16_t TS_RT = 150;
uint16_t TS_TOP = 940;
uint16_t TS_BOT = 120;
 
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
TSPoint tp;
#define MINPRESSURE 20
#define MAXPRESSURE 1000
#define SWAP(a, b) {uint16_t tmp = a; a = b; b = tmp;}
 
int16_t BOXSIZE;
int16_t PENRADIUS = 3;
uint16_t identifier, oldcolor, currentcolor;
uint8_t Orientation = 0; 
#define BLACK 0x0000
//دستور بالا برای معرفی رنگ مشکی به برنامه می باشد
#define BLUE 0x001F
//دستور بالا برای معرفی کردن رنگ آبی به برنامه می باشد
#define RED 0xF800
//دستور بالا برای معرفی رنگ قرمز به برنامه می باشد
#define GREEN 0x07E0
//دستور بالا برای معرفی رنگ سبز به برنامه می باشد
#define CYAN 0x07FF
//دستور بالا برای معرفی رنگ فیروزه ای به برنامه می باشد
#define MAGENTA 0xF81F
//دستور بالا برای معرفی رنگ ارغوانی به برنامه می باشد
#define YELLOW 0xFFE0
//دستور بالا برای معرفی کردن رنگ زرد به برنامه می باشد
#define WHITE 0xFFFF
//دستور بالا برای معرفی رنگ سفید به برنامه می باشد
//print(shayan,amirhossein)
//print(www.school.robotafzar.com)
void setup(void) {
 uint16_t tmp;
 tft.begin(9600);
 tft.reset();
 identifier = tft.readID();
 TS_LEFT = 920; TS_RT = 139; TS_TOP = 944; TS_BOT = 150;
 SwapXY = 0;
 ts = TouchScreen(XP, YP, XM, YM, 300);
 tft.begin(identifier);
 tft.setRotation(0);
 tft.fillScreen(BLACK);
 BOXSIZE = tft.width() / 6;
 tft.fillScreen(BLACK);
 //دستور بالا مربوط به رنگ پس زمینه تاچ اسکرین ما می باشد
 tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);
 tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);
 tft.fillRect(BOXSIZE * 2, 0, BOXSIZE, BOXSIZE, GREEN);
 tft.fillRect(BOXSIZE * 3, 0, BOXSIZE, BOXSIZE, CYAN);
 tft.fillRect(BOXSIZE * 4, 0, BOXSIZE, BOXSIZE, BLUE);
 tft.fillRect(BOXSIZE * 5, 0, BOXSIZE, BOXSIZE, MAGENTA);
 
 tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
 currentcolor = RED;
}
 
void loop() {
 
 uint16_t xpos, ypos;
 //دستور بالا مربوط به معرفی مختصات صفحه به برنامه می باشد
 tp = ts.getPoint(); //tp.x, tp.y are ADC values
 pinMode(XM, OUTPUT);
 //دستور بالا برای معرفی پین ایکس ام به عنوان پین لمسی می باشد
 pinMode(YP, OUTPUT);
 //دستور بالا برای معرفی وای و پی به عنوان پین لمسی می باشد
 pinMode(XP, OUTPUT);
//دستور بالا ایکس پی برای پین لمسی می باشد
 pinMode(YM, OUTPUT);
//دستور بالا برای معرفی وای ام به عنوان پین لمسی می باشد
 if (tp.z > MINPRESSURE && tp.z < MAXPRESSURE) {
//دستور بالا برای قرار دادن تی و پی .زد به عنوان ماکسیموم و مینیموم نیز می باشد
 if (SwapXY != (Orientation & 1)) SWAP(tp.x, tp.y);
//دو دستور زیر مربوط به مقادیر ای دی سی ما نیز می باشد
 xpos = map(tp.x, TS_LEFT, TS_RT, 0, tft.width());
 ypos = map(tp.y, TS_TOP, TS_BOT, 0, tft.height());
 
 //دستورات زیر مربوط به کادر رنگی بالای تاچ اسکرین ما می باشد
 if (ypos < BOXSIZE) {
 //دستور بالا مربوط به انتخاب رنگ مورد نظر ما از جعبه رنگ می باشد
 oldcolor = currentcolor;
 
 if (xpos < BOXSIZE) {
// دستورات زیر برای انتخاب تک به تک رنگ ها از جعبه رنگی ما می باشد
 currentcolor = RED;
 tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 2) {
 currentcolor = YELLOW;
 tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 3) {
 currentcolor = GREEN;
 tft.drawRect(BOXSIZE * 2, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 4) {
 currentcolor = CYAN;
 tft.drawRect(BOXSIZE * 3, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 5) {
 currentcolor = BLUE;
 tft.drawRect(BOXSIZE * 4, 0, BOXSIZE, BOXSIZE, WHITE);
 } else if (xpos < BOXSIZE * 6) {
 currentcolor = MAGENTA;
 tft.drawRect(BOXSIZE * 5, 0, BOXSIZE, BOXSIZE, WHITE);
 }
 
 if (oldcolor != currentcolor) {
 //دستور بالا مربوط به شرط گذاری برای رنگ ها می باشد
 if (oldcolor == RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);
 //دستور بالا برای ایجاد شرط رنگ قرمز می باشد
 if (oldcolor == YELLOW) tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);
 //دستور بالا ایجاد شرط برای رنگ زرد می باشد
 if (oldcolor == GREEN) tft.fillRect(BOXSIZE * 2, 0, BOXSIZE, BOXSIZE, GREEN);
 //دستور بالا برای ایجاد شرط بر روی رنگ سبز می باشد
 if (oldcolor == CYAN) tft.fillRect(BOXSIZE * 3, 0, BOXSIZE, BOXSIZE, CYAN);
 //دستور بالا مربوط به ایجاد شرط برای رنگ فیروزه ای می باشد
 if (oldcolor == BLUE) tft.fillRect(BOXSIZE * 4, 0, BOXSIZE, BOXSIZE, BLUE);
 //دستور بالا برایایجاد کردن شرط برای رنگ آبی می باشد
 if (oldcolor == MAGENTA) tft.fillRect(BOXSIZE * 5, 0, BOXSIZE, BOXSIZE, MAGENTA);
 //دستور بالا برای ایجاد کردن شرط برای رنگ ارغوانی می باشد
 }
 }
 //دستورات زیر مربوط به رسم منطقه برنامه ما می باشد
 if (((ypos - PENRADIUS) > BOXSIZE) && ((ypos + PENRADIUS) < tft.height())) {
 tft.fillCircle(xpos, ypos, PENRADIUS, currentcolor);
 }
//دستور زیر مربوط به پاک کردن منطقه مورد نظر ما می باشد
 if (ypos > tft.height() - 10) {
//دستور زیر مربوط به فشار دادن پایین صفحه برای پاک کردن می باشد
 tft.fillRect(0, BOXSIZE, tft.width(), tft.height() - BOXSIZE, BLACK);
 }
 }
}

 

آموزش راه اندازی شیلد ال سی دی لمسی به کمک آردوینو (4)

دستورات راه اندازی تست سالم بودن شیلد TFT :

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

<include <Adafruit_GFX.h#

<include <MCUFRIEND_kbv.h#

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

مانند کد زیر:

#include <Adafruit_GFX.h>
#include <MCUFRIEND_kbv.h>

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;(MCUFRIEND_kbv tft(A3, A2, A1, A0, A4

دستور بالا برای معرفی پایه های ال سی دی ما در یک آبجکت می باشد

مانند کد زیر:

MCUFRIEND_kbv tft(A3, A2, A1, A0, A4);

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

#define BLACK 0x0000

دستور بالا برای معرفی مختصات رنگ مشکی به برنامه می باشد

[icon name=”star-half-o” class=”” unprefixed_class=””]توجه: دستورات زیرین به همین صورت می باشد.

مانند کد زیر:

#define BLACK 0x0000

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

}=[uint16_t ColorArray[19

 BLACK, NAVY, DARKGREEN, DARKCYAN, MAROON, PURPLE, OLIVE, LIGHTGREY, DARKGREY,

 BLUE, GREEN, CYAN, RED, MAGENTA, YELLOW, WHITE, ORANGE, GREENYELLOW, PINK

};

دستور بالا برای معرفی رنگ های ما در یک کلاس آبجکت نیز می باشد.

مانند کد زیر:

uint16_t ColorArray[19] = {
 BLACK, NAVY, DARKGREEN, DARKCYAN, MAROON, PURPLE, OLIVE, LIGHTGREY, DARKGREY,
 BLUE, GREEN, CYAN, RED, MAGENTA, YELLOW, WHITE, ORANGE, GREENYELLOW, PINK
};

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;()tft.reset

دستور بالا مربوط به ریست کردن ال سی دی ما می باشد.

مانند کد زیر:

 tft.reset();

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;(FillScreen(1

 ;(delay(2000

 ;SetRotation_With_FillScreen

 ;(delay(2000

 ;()SetRotation_With_PrintData

 ;(delay(2000

دستورات بالا مربوط به زمان تاخیر فایل اسکرین ما می باشد.

مانند کد زیر:

void loop() {
 FillScreen(1);
 delay(2000);
 SetRotation_With_FillScreen(); 
 delay(2000);
 SetRotation_With_PrintData(); 
 delay(2000);
}

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

}(void FillScreen(int Delay

;( tft.fillScreen(BLACK

;( delay(Delay

دستورات بالا مربوط به زمان تاخییر تک به تک رنگ ها می باشد

مانند کد زیر:

void FillScreen(int Delay) {
 tft.fillScreen(BLACK);
 delay(Delay);

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

;(tft.setTextSize(4

 ;(tft.setCursor(0, 0

 tft.setRotation(0); // 0 Digre

 ;(tft.fillScreen(BLACK

 ;(tft.println(“robotafzar”

 ;(delay(1000

دستورات بالا مربوط به پرینت کردن کلمه مورد نظر ما بر روی ال سی دی می باشد.

مانند کد زیر:

void SetRotation_With_PrintData() {
 tft.setTextSize(4);
 
 tft.setCursor(0, 0);
 tft.setRotation(0); // 0 Digre
 tft.fillScreen(BLACK);
 tft.println("robotafzar");
 delay(1000);
}

 

سورس کامل:

//دو دستور زیری مربوط به فراخوانی کتابخانه های مورد نیاز برای تست ال سی دی مورد نظر ما می باشد.
#include <Adafruit_GFX.h>
#include <MCUFRIEND_kbv.h>
//دستور زیر برای معرفی پایه های ال سی دی ما در یک آبجکت می باشد
MCUFRIEND_kbv tft(A3, A2, A1, A0, A4);
//دستورات زیرین مربوط به معرفی رنگ های ما برای تست ال سی دی مورد نظر ما می باشد.
#define BLACK 0x0000
#define NAVY 0x000F
#define DARKGREEN 0x03E0
#define DARKCYAN 0x03EF
#define MAROON 0x7800
#define PURPLE 0x780F
#define OLIVE 0x7BE0
#define LIGHTGREY 0xC618
#define DARKGREY 0x7BEF
#define BLUE 0x001F
#define GREEN 0x07E0
#define CYAN 0x07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ORANGE 0xFD20
#define GREENYELLOW 0xAFE5
#define PINK 0xF81F
//دستور زیر مربوط به معرفی رنگ ها در یک آبجکت می باشد.
uint16_t ColorArray[19] = {
 BLACK, NAVY, DARKGREEN, DARKCYAN, MAROON, PURPLE, OLIVE, LIGHTGREY, DARKGREY,
 BLUE, GREEN, CYAN, RED, MAGENTA, YELLOW, WHITE, ORANGE, GREENYELLOW, PINK
};
void setup() {
 //دستور زیر مربوط به ریست کردن شیلد ال سی دی می باشد
 tft.reset();
 
 uint16_t identifier = tft.readID();
 tft.begin(0x9340);
 
 
 tft.reset();
 uint16_t Identifier = tft.readID();
 if (Identifier == 0xEFEF) Identifier = 0x9341;
 tft.begin(Identifier);
}
 
void loop() {
 //دستورات زیرین مربوط به زمماتن تاخیر تاچ اسکرین و... می باشد
 FillScreen(1);
 delay(2000);
 SetRotation_With_FillScreen(); 
 delay(2000);
 SetRotation_With_PrintData(); 
 delay(2000);
}
//دستورات زیرین مربوط به زمان تاخیر انتشار تک به تک رنگ ها ال سی دی نیز می باشد.
void FillScreen(int Delay) {
 tft.fillScreen(BLACK);
 delay(Delay);
 tft.fillScreen(NAVY);
 delay(Delay);
 tft.fillScreen(DARKGREEN);
 delay(Delay);
 tft.fillScreen(DARKCYAN);
 delay(Delay);
 tft.fillScreen(MAROON);
 delay(Delay);
 tft.fillScreen(PURPLE);
 delay(Delay);
 tft.fillScreen(OLIVE);
 delay(Delay);
 tft.fillScreen(LIGHTGREY);
 delay(Delay);
 tft.fillScreen(DARKGREY);
 delay(Delay);
 tft.fillScreen(BLUE);
 delay(Delay);
 tft.fillScreen(GREEN);
 delay(Delay);
 tft.fillScreen(CYAN);
 delay(Delay);
 tft.fillScreen(RED);
 delay(Delay);
 tft.fillScreen(MAGENTA);
 delay(Delay);
 tft.fillScreen(YELLOW);
 delay(Delay);
 tft.fillScreen(WHITE);
 delay(Delay);
 tft.fillScreen(ORANGE);
 delay(Delay);
 tft.fillScreen(GREENYELLOW);
 delay(Delay);
 tft.fillScreen(PINK);
 delay(Delay);
}
 
void SetRotation_With_FillScreen() {
 tft.setRotation(0); // 0 Digre
 tft.fillScreen(BLACK);
 delay(1000);
 tft.setRotation(1); // 90 Digre
 tft.fillScreen(NAVY);
 delay(1000);
 tft.setRotation(2); // 180 Digre
 tft.fillScreen(DARKGREEN);
 delay(1000);
 tft.setRotation(3); // 270 Digre
 tft.fillScreen(MAROON);
 delay(1000);
}
 
void SetRotation_With_PrintData() {
 tft.setTextSize(4);
 
 tft.setCursor(0, 0);
 tft.setRotation(0); // 0 Digre
 tft.fillScreen(BLACK);
 tft.println("robotafzar");
 delay(1000);
}

void DrawLine() {
 int x1, y1, x2, y2, w = tft.width(), h = tft.height();
 
 tft.fillScreen(BLACK);
 x1 = y1 = 0;
 y2 = h - 1;
 for (x2 = 0; x2 < w; x2 += 6) tft.drawLine(x1, y1, x2, y2, RED);
 x2 = w - 1;
 for (y2 = 0; y2 < h; y2 += 6) tft.drawLine(x1, y1, x2, y2, RED);
 
 tft.fillScreen(BLACK);
 x1 = w - 1;
 y1 = 0;
 y2 = h - 1;
 for (x2 = 0; x2 < w; x2 += 6) tft.drawLine(x1, y1, x2, y2, MAGENTA);
 x2 = 0;
 for (y2 = 0; y2 < h; y2 += 6) tft.drawLine(x1, y1, x2, y2, MAGENTA);
 
 tft.fillScreen(BLACK);
 x1 = 0;
 y1 = h - 1;
 y2 = 0;
 for (x2 = 0; x2 < w; x2 += 6) tft.drawLine(x1, y1, x2, y2, GREEN);
 x2 = w - 1;
 for (y2 = 0; y2 < h; y2 += 6) tft.drawLine(x1, y1, x2, y2, GREEN);
 
 tft.fillScreen(BLACK);
 x1 = w - 1;
 y1 = h - 1;
 y2 = 0;
 for (x2 = 0; x2 < w; x2 += 6) tft.drawLine(x1, y1, x2, y2, WHITE);
 x2 = 0;
 for (y2 = 0; y2 < h; y2 += 6) tft.drawLine(x1, y1, x2, y2, WHITE);
}
void DrawFastHLine_DrawFastVLine() {
 int x, y, w = tft.width(), h = tft.height();
 
 tft.fillScreen(BLACK);
 for (y = 0; y < h; y += 5) tft.drawFastHLine(0, y, w, BLUE);
 for (x = 0; x < w; x += 5) tft.drawFastVLine(x, 0, h, GREEN);
}

 

آموزش راه اندازی شیلد ال سی دی لمسی به کمک آردوینو (5)

جمع بندی:

در این آموزشی چگونه کشیدن نقاشی را با شیلد TFT ال سی دی به کمک آردوینو یاد گرفتیم

همچنین نحوه تست گرفتن از شیلد TFT نسبت به سالم بودنش را فرا گرفتیم

از جمله کار هایی که می توان کرد نئمایش دادن عکس آوردن ساعت و تاریخ سیستم شما بر روی TFT ال سی دی نیز می باشد

در جلسات بعدی آموزش این دو را هم حتما قرار خواهیم داد.

 

موفق پیروز باشید

امیدوارم از مطلب لذت برده باشید حتما سر به اینستاگرام و کانال ما بزنید

[wp_ulike]
اگر می‌خواهید از آخرین و محبوب‌ترین مقالات ما در ایمیل خود مطلع شوید، همین الان ایمیل و شماره موبایل خود را در کادر زیر وارد کنید:
تعداد علاقه مندانی که تاکنون عضو خبرنامه ما شده اند: 0 نفر
دیدگاه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *