راهنمای استفاده از کتابخانه touch قسمت 2 ( راه اندازی)
لینک اولین قسمت راهنمای استفاده
با درود مجدد .
در قسمت قبل توضیح دادم که وقتی کتابخانه رو خریداری میکنید چه فایلهایی رو دریافت خواهید کرد و هر کدام از اونها مربوط به چه چیزی هست .
در این قسمت قصد دارم در مورد راه اندازی و اجرای کتابخانه روی میکرو کنترلر stm32 توضیح بدم .
از اونجا که مبحث تاچ با LCD پیوند خورده و lcd های مختلف با پروتکل های ارتباطی مختلفی در بازار وجود دارد بحث ارئه یک مثال واحد برای راه اندازی تاچ کمی حالت چالشی دارد .
با توجه به این موضوع 3 راه برای راه اندازی وجود دارد .
**************************************************
1 - راه اندازی با استفاده از فایل هگز ارائه شده در صفحه معرفی ( راه حل آسان)
2 - راه اندازی با استفاده از پروژه (مثال ) همراه کتابخانه ( راه حل کمی مشکلتر)
3 - راه اندازی با استفاده از ساختن یک پروزه و اضافه کردن فایلهای کتابخانه و GUI به آن( راه حل طولانی ) که در واقع میشه همون مطالب مربوط به راهنمای استفاده از کتابخانه که در آینده منتشر خواهم کرد .( فعلا با این روش کاری نداریم )
****************************************************
****************************************************
****************************************************
1- راه اندازی با استفاده از فایل هگز( روش آسان) :
اگر دقیقا این lcd را در اختیار دارید ( اینجا ) میتونید با استفاده از فایل هگز و توضیحاتی که به همراهش وجود داره اون رو راه اندازی کنید و عملکردش رو مشاهده نمایید .
در این روش پایه های lcd وtouch رو همسان با توضیحات داخل فایل ، به میکرو کنترلر متصل میکنید و فایل هگز را روی میکرو کنترلر بارگزاری میکنید و تمام .
عملکرد برنامه را خواهید دید .
دانلود فایل هگز و راهنما
**************************************************
****************************************************
2 - راه اندازی با استفاده از مثال همراه کتابخانه :
این مثال یک پروژه ست که با نرم افزار True Studio تولید شده آما فاقد کتابخانه ای برای lcd هست و شما باید خودتان یک کتابخانه lcd را اضافه نمایید .
این شامل 2 حالت میشود.
****************************************************
1 - اضافه کردن کتابخانه lcd که خودم از اون استفاده کردم :
برای تهیه این کتابخانه و اطلاعات در مورد نوع lcd و نحوه ی راه اندازی میتوانید به ( اینجا ) مراجعه کنید . ( پیشنهاد میشود ابتدا کتابخانه را روی میکرو کنترلر راه اندازی نمایید سپس آنرا به مثال تاچ اضافه کنید).
بعد از تهیه فقط کافیست پوشه کتابخانه lcd رو به پروزه اضافه نمایید تنظیمات مربوط به lcd را انجام بدید و پروژه را کمپایل کنید .
چگونگی اتصال پایه های lcd و تاچ به میکرو کنترل در فایل cube MX همراه پروژه وجود دارد
.
نمایی از چینش پایه ها را در تصویر زیر میبینید.
در تصویر زیر پایه های CS , RS . WR ,RST و D0…15 مربوط به lcd هستند.
و پایه های PEN_IRQ , T_CS و SPI1-MISO , SPI1-MOSI, SPI1-SCK مربوط به تاچ هستند .
***********************************************
2 – راه اندازی با یک کتابخانه دلخواه برای LCD :
مطالب مربوط به این روش در واقع همان مطالبی هست که مربوط به راهنمای استفاده هست و به دلیل گستردگی نیاز به چند قسمت مطلب دارد .
با توجه به این موضوع که به دلیل طولانی بودن نمیشه تمام مطالب رو اینجا توضیح بدهم ،بنابر این مطالب اصلی و کلیدی را در این قسمت توضیح میدم و لازم است که بقیه جزئیات رو شما باید با نگاه کردن به کدهای مثال همراه متوجه بشوید. .
برای اینکار لطفا مراحل زیر رو دنبال کنید .
1 - ابتدا با استفاده از فایل CUBE MX همراه پروزه تنظیمات لازم را برای پایه های تاچ و LCD انجام دهید .
یا حتی روش بهتر این هست که فایل Cube MX همراه پروژه رو برای استفاده از LCD خودتان ویرایش کنید و پروژه رو دوباره بسازید .
( پایه های مربوط به تاچ در تصویر بالا توضیح داده شده است )
توجه : SPI سخت افزاری با توابع هال به درستی کار نمیکند . حداقل در نسخه CUBE MX مورد استفاد ه من چنین است . پس بهتر است که در تنظیمات توابع مورد استفاده SPI را به جای HAL روی LL تنظیم نمایید.
2- ابتدا کتابخانه ی lcd مورد نظر را به پروژه اضافه نمایید و تتنظیمات مربوطه را انجام دهید. ( بهتر است قبل از استفاده از کتابخانه LCD آنرا تست کنید تا از عملکرد درست آن مطمئن شوید)
3 - در مرحله بعد کتابخانه تاچ و GUI همراه تاچ ( توی مثال همراه پروژه وجود دارد ) را به پروژه اضافه نمایید و مسیر پوشه ها را به کمپایلر معرفی نمایید .
توجه : برای اضافه کردن کتابخانه تاچ و gui به پروژه لطفا از فایل main.c کمک بگیرید.
4 – حالا نوبت به تنظیمات کتابخانه تاچ و اتصال کتابخانه LCD (یا به عبارت بهتر معرفی توابع مورد نیاز،) به کتابخانه تاچ میرسد .
****************************************************
4-1 - تنظیمات قسمت درایور xpt2046 :
از پوشه Xpt2046_Driver فایل xpt2046_conf.h را باز کنید که محتویاتش در تصویر زیر نمایان هست .
ماکروی XPT2046_COR_TYPE ( خط 22) :
نوع میکرو کنترلر را انتخاب کنید .
ماکروی XPT2046_SPI_UNIT ( خط 27):
مشخص شده از کدام SPI استفاده شده است ( نام روبه روی این ماکرو از استاندارد نام گذاری استاندارد پریفرالها (cmsis )
استفاده شده است .
ماکروی XPT2046_CPU_Fخط(32) :
فرکانس هسته را مشخص میکند.
ماکروی XPT2046_CS_PORT : پورت مورد استفاده پایه CS را مشخص میکند ( برا ساس نام گذاری cmsis )
ماکروی XPT2046_CS_PIN : شماره پین مورد استفاده پایه CS را مشخص میکند( 0 تا 15) .
تنظیمات درایور در اینجا تمام شده. حال نوبت به تنظیمات تاچ میرسد.
****************************************************
4-2- تنظیمات قسمت touch :
از پوشه touch فایل touch_conf.h را باز کنید . محتویات این فایل را در تصویر زیر میبینید.
ماکروی TOUCH_ORIGIN_THAN_LCDORIGIN_FOR_CALIB ( خط 20 ) :
این ماکرو زاویه بین مبداlcd و مبدا touch را به کتابخانه معرفی میکند .
برای تعیین این زاویه لطفا به تصویر زیر توجه کنید .
در تصویر زیر جهت چرخش در جهت عقربه های ساعت هست . و از مبدا lcd شروع میشود .
و جایگاه مبدا تاچ زاویه رو مشخص خواهد کرد .
به طور مثال در تصویر بالا زاویه مبدا تاچ میشه 180 درجه .
ماکروی TOUCH_WIDTH ( خط 38):
این ماکرو تعداد پیکسلهای عرض( ستون ها ) lcd را مشخص میکند.
ماکروی TOUCH_HEIGHT( خط 39) :
این ماکرو تعداد پیکسلهای ارتفاع( سطرهای) lcd را مشخص میکند.
توجه : دو ماکرو بالا را مطابق با ابعاد Lcd مورد استفاده خودتان تغییر دهید.
در اینجا تنظیمات قسمت تاچ به پایان رسید
****************************************************
4-3 - اتصال کتابخانه lcd به کتابخانه touch :
از همان پوشه touch لطفا فایل touch_link.h را باز کنید .
محتویات این فایل را در تصویر زیر میبینید .
توضیح:
در این فایل است که ما توابع مورد نیاز در ارتباط با lcd رابه کتابخانه touch معرفی و کتابخانه lcd را به کتابخانه touch متصل خواهیم کرد
ابتدا:
خطوط 22 و23 ( کادر قرمز) را به صورت کامنت در بیاورید و به جای آن فایلهای مربوط به کتابخانه lcd خودتان را پیوست کنید .
بعد :
در بخش LCD Func ( کادر سبز)ماکروهایی را میبینید که با استفاده از آنها توابعی از کتابخانه lcd را که کتابخانه/touch از آنها استفاده میکند را به کتابخانه touch معرفی میکنیم.
شما باید نامهای روبه روی این ماکروها را پاک کنید و به جای آن اسم تابع مورد نظر از کتابخانه lcd خوددتان را به همراه پرانتز( باید به فرم تابع باشد) را اضافه نمایید .
این ماکروها رو در زیر توضیح میدم .
ماکروی touch_alcd_clear() ( خط32) :
تابع پاک کردن صفحه نمایش را معرفی میکند .
ماکروی touch_get_lcd_width() ( خط 33):
تابعی که تعداد پیکسلهای عرض ( ستونها ) lcd را برمیگرداند ، را به کتابخانه معرفی میکند .
ماکروی touch_get_lcd_height()(خط34) :
تابعی که تعداد پیکسلهای ارتفاع ( سطرها) lcd را برمیگرداند ، را به کتابخانه معرفی میکند .
توجه : در کتابخانه lcd که خودم ارئه کردم از آنجا که قابلیت چرخش صفحه نمایش را دارد . توابعی که به دو ماکروی بالا معرفی شده اند ،
بر اساس زاویه چرخش lcd ، مقادیر متفاوتی را بر میگردانند.
اگر کتابخانLcd مورد استفاده شما ، قابلیت چرخش صفحه را ندارد ، به جای تابع ، تعداد پیکسلهای ارتفاع و عرض Lcd را به ماکروهای بالا معرفی نمایید .
اما به خاطر داشته باشید درهنگام اجرای gui دگمه چرخش را لمس نکنید.
ماکروی touch_draw_request_point(color,x1,y1,x2,y2) (خط37) و touch_draw_accepted_point(color,x1,y1,x2,y2)(خط38) :
توضیحات این 2 ماکرو شبیه هم هست .
زمانی که کالیبراسیون اجرا میشود ، کتابخانه یک نقطه را در Lcd نمایش میدهد و از کاربر میخواهد که آن نقطه را لمس کند.
من برای اینکار تابع رسم مسطیل توخالی را به ماکروی touch_draw_request_point معرفی کردم .
هنگامی که کاربر نقطه مورد نظر را لمس کرد کتابخانه دوباره آنرا با یک رنگ متفاوت نمایش میدهد .
من برای این حالت تابع رسم مستطیل تو پر را به ماکروی touch_draw_accepted_point معرفی کردم .
این 2 ماکرو متغییر هایی دارند که توضیح آنها به شرح زیر هست :
Color : کد رنگ
X1 = شمار ستون نفطه گوشه بالا چپ مستطیل
Y1 : شماره سطر نقطه گوشه بالا سمت چپ مستطیل
X2 = شمار ستون نفطه گوشه پایین راست مستطیل
Y2 : شماره سطر نقطه گوشه پایین راست مستطیل
هنگامی که تابع مورد نظر را به ماکرو معرفی میکنید نام این متغیر ها رو با توجه به نقش اونها ، در در جای مناسب در تابع قرار دهید به همراه پارامترهای اضافه ای که تابع خودتان ممکن است داشته باشد . ( مثلا 2 که در تابع روبه روی یکی از ماکروها آورده شده است .).
ماکروی TOUCH_REQUEST_POINT_COLOR(خط39 ) :
رنگ نقطه مورد درخواست رو در هنگام کالیبراسیون به کتابخانه معرفی میکند و روبه روی آن میتوانید کد رنگ مورد نظر خودتانس را بنویسید .
ماکروی TOUCH_ACCEPTED_POINT_COLOR(خط40):
رنگ نقطه مورد درخواست رو بعد از لمس توسط کاربر در هنگام کالیبراسیون به کتابخانه معرفی میکند و شما میتوانید کد رنگ مورد نظر خودتان را روبه روی آن بنویسید .
در قسمت gui هم از توابع مربوط به کتابخانه lcd مانند رسم مستطیل ، نوشتن متن و غیره استفاده شده است . نحوه ی مختصات دهی توابع در قسمت gui هم شبیه ماکروهاای بالا است .
یشنهاد میکنم ابتدا پروژه را کمپایل کنید . و سپس هر تابعی را که در قسمت gui ناشناخته تشخیص داده شد را به صورت ماکرو ( دیفاین ) (شبیه کاری که در بالا توضیح دادم ) برای کمپایلر معرفی نمایید .
در فایل bottom_conf.h ماکروهایی وجود دارد که کد رنگ دگمه های GUI بوسیله آنها مشخص شده است .
در مقابل انها کدهای رنگ مورد نظر خودتان را بر طبق کتابخانه lcd مورد استفاده معرفی نمایید .
البته میتوانید قسمت GUI را حذف کنید که در این صورت فقط قسمت کالیبراسیون اجرا خواهد شد .
اگر تمام مراحل بالا رو به درستی انجام داده باشید پس موفق شدید کتابخانه lcd خودتان را به کتابخانه touch متصل نمایید و تنظیمات لازم را انجام دهید .
بعد از کمپایل و بارگزاری کد روی میکروکنترلر حداقل قسمت کالیبراسیون اجرا خواهد شد .و تصاویری که در قسمت معرفی نمایش داده شد را روی lcd مشاهده خواهید کرد .
امیدوارم توانسته باشید با استفاده از این مطالب کتابخانه touch را راه اندازی کنید .
موفق و پیروز باشید .
پستهای مرتبط :