پرش به محتوا

راه اندازی نمایشگر TFT 2.8 inch با ESP8266

در این پروژه ابتدا منتظر میمانیم تا لمس در صفحه تاچ اتفاق بیوفتد. بعد از به دست آوردن موقعیت لمس شده یک مربع تو پر در آن مختصات رسم میکنیم. در بالای صفحه بخشی برای تنظیمات تعریف میکنیم که شامل انتخاب رنگ و سایز نوشته هست. مقدار تعریف شده برای رنگ مستقیم در رنگ مربع تو پر استفاده میشود و سایز نوشته با تناسب دلخواه بر طول و عرض مربع اعمال میکنیم. به سادگی یک برنامه نقاشی طراحی کردیم که میتواند به خوبی نمایشگر لمسی ما را تست کند.
راه اندازی نمایشگر TFT 2.8inch با ESP8266

راه اندازی نمایشگر TFT 2.8inch با ESP8266

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

درایور های ماژول نمایشگر TFT

درایور نمایشگر ILI9341

درایور صفحه تاچ XPT2046

اتصالات نمایشگر به پردازنده

راه اندازی نمایشگر TFT 2.8inch با ESP8266

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 <SPI.h>
#include <XPT2046_Touchscreen.h>
#include <Adafruit_ILI9341.h>
				
			

پیکربندی های اولیه برای نمایشگر و صفحه تاچ

				
					//قبل از حلقه 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 <SPI.h>
#include <XPT2046_Touchscreen.h>
#include <Adafruit_ILI9341.h>

#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 را ببینید.

در صورتی که برای راه اندازی این پروژه به چالش برخوردید بدون هیچ نگرانی در بخش دیدگاه های سایت مشکل خود را بنویسید تا در اسرع وقت راهنماییتون کنیم.

اشتراک گذاری این نوشته

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

شاید این مطالب براتون جذاب باشه!

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

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

تماس با ما

ورود به حساب کاربری

عضویت

عضو سایت هستید؟ برای ورود کلیک کنید