آردوینو آردوینو Arduino Uno آموزش آردوینو نمایشگر LCD

آموزش راه اندازی شیلد ال سی دی LCD tft shield arduino uno

شیلد TFT LCD لمسی آردویتپ
نوشته شده توسط علیرضا قربانی

ماژول های LCD TFT رنگی۲٫۴ اینچ یکی از ارزان ترین ماژول های LCD لمسی است که می توان یافت.ویژگی خاص این نمایشگر داشتن تاچ اسکرین مقاومتی که می تواند لمس انگشتان شما را از هر نقطه ای برروی صفحه نمایش شناسایی کند. نور پس زمینه این LCD توسط ۴ عدد LED سفید تامین می‌شود.این شیلد قابلیت نمایش  ۲۶۲۰۰۰  رنگ (۱۸ بیتی) با وضوح ۳۲۰*۴۲۰ پیکسل را دارا می‌باشد.  در این شیلد برای کنترل صفحه نمایش  از چیپ spfd5408 استفاده شده است. در این نمایشگر از ۸ پین برای انتقال دیتا و از ۴ پین برای کنترل LCD استفاده می‌شود. هنگامی که این شیلد بر روی آردوینو Uno قرار می‌گیرد ،پین‌‌های دیجیتال ۵ تا ۱۳ و آنالوگ ۰ تا ۳ را مورد استفاده قرار می‌دهد ، و این بدان معناست که از پین‌های دیجیتال ۲و۳ و آنالوک ۴ و ۵ می‌توان استفاده نمود. ( همچنین هنگامی که از micro SD  استفاده نشود می‌توان از پین ۱۲ نیز استفاده نمود).این شیلد را می‌توان به آردوینو‌هایی که از پردازنده mega328 استفاده می‌کنند  و همچنین آردوینو‌های سری مگا بدون هیج لحیم کاری متصل کنید متصل نمود ( استثناعا نمی‌توان از این شیلد برای آردوینو Leonardo استفاده نمود).در ادمه آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.

 


اتصال شیلد LCD TFT به آردوینو


شیلد lcd لمسی آردوینوی خود را مطابق تصویر زیر با کمی فاصله از port usb بر روی آردوینو قرار دهید.

اتصال شیلد TFT LCD آردوینو

 

اگر شیلد LCD را مطابق تصویر  فوق  به آردوینو متصل نکنید خازن موجود بر روی شیلد با پورت USB اتصال می‌کند و در عمل‌کرد LCD تاخیر ایجاد می‌کند.

اتصال شیلد TFT LCD آردوینو

 

شیلد TFT LCD لمسی آردوینو

 

شیلد TFT LCD لمسی آردوینو

 


کتابخانه  LCD TFT لمسی آردوینو


برای راه‌اندازی این نمایشگر ابتدا کتابخانه‌‌ی آن را از لینک زیر دانلود کنید و سپس آن را به نرم‌افزار آردوینو اضافه کنید.

دانلود کتابخانه شیلد LCD لمسی آردوینو Uno

 


کد راه اندازی LCD TFT آردوینو


 

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

 

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

 

 

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

شیلد TFT LCD لمسی آردویتپ

 

 


توضیح توابع مربوط به شیلد LCD TFT آردوینو


در ابتدا باید سه کتابخانه‌ی زیر را فراخوانی کنیم

#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>

 

سپس باید از  کتالخانه LCD یک آبجکت بسازیم و پین‌‌های مربوط به  seleect (LCD_CS), Data (LCD_CD) ,  Write(LCD_WR)  , (LCD_RD)Read   و ( Reset (LCD_RESETرا مشخص کنیم.

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET)

بطور پیش فرض هنگامی که شیلد را بر روی آردوینو قرار می‌دهیم پین‌های اشاره شده در بالا به صورت زیر می‌باشد.

  • پین LCD_CS به پین A3 متصل می‌شود
  • پین LCD_CD به پین A2 متصل می‌شود
  • پین LCD_WR به پین A1 متصل می‌شود
  • پین LCD_RD به پین A0 متصل می‌شود
  • و در آخر پین LCD_RESET  به پین A4 متتصل می‌شود.

پس ما برای معرفی پین‌ها از قطعه کد زیر می‌توانیم استفاده کنیم.

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

 

tft.begin(0x9341);

به وسیله‌ی این دستور شیلد lcd tft شروع به کار می‌کند. عبارت ۰x9341 آدرس پیش‌فرض چیپ شیلد LCD می‌باشد و حتما باید از آن در این تابع استفاده نمود.لی

 

tft.fillScreen(colorـcode)

این تابع صفحه نمایشگر شما را به رنگ دلخواه شما در می‌آورد. به جای color_code باید کد ۱۶ بیتی رنگ مورد‌نظر قرار بگیرد. برای مثال توسط قطعه کد زیر رنگ پشت زمینه LCD شما قرمز رنگ می‌شود.

tft.fillScreen(0xF800);

 

همجنین برای سایر رنگ‌ها اصلی می‌توانید از کد‌های زیر استفاده کنید:

u16 code color
۰x0000 Black
۰xFFFF White
۰xBDF7 Light Gray
۰x7BEF Dark Gray
۰xF800 Red
۰xFFE0 Yellow
۰xFBE0 Orange
۰x79E0 Brown
۰x7E0 Green
۰x7FF Cyan
۰x1F Blue
۰xF81F Pink

 

 

setCursor(int16_t x, int16_t y),

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

مثال:

tft.setCursor(0, 0);

 

 tft.print(char* str)

به وسیله این تابع می‌توان متن یا عدد مورد نظر را بر روی نمایشگر tft چاپ کرد.

مثال:

tft.print("digispark");

 

tft.println(char* str)

این تابع عملکردی مشابه تابع print دارد با این تفاوت که با هر بار چاپ دشته بر روی نمایشگر به یک خط بعد می‌رود.

 

tft.setTextColor(color_code)

به وسیله این تابع رنگ متنی که می‌خواهیم بر روی LCD نمایش دهیم مشخص می‌شود. برای مثال در قطعه کد زیر ما رنگ سفید را با کد ۰xFFFF برای متنمان انتخاب می‌کنیم.

 tft.setTextColor(0xFFFF);
  tft.print("digispark");

 

tft.setTextSize(int size);

 

به وسیله این تابع سایز فونت متنی را که می‌خاهیم بر روی LCD نمایش دهیم ، مشخص می‌کنیم. مثال:

 tft.setTextSize(2);
  tft.println("this is a test");

 


سخت‌افزار مورد نیاز


arduino uno

شیلد LCD tft لمسی آردینو

 

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

 

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

 

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

علیرضا قربانی

علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

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

۸۵ دیدگاه

  • خسته نباشید و ممنون از توضیحات کاملتون.
    فقط چطوری میتونیم از تاچ این مانیتورها استفاده کنیم و میتونیم از اس دی کارت این صفحه نمایش عکس بارگذاری کنیم؟
    ممنون اگه پاسخ بدین

  • ممنون بابت توضیحاتتون
    یه درخواستی ازتون داشتم
    اینکه
    اگه امکانش هست ( هر چه زودتر ، بهتر ) نحوه بارگذاری عکس از رم بر روی این lcd و استفاده از تاچ این lcd رو توضیح بدین
    با تشکر فراوان

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

  • سلام.
    من یک شیلد lcd با درایور ili9326 دارم که ظاهرا کتابخونه ش گیر نمیاد؛ وقتی با کتابخونه های ili9325 تستش میکنم دست و پا شکسته یه چیزایی میاره. شما چیزی سراغ دارید؟

  • سلام وقتتون بخیر من برنامه ای ک گفتین رو اجرا کردم اما از روی صفحه ی lcd پاک نمیشه دیگه و نمیتونم برنامه ی دیگه ای اجرا کنم, چکار کنم صفحه lcd ریست بشه؟

  • سلام
    لطفا در مورد راه اندازی lcd tft 3.2inch هم توضیح بدین
    من فقط یک صفحه سفید دارم
    برد من genuino uno هست

    • دقیقا از منم همینطوره…. با مگا و اونو هم تست کردم…فقط یه صفحه سفید که گهگاه پر نور و کم نور میشه،

  • سلام

    آیا میتوان ماژول LCD 3.2″ Wide عریض تمام رنگی به همراه تاچ اسکرین را به آردینو DUE وصل کرد؟

    اگر جواب مثبت است، لظفا” کامل راهنمایی کنید.

    خیلی ممنون

  • سلام، ممنون از اطلاعات مفیدتون، واقعا عالی هستش، من یه ال سی دی مدل TFT 3.5″ ILI9841 module uno 8bit دارم که نمیتونم راه اندازیش کنم، هم با برد مگا هم با برد اونو تست کردم، میشه کمکم کنید؟

    • با سلام
      ضمن تشکر از توجه شما، در این زمینه کافیست از کتابخانه مرتبط با تراشه LCD استفاده کنید.

  • سلام. از این کتابخانه و کد ها بدون تغییر میشه روی آردوینو مگا هم استفاده کرد یا نیاز به اصلاحاتی داره؟ روی آردوینو مگا من که کار نکرد و اصلا هیچ اتفاقی نیوفتاد انگار که اصلا lcd به جایی وصل نیست.

    • با سلام
      ضمن تشکر از توجه شما، اگر از شیلد ال سی دی استفاده میکنید، بدون هیچ تغییری میتوانید به برد آردوینو Mega2560 اتصال دهید؛ فقط به هنگام آپلود کدها باید نوع برد را درست انتخاب کنید. موارد دیگر را بررسی کنید.

  • مشکلی که من دارم اینه که هر چیزی که توی lcd نمایش میدم به جای کل صفحه، ۲ بار در هر نصف از صفحه نشان داده میشه. انگار که به جای یک صفحه ۲۴۰ در ۳۲۰، دو صفحه ۲۴۰ در ۱۶۰ دارم. مشکل از چیست؟

    • با سلام
      ضمن تشکر از توجه شما، لطفا بفرمایید چه پارامترهایی را میخواهید در نمایشگر، نمایش دهید.

        • با سلام مجدد
          دقت داشته باشید که شما شیلد را با برد آردوینو مگا ۲۵۶۰ راه اندازی کرده‌اید، بدون شک در اتصال پایه‌ها مشکل بوجود آمده است.

          • من اتصال پایه ها با برد رو مطابقت دادم. همه شون درستن. فقط من به پایه LCD_CD مشکوکم. چون همانطور که در عکس زیر مشاهده می کنید این پایه در LCD من وجود نداره و به جای اون LCD_RS هست. درسته؟ من باید چیکار کنم؟

            • با سلام مجدد
              لطفا دقت داشته باشید که Lcd_rs همان Lcd_ds، پیشنهاد میکنم یک بار برنامه را با برد UNO تست کنید و نتیجه را اعلام کنید.

  • درود
    فکر کنم شیلد من ایرادی داره. تازه خریدمش. فقط روی آردوینو Uno نصب کردم و راه انداختمش. ولی صفحه به دو بخش تقسیم شده و خروجی در دو بخش تکرار شده. یک عکس ازش گرفتم لینکش رو می گذارم. شما راهنمائیم کنید لطفاً. :
    http://s9.picofile.com/file/8307408100/20170925_160228.png
    مشکل از کجا می تونه باشه و چطور می تونم مشکلش رو رفع کنم ؟

    • سلام
      بعید به نظر می‌رسد که شیلد شما ایراد داشته باشد. این موضوع مربوط به برنامه و یا آدرس دهی پایه‌ها است. از دیگر کاربران که در این زمینه تجربه دارند، تقاضا دارم تا در رفع مشکل شما یاری کنند.

    • منم همین مشکل شما رو با آردوینو مگا دارم. توی نظرات قبلی نوشتم. من که نتونستم درستش کنم. اگه شما فهمیدی به ما هم راهش رو بگو

  • درود
    لطفاً، پروژه نقّاشی با شیلد LCD tft اندازه ۳٫۶ اینچ و آردوینو Mega 2560 و یا Uno رو بگذارید.
    همچنین، آموزش ساخت ساعت دیجیتال با ماژول ساعت دقیق DS3231 یا DS1307 با این شیلد ال سی دی و آردوینو Uno رو بگذارید.
    پیشاپیش سپاسم

    • با سلام
      ضمن تشکر از توجه شما، پیشنهاد جالبی مطرح کردید، البته همانطور که میدانید اولویت با آموزش‌هایی است که بیشترین تقاضا را دارند. در این مورد هم بررسی خواهیم کرد.

  • درود
    لطفاً آموزش ساخت ساعت دیجیتال با ماژول ساعت دقیق (DS3231 یا DS1307) و این LCD و آردوینو رو بگذارید. اگر قابلیت تنظیم ساعت و تاریخ و آلارم با لمس LCD رو داشته باشه و همینطور اینکه یک بازر برای صدای آلارم داشته باشه عالی میشه.
    سپاسم

    • با سلام
      از توجه شما سپاسگزارم، خب این آموزش درخواستی شما یک پروژه بسیار سنگین خواهد بود که نیاز به چندین پیش‌نیاز خواهد داشت. بررسی خواهیم کرد.

        • سلام
          تشکر می‌کنم بابت اطلاع رسانی، در زمینه تولید محتوای آموزشی و کمک به ارتقاء سطح دانش کاربران، هیچ محدودیتی وجود ندارد و اگر شما به این موضوع علاقمند هستید، میتوانید از قسمت همکاری با دیجی اسپارک، سروع کنید.

          • درود
            امیدوارم به اون حد بتونم برسم که آموزش هایی رو در بخش همکاری به دیجی اسپاک ارسال کنم. ولی متأسّفانه اینطور نیست. منظور بنده اینه که در صورتی که امکانش هست، آموزشی در خصوص درخواستم تهیه بفرمائید.
            بنده که هنوز حتّی در حدّ مبتدی هم نیستم.
            سپاسم

  • سلام خسته نباشید میشه این ال سی رو با ماژول اردوینو و ماژول شدت نور راه اندازی کرد ؟؟؟؟ کد نویسی به چه صورته باید تلفیق بشه

    • با سلام
      ضمن تشکر از توجه شما، بله قابل اجرا است. اینکه سنسور چه کاربردی داشته باشد و روی ال سی دی چه چیزی نمایش داده شود و یا اینکه پارامترهای دریافتی چه کار کنند بسته به پروژه و برنامه ای دارد که نوشته می‌شود. در خصوص تلفیق کدها میتوان همگی را در یک Skech اجرا کرد.

  • با سلام وخسته نباشید
    چند تا سوال داشتم ۱- شماره چیپ ال سی دی رو از کجا بذست بیاریم ۲-پروژه ای ذر باره نمایش عکس با این ال سی دی و اردوینو مگا قرار بدین
    ممنون وسپاس فراوان

  • سلام خسته نباشید من برنامه رو به اردینو می زنم اما lcd صفحه ی سفید نشون میده هر کدی رو میزنم صفحه سفیده

    • با سلام
      ضمن تشکر از توجه شما، در این خصوص بنده تجربه عملی ندارم و باید یک آموزش مجزا نوشته شود. تا قبل از آن از دیگر کاربران که در این زمینه تخصص کافی دارند، تقاضا دارم در این بحث شرکت کنند.

  • سلام به استاد گرامی:
    میشه در مورد راه اندازی این شیلد با سنسور دما و رطوبت( DHT11) روی اردینو مطالبی را ارائه کنید . کتابخانه مربوطه و دستورات آن. نحوه سیم بندی آن. متشکرم

  • با سلام
    آیا می توانیم با این شیلد و آردوینو سیستم عاملی طراحی کنیم که بسیار ساده و مقدماتی باشد ؟
    با تشکر

  • با سلام جناب آقای اروند طباطبایی
    شما برای یاد گیری زبان برنامه نویسی در آردوینو چه چیزی را پیشنهاد می کنید؟
    با تشکر

    • با سلام و تشکر از شما
      پیشنهاد بنده شروع به صورت عملی است. یکی از پروژه‌های دیجی اسپارک را انتخاب کنید، ترجیها پروژه‌های پکیج سنسور، سپس هرجایی راجع به هر خطی از برنامه که سوال داشتید مطرح کنید.

  • با سلام چند سؤال داشتم:
    الف)درباره آموزش فوق در آردوینو:
    ۱- نمایشگر فوق امکان نوشتن حروف فارسی را دارد؟
    ۲-آیا امکان نصب سنسور روی شیلد وجود دارد؟
    ۳-آیا درایو این شیلد ها با هم متفاوت اند ؟
    آیا امکان تعویض صفحه نمایش روی شیلد وجود دارد؟
    ب)در مورد رزبری پای:
    ۱-آیا خروجی صدا در رزبری را می توان به تلوزیون هایی که از HDMI پشتیبانی نمی کنند متصل نمود؟
    ۲-آیا می توان صفحه نمایش هایی که با مبدل ودرایو های خاصی وجود دارند که ورودی HDMI دارند را به رزبری وصل نمود؟

    • با سلام
      کاربر گرامی لطفا فقط سوالات مرتبط با همین پست را مطرح کنید.
      ۱- باید کتابخانه مربوطه این قابلیت را داشته باشد.
      ۲- در صورت استفاده از برد mega2560 بله
      ۳- بله
      ۴- مقرون به صرفه نیست.

  • سلام .وقت بخیر . من تمام مراحل رو با آردوینو اونو انجام دادم اما این ارور رو میده
    Arduino: 1.8.7 (Windows 8.1), Board: “Arduino/Genuino Uno”

    SdRaw_320x240:5:18: error: UTFT.h: No such file or directory

    compilation terminated.

    exit status 1
    UTFT.h: No such file or directory

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    لطفا راهنمایی کنید

    • با سلام
      این ارور مربوط به کتابخانه UTFT.h می‌باشد. از نصب کتابخانه اطمینان حاصل کرده و در صورت سوال از همین طریق اقدام فرمایید.

  • باعرض سلام و خسته نباشید.
    بنده این ال سی دی رو خریداری کردم در ابتدا مشکل صفحه سفید رو داشتم که بعد از مطالعات و بررسی فهمیدم ای دی درایور مربوط به هر ال سی دی متفاوته و توسط کد میشه tft.begin( tft.readID() ); بدون نیاز به فهمیدن نوع درایور این مشکل رو برطرف کرد.
    اما در راه اندازی تاچ این ال سی دی مشکلی که دارم اینه که انگار نصف صفحه تاچش کار میکنه و تو نمایش مکان تاچ به صورت اینه ای عمل میکنه…
    ممنون میشم اگه از دوستان کسی بتونه راهنماییم کنه.

    • با سلام
      در این مورد از چه کتابخانه ای استفاده شده است، توضیح دهید تا بررسی گردد.
      همچنین از دیگر کاربرانی که در این خصوص تجربه ای دارند، تقاضا میشود در بحث شرکت کنند.

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

    • با سلام
      با توجه به اینکه ورژن های مختلفی از ۴ سال پیش تا الان برای این ال سی دی منتشر شده است، پیشنهاد می‌شود کتابخانه را آپدیت و مجدد تست نمایید.

  • سلام وخسته نباشید ممنون از پست خوبتان
    یه سوال داشتم ایا میشه همین نمایشگر رو با nod mcu راه اندازی کرد
    اگه میشه لطفا توضیح بدین

    • با سلام
      خیر این ال سی دی به صورت شیلد بوده و فقط مناسب آردوینو UNO و Mega2560 می‌باشد.

  • ببخشید تو پشت شیلد من خازنی که گفتید و اون ترانزیستورو مقاومتا نیست فقط ۲ تا آیسی و سوکت sd کارت

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

  • سلام ممنون بابت آموزشتون
    یک مشکلی دارم اونم این هست که متن ها به صورت برعکس (آیینه وار) نمایش داده میشن!!
    اگر ممکن هست راهنمایی بفرمایید
    تشکر

  • سلام
    فکر نمیکنم اگه سوکت sd card به سوکت آردوینو بچسبه تاخیر چندانی در عمل کرد lcd ایجاد کند
    چون هر چقدر هم که این نکته را در نظر داشته باشیم باز هم ناخود آگاه این پین های tft به صورت کامل داخل هدر پین های آردوینو میروند

    • سپاس از همراهی شما کاربر گرامی
      از اینکه نظر خود را با دیگر کاربران به اشتراک میگذارید، صمیمانه سپاسگزاریم.