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

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

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

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

 


مزایا و نقش TVout.h در اجرای پروژه ها


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

یکی از مهم ترین ابزارهای برنامه نویسی که در زبان c نیز از آن پشتیبانی می شود، کتابخانه هاست. ابزار کتابخانه به قدری کاربردی است که تقریبا در تمام پروژه های بزرگ، از این ابزار استفاده می شود. به طور کلی، کتابخانه مجموعه ای از توابع تعریف می شود که جهت جلوگیری از مجدد نویسی آن ها در کدهای برنامه، در یک فایل به نام کتابخانه قرار می گیرد. کتابخانه ها غالبا از دو فایل، یکی با پسوند c. در زبان سی و یا ++c و دیگیری با پسوند h. تشکیل می شود. فایل h. لیست کلیه توابع به همراه نوع ورودی ها را در خود ذخیره می نماید. فایل c. برای زبان سی و cpp. برای زبان ++c که شامل آردویینو نیز می شود، کدهای اصلی و اجرایی را در خود ذخیره می نماید.

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

#include <x.h>

 


نحوه نصب کتابخانه در آردوینو


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

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

در ادامه، مطابق تصویر زیر، با کلیک بر روی گزینه Install، کتابخانه نصب خواهد شد.

 


پشتیبانی کتابخانه TVout.h از بردهای آردوینو


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

آردویینو مگا

آردویینو میکرو

آردویینو UNO

آردویینو لئوناردو

در رابطه با این کتابخانه، دو پایه از آردویینو جهت اتصال تصویر و یک پایه جهت صدا، نیاز می شود. جدول زیر آرایش پایه های صدا و تصویر را  در بردهای مختلف، نمایش می دهد.

این کتابخانه سیگنال sync تصویر را بر روی پایه OCR1A و صدا را بر روی پایه OCR2A(در آردویینو لئوناردو صدا بر روی پایه OCR0A) ایجاد می نماید. بنابراین، برای استفاده از این کتابخانه، دو تایمر ۱ و ۲(در آردویینو لئوناردو دو تایمر ۰ و ۱) رزرو هستند. از این جهت دقت نظر لازم را در نظر داشته باشید.

 


توابع نمایش متن در صفحه تلویزیون


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

توابع نمایش متن در صفحه تلویزیون با کتابخانه TVout.h - دیجی اسپارک

 


توابع نمایش شکل و تصویر در تلویزیون


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

توابع نمایش شکل و تصویر در تلویزیون با کتابخانه TVout.h- دیجی اسپارک

 


شماتیک و اتصالات سخت افزاری


برای اتصال آردویینو به تلویزیون، می بایست از کابل AV نیز استفاده کنید. در زیر نحوه اتصال پایه های آردویینو جهت ایجاد تصویر را مشاهده می کنید.

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

 


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


پس از معرفی کتابخانه TV، بررسی توابع و الزامات فنی آن، نوبت به اجرای یک نمونه برنامه می رسد. با توجه به اینکه این کتابخانه به صورت class تعریف شده، بنابراین در ابتدا می بایست یک نمونه از کلاس TV ساخته و سپس برنامه مورد نظر را اجرا کنیم. در زیر یک نمونه کد که متنی را در خروجی نمایش می دهد، مشاهده می نمایید.

#include <TVout.h> //کتابخانه تلویزیون
#include <fontALL.h> //کتابخانه فونت
TVout TV;  //ایجاد یک نوع از کلاس TV
void setup() {
  TV.begin(PAL);  //انتخاب مد ارتباطی به صورت PAL و یا NTSC
  delay(1000);
  TV.select_font(font6x8); //انتخاب فونت مورد نظر
  TV.clear_screen();  //پاک کردن صفحه تلویزیون
}

void loop() {
  char msg[]="salam";
  TV.print(10, 10, msg);  //نمایش پیام در صفحه تلویزیون و در موقعیت X=10 وY=10
}

 


اشکالات متداول کتابخانه TVout


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

no matching function for call to 'TVout::print(int, int, String&)

دلیل این مشکل، استفاده از نوع داده String  به جای char [] به منظور نمایش متن در تابع TV.printاست. بدین ترتیب برای نمایش متن، می بایست متن خود را به جای تعریف به صورت String s، به صورت char s []، تعریف کنید. به عبارت دیگر، فرض کنید درون متغیر s، عبارت salam به صورت زیر تعریف شده است.

String s="salam";

برای نمایش صحیح، می بایست متغیر s به صورت زیر تعریف شود.

char s[]={"salam"};

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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

۱۰ دیدگاه

    • سلام
      لطفا متن کامل ارور را در کامنت بعدی قرار دهید تا مورد بررسی شود. برای این کار می توانید با کلیک بر روی دکمه copy messages در پایین نزم افزار آردوینو، خطاها را کپی کنید.

      • سلام
        متاسفانه کتابخانه کامل دانلود نشده، شما می بایست آن را به صورت دستی دانلود کنید، برای این کار، لینک زیر را باز کنید:
        لینک کتابخانه، کلیک کنید
        پس از باز کردن لینک فوق، در قسمت code گزینه download as zip را انتخاب کرده و کتابخانه را دانلود کنید. سپس در نرم افزار آردوینو، روی گزینه sketch گزینه add zip file library را انتخاب و فایل زیپ دانلود شده را انتخاب کنید. مورد را تست و بررسی کرده و نتیجه را لطفا در کامنت بعدی اعلام کنید. این کار سبب می شود تا دیگران هم در آینده مشکل احتمالی را برطرف شده بدانند.
        در آخرا از تاخیر در پاسخگویی عذرخواهی می کنم

  • سلام
    بعد از نصب mega 32 در زمان Compile کردن فایل خطای زیر داده میشود :
    Warning: Board arduino:avr:mega32-1 doesn’t define a ‘build.board’ preference. Auto-set to: AVR_MEGA32-1
    Warning: Board arduino:avr:mega32-16 doesn’t define a ‘build.board’ preference. Auto-set to: AVR_MEGA32-16
    Warning: Board arduino:avr:mega32-8 doesn’t define a ‘build.board’ preference. Auto-set to: AVR_MEGA32-8

    • موارد فوق WARNING بوده و خطا نیست! تلاش کنید برنامه را روی برد اردوینو آپلود کنید و اگر آپلود نشد در کامنت بعد مورد را اعلام کنید.

  • سلام خسته نباشید علت ارور font.h را میشود کامل توضیح دهید من یک هفته یا بیشتر اسیرش شدم