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

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

نوشته شده توسط معین صابری

نمایشگرها یکی از ابزارهای بسیار مهم جهت نمایش خروجی به کاربر به شمار می روند. نتایج محاسبات، پارامترهای اندازه گیری شده، زمان و…. همگی بر روی نمایشگر و جهت اعلان وضعیت به وی، نمایش داده می شوند. حتی در برخی از نمایشگرها، نظیر نمایشگرهای لمسی، می توان علاوه بر نمایش خروجی، از کاربر ورودی نیز دریافت نمود. در این آموزش به بررسی ککتابخانه MCUFRIEND_kbv.h جهت راه اندازی و کار با شیلد نمایشگر ۲٫۴ TFT مخصوص آردویینو می پردازیم. این شیلد به سادگی و بدون نیاز به مدار جانبی بر روی آردویینو قرار می گیرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 


شیلد نمایشگر TFT مخصوص آردوینو


شیلد نمایشگر TFT آردویینو مخصوص آردویینو، به سادگی و بدون نیاز به هیچ سیم کشی اضافه، بر روی بردهای آردویینو UNO ، MEGA و MEGA+WIFI قرار می گیرد. این شیلد قادر به نمایش ماتن با فونت های مختلف، نمایش عکس و دریافت ورودی به صورت تاچ از کابر است. از دیگر مزیت های این نمایشگر، قرارگیری ساده و آسان متناسب با پین های آردوینو و بدون نیاز به هیج سیم اضافه جهت راه اندازی است.

MCUFRIEND_kbv.h library analysis

 

از دیگر مزیت های این شیلد، وجود سوکت کارت SD بر روی آن است. به کمک این سوکت، می توانید عکس ها را جهت نمایش در کارت SD ذخیره کنید. همچنین به کمک این قابلیت، می توانید به ذخیره سازی داده های مختلف در کارت SD بپردازید. در ادامه به نحوه دانلود و نصب این کتابخانه و توابع کاربردی آن خواهیم پرداخت.


نحوه نصب کتابخانه MCUFRIEND_kbv


برای نصب کتابخانه شیلد نمایشگر در آردویینو، ابتدا در نرم افزار آردویینو، بر روی منوی Tools و سپس Manage Libraries مطابق تصویر زیر، کلیک کنید.

MCUFRIEND_kbv.h library analysis

 

سپس در منوی ظاهر شده، در قسمت کادر جستجو، عبارت MCUFRIEND_kbv را وارد کرده و کتابخانه MCUFRIEND_kbv.h مربوط به شیلد ال سی دی را مطابق تصویر زیر، نصب کنید.

MCUFRIEND_kbv.h library analysis

 

پس از نصب کتابخانه، نوبت به استفاده از آن در پروژه می رسد. بنابراین، در قسمت بعدی، به بررسی توابع مهم و کاربردی این کتابخانه پرداخته و پس از آن، به ارائه مثالی خواهیم پرداخت.


الزامات فنی و بردهای مورد پشتیبانی


شیلد نمایشگر TFT 2.4، قابلیت استفاده و قرارگیری آسان بر روی بردهای آردویینو UNO و MEGA و MEGA+WIFI فراهم می آورد. از طرفی دیگر، کتابخانه MCUFRIEND_kbv برای هر دو برد یکسان بوده و بدون نیاز به تغییری، قابل استفاده است.  همچنین، با توجه به سوکت کارت SD قرار گرفته بر روی این نمایشگر، شما می توانید به سادگی و با بهره گیری از کتابخانه SD، داده های مورد نظر خود را در کارت حافظه ذخیره کنید. همچنین به کمک کتابخانه SD، قادر خواهید بود تا داده های ذخیره شده در کارت حافظه را بخوانید.

برای استفاده از کارت SD در این نمایشگر برای برد آردویینو UNO، به سادگی می توانید از کتابخانه SD استفاده نمایید. اما از آنجاییکه در برد آردویینو مگا و مگاوای فای، ترتیب پایه ها کمی متفاوت می شود، لازم است تا از کتابخانه جایگزین SD و مخصوص برد مگا، استفاده نمایید. برای این منظور، می بایست از کتابخانه شرکت adafruit به جای کتابخانه SD آردویینو، استفاده کنید. به این منظور، کتابخانه SD آردویینو را در جایی ذخیره کرده و این کتابخانه را جایگزین آن کنید.

 


توابع ترسیم اشکال در MCUFRIEND_kbv


در این قسمت به بررسی توابع مهم و کاربردی جهت ترسیم اشکال از کتابخانه شیلد TFT مخصوص آردوینو می پردازیم. در نظر داشته باشید که در این توابع، ورودی ها از چپ به راست، شماره ۱ به بعد را به خود اختصاص می دهند. به عبارت دیگر، اولین ورودی از سمت چپ ورودی شماره یک و پس از آن ورودی شماره ۲ و به همین ترتیب ورودی ها شماره بندی خواهند شد.

توابع کتابخانه MCUFRIEND_kbv.h در آردوینو - دیجی اسپارک

 

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

تغییر رنگ ها در نمایشگر LCD گرافیکی TFT آردوینو - دیجی اسپارک

 


توابع نمایش متن در MCUFRIEND_kbv


در قسمت قبل به بررسی توابع ترسیم خط و اشکال هندسی پرداختیم. در این قسمت به بررسی توابع نمایش متن در این نمایشگر می پردازیم. از آنجاییکه کلاس MCUFRIEND_kbv از کلاس Print مشتق می شود، بنابراین کلیه توابع(متد) این کلاس نظیر print، println و…. در کلاس نمایشگر TFT، قابل استفاده خواهد بود. در ضمن این موضوع، باید توجه داشت که مطابق قسمت قبل، ترتیب ورودی ها از چپ به راست و با شماره یک، به طوریکه اولین ورودی سمت چپ ورودی شماره یک، پس از آن شماره دو و…. آغاز می شود.

توابع نمایش متن در کتابخانه MCUFRIEND_kbv.h آردوینو - دیجی اسپارک

 

در رابطه با تابع println، دقت داشته باشید که تمام ورودی ها و عملکرد توابع print در این تابع نیز صادق است. به عبارت دیگر، تنها تفاوت تابع println اینست که پس از چاپ خروجی، یک خط مکان نما را به پایین هدایت می کند. در قسمت بعدی، یک نمونه برنامه جهت کار با این نمایشگر را معرفی می کنیم.


نحوه اجرای یک نمونه برنامه


در این قسمت، جهت آشنایی هر چه بیشتر با کتابخانه MCUFRIEND_kbv.h، به اجرای یک نمونه برنامه برای برد آردویینو UNO می پردازیم. برنامه زیر، زمان را از تابع millis دریافت کرده و بر روی نمایشگر، نشان می دهد.

#include <MCUFRIEND_kbv.h>   //اضافه کردن کتابخانه نمایشگر
MCUFRIEND_kbv tft(A3, A2, A1, A0, A4);   //ایجاد یک شی از کتابخانه MUCFRIEND
//ورودی های تابع فوق از چپ به راست عبارتند از:
//CS(TFT CHIP SELECT), RS(REGISTER SELECT), WR(WRITE DATA), RD(READ DATA), RST(RESET)
void setup() {
  uint16_t Identifier = tft.readID();  //خواندن شناسه مربوط به درایور جهت راه اندازی
  if (Identifier == 0xEFEF) Identifier = 0x9341;
  tft.begin(Identifier);
  tft.setTextSize(2);  //تنظیم اندازه فونت
  tft.setCursor(0, 0);  //تنظیم موقعیت
  tft.fillScreen(TFT_BLACK);   //مشکی کردن صفحه
  //*****************************************
}


void loop() {
  tft.setCursor(0, 0);  //تنظیم موقعیت
  tft.print(millis()/1000);  //نمایش زمان با تابع MILLIS
  delay(1000);
  tft.fillScreen(TFT_BLACK);   //پاک کردن صفحه(مشکی کردن) برای نمایش داده های جدید
}

 


وسایل مورد نیاز


برد آردوینو UNO و قطعات جانبی

برد آردوینو MEGA 

برد آردویینو MEGA+WIFI

شیلد نمایشگر TFT

 


جمع بندی


در این آموزش به بررسی یکی از کتابخانه ای کاربردی در راه اندازی شیلد نمایشگر TFT مخصوص آردویینو پرداختیم. شیلد نمایشگر TFT قادر است تا بدون نیاز به سیم کشی اضافه، به سادگی بر روی بردهای آردویینو UNO ،MEGA و MEGA+WIFI قرار بگیرد. از دیگر قابلیت های کلیدی این شیلد، وجود سوکت کارت SD بر روی آن بوده که می توان عکس های ذخیره شده در کارت حافظه را نیز در صفحه نمایشگر نشان داد. همچنین، به کمک این سوکت، می توان داده ها را در کارت SD ذخیره نمود. در این آموزش ضمن بررسی کتابخانه مناسب راه اندازی این شیلد، به بررسی توابع  آن پرداخته و در نهایت با ارائه مثالی، کاربرد توابع معرفی شده را مورد بررسی قرار دادیم.

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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

۱۳ دیدگاه

    • سلام
      بله، برای برد آردوینو MEGA هم قابل استفاده است. برای اطمینان می توانید در منوی BOARD آردوینو، برد مد نظر را انتخاب کرده و کدهای را برای برد مد نظر کامپایل کنید.

      • حافظه uno برای پروژه ای که کار میکنم کافی نمی باشد از طرفی هم قیمت آردوینو mega بالاست و همچنین تداد پایه های بلا استفاده نیز زیاد است. قبلا برای این دست مشکلات میکروهای AVR را توسط آردوینو پروگرام می کردم. درواقع با میکرو های موجود آردوینوی مورد نظر خودم رو می ساختم، اما اینبار با مشکل روبه رو شدم. به نظر میرسد کتابخانه فوق فقط برد های آردوینوی موجود را پشتیبانی می کند.
        آیا شما راه حلی برای این مشکل در نظر دارید یا خیر؟

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

          • ممنون از شما. حتما امتحان میکنم.
            راه حل دیگر تغیر رجیستر های کتابخانه متناسب با ATmega64 می باشد. که زمان بر است.

  • سلام میشه از این کتابخانه و شیلد برای سایر برد های اردوینو به غیر از uno و mega استفاده کرد؟ در حین کامپایل کردن برای ATmega64 ارور میده؟ حدث میزنم فقط کتابخانه فقط برای آردوینو uno و mega هستش!!!

      • برنامه برای تمام برد های آردوینو موجود کامپایل میشه. اما برای میکروهای AVR که در برد های آردوینو استفاده نشده باشند خطا میده.

        • طبیعی است. چراکه هسته نرم افزاری آردوینو برای آن دسته از بردها توسعه نیافته است.

  • سلام، جهت استفاده از کتابخانه mcufriend_kbv برای نمایشگر های شیلد متفاوت که درایور متفاوت دارند چه کاری باید انجام داد؟
    نمایشگر مورد استفاده من tft sheild 2.8 inch با درایور st7789 هست

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