راه اندازی نمایشگر TFT 2.8inch با ESP8266
در این پروژه به سادگی یک نمایشگر رنگی TFT با سایز 2.8 اینچ که مجهز به صفحه لمسی از نوع تاچ مقاومتی هست رو با پردازنده محبوب ESP8266 راه اندازی میکنیم.
درایور های ماژول نمایشگر TFT
درایور نمایشگر ILI9341
درایور صفحه تاچ XPT2046
اتصالات نمایشگر به پردازنده

TFT 2.8 ———– NODEMCU (ESP8266)
VCC ———————————— 3.3V
GND ———————————– GND
CS ————————— GPIO15 (D8)
RES ————————— GPIO2 (D4)
D/C ————————— GPIO0 (D3)
MOSI ———————— GPIO13 (D7)
SCK ————————– GPIO14 (D5)
LED ———— 220 ohm resistor to 3.3v
MISO ———————— GPIO12 (D6)
TCLK ————————- GPIO14 (D5)
TCS —————————- GPIO5 (D1)
TDIN ————————- GPIO13 (D7)
TDO ————————– GPIO12 (D6)
TIRQ ————————– GPIO4 (D2)
برای اتصالات نمایشگر TFT 2.8 به NodeMCU توجه داشته باشید که پایه های رابط SPI به صورت موازی از درایور نمایشگر و تاچ به پردازنده متصل می شود.
همچنن تغذیه نمایشگر در برخی مقالات 5 ولت و در برخی 3.3 ولت ذکر شده که برای کاهش خطر آسیب به آن پیشنهاد میکنیم از 3.3 ولت استفاده کنید.
پایه LED نمایشگر مربوط به نور پس زمینه آن هست که در اینجا به صورت دائم روشن استفاده شده اما در صورتی که شما میخواهید در پروژتان آن را کنترل کنید کافیست به یکی از پایه های پردازنده متصل کنید و داخل برنامه آن را کنترل کنید.
کتابخانه های مورد نیاز در نرم افزار آردوینو
#include
#include
#include
پیکربندی های اولیه برای نمایشگر و صفحه تاچ
//قبل از حلقه setup این بخش رو قرار بدید
#define TOUCH_CS_PIN D1
#define TOUCH_IRQ_PIN D2
#define TFT_CS D8
#define TFT_DC D3
#define TFT_RST D4
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
XPT2046_Touchscreen touch( TOUCH_CS_PIN, TOUCH_IRQ_PIN );
پروژه تست نمایشگر و تاچ TFT 2.8 اینچ
در این پروژه ابتدا منتظر میمانیم تا لمس در صفحه تاچ اتفاق بیوفتد. بعد از به دست آوردن موقعیت لمس شده یک مربع تو پر در آن مختصات رسم میکنیم. در بالای صفحه بخشی برای تنظیمات تعریف میکنیم که شامل انتخاب رنگ و سایز نوشته هست.
مقدار تعریف شده برای رنگ مستقیم در رنگ مربع تو پر استفاده میشود و سایز نوشته با تناسب دلخواه بر طول و عرض مربع اعمال میکنیم. به سادگی یک برنامه نقاشی طراحی کردیم که میتواند به خوبی نمایشگر لمسی ما را تست کند. در پایین فیلم تست این پروژه را ببینید.
کد آردوینو پروژه
#include
#include
#include
#define TOUCH_CS_PIN D1
#define TOUCH_IRQ_PIN D2
#define TFT_CS D8
#define TFT_DC D3
#define TFT_RST D4
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
#define TrefX 400
#define TrefY 300
int touchX,touchY ,Mysize = 1,MyR,MyG,MyB;
uint16_t selectColor = ILI9341_BLACK;
XPT2046_Touchscreen touch( TOUCH_CS_PIN, TOUCH_IRQ_PIN );
void setup() {
Serial.begin( 115200 );
touch.begin();
Serial.println( "Touch screen ready." );
tft.begin();
tft.setRotation(2);
tft.fillScreen(ILI9341_WHITE);
seting();
}
TS_Point rawLocation;
void loop() {
while ( touch.touched() )
{
rawLocation = touch.getPoint();
touchX = (rawLocation.x - TrefX) / (3790 / 320);
touchY = 240 - (rawLocation.y - TrefY) / (3640 / 240);
Serial.print("x = ");
Serial.print(touchX);
Serial.print(", y = ");
Serial.println(touchY);
if(touchX <= 60)
{
if(touchY >= 0 && touchY < 30 && touchX <= 30 && touchX >= 0) MyR++;
else if(touchY >= 30 && touchY < 60 && touchX <= 30 && touchX >= 0) MyG++;
else if(touchY >= 60 && touchY < 90 && touchX <= 30 && touchX >= 0) MyB++;
else if(touchY >= 0 && touchY < 30 && touchX <= 60 && touchX >= 30) MyR--;
else if(touchY >= 30 && touchY < 60 && touchX <= 60 && touchX >= 30) MyG--;
else if(touchY >= 60 && touchY < 90 && touchX <= 60 && touchX >= 30) MyB--;
else if(touchY >= 90 && touchY < 120) {MyR = 0;MyG = 0;MyB = 0;}
else if(touchY >= 130 && touchY < 160) Mysize++;
else if(touchY >= 160 && touchY < 190) Mysize--;
selectColor = tft.color565(MyR ,MyG ,MyB);
if(Mysize > 10) Mysize = 10;
if(Mysize < 0) Mysize = 0;
if(MyR > 255) MyR = 255;
if(MyG > 255) MyG = 255;
if(MyB > 255) MyB = 255;
if(MyR < 0) MyR = 0;
if(MyG < 0) MyG = 0;
if(MyB < 0) MyB = 0;
seting();
}
else tft.fillRect(touchY-Mysize, touchX-Mysize,Mysize * 2, Mysize * 2, selectColor);
}
delay(100);
}
void seting()
{
tft.setCursor(130, 20);
tft.setTextSize(4);
tft.setTextColor(selectColor);
tft.fillRect(120, 0 ,120 , 60, ILI9341_WHITE);
tft.fillRect(210 - Mysize, 30 - Mysize , Mysize * 2, Mysize * 2, selectColor);
tft.print("+");
tft.setCursor(160, 20);
tft.print("-");
tft.fillRect(0, 0,30, 60, ILI9341_RED);
tft.fillRect(30, 0,30, 60, ILI9341_GREEN);
tft.fillRect(60, 0,30, 60, ILI9341_BLUE);
tft.fillRect(90, 0,30, 60, ILI9341_BLACK);
}
در صورتی که برای راه اندازی NodeMCU و پردازنده های ESP با IDE آردوینو تجربه کافی ندارید آموزش راه اندازی NodeMCU را ببینید.
در صورتی که برای راه اندازی این پروژه به چالش برخوردید بدون هیچ نگرانی در بخش دیدگاه های سایت مشکل خود را بنویسید تا در اسرع وقت راهنماییتون کنیم.




