-
 

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت12 (قسمت پایانی)

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : خلاصه فوت های کوزه گری

 

با سلام و درود به شما.

 

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

 

****************************************

در قسمت 8:  لینک

*****************************************

فوت کوزه گری 1 :

حتما برای منوی اصلی ( جدای از آیتمهای منو ،) نامی انتخاب کنید که در سربرگ نمایش داده شود .( مانند خط 13 )

******************

فوت کوزه گری 2 :

از ساختار پلکانی برای تعریف نام آیتمها استفاده کنید .

******************

فوت کوزه گری 4 :

توابع مربوطه آیتمها را به ترتیب بر حسب پله ها بنویسد .

******************

فوت کوزه گری 5:

در ابتدای هر دسته از توابع  تعداد اعضای آرایه مربوطه را به صورت دیفاین و با قرار دادن یک نام مناسب تعریف کنید .

******************

 

 

****************************************

در قسمت 9:  لینک

*****************************************

فوت گوزه گری 6 :

در تابع init .......  قسمت هایی از متغیر سراسری را که در طول اجرای منو تغییر نمیکنند و یا برای یک یا 2 مورد ( تعداد کم ) ممکن است تغییر کنند ، مقدار دهی نمایید .

******************

 

 

****************************************

در قسمت 10: لینک

*****************************************

فوت کوزه گری 7:

فونت و ترتیب نوشتن ( چپ چین راست چین )عمومی مورد استفاده در نمایش منوها  را در تابع منوی اصلی تعیین نمایید .

******************

 

 

****************************************

در قسمت 11: لینک

*****************************************

 

فوت کوزه گری 8 :

اگر میخواهید متغیری به غیر از float  و int32_t را  به عنوان متغر تنظیمی به کتابخانه منو معرفی  کنید، این کار را با واسطه یک متغیر محلی از نوع قابل شناخت برای کتابخانه ( float  یا int32_t  ) انجام دهید .

******************

فوت کوزه گری 9:

اگر میخواهید یکی از عناصر متغیر سراسری menu_4pin_handle_config  در هنگام اجرای منو تنظیم شود . در تابع عمکردی آیتم مربوطه ، بعد از بازیابی متغیر سراسری menu_4pin_handle_config  ، آن آیتم را به عنصر متناظر در متغیر سراسری menu_4pin_handle_config  نسبت دهید

******************

 

****************************************

****************************************

 

مطالب مربوط به راهنمای استفاده از کتابخانه منو 4 دگمه در اینجا به پایان رسید .

امیدوارم موفق و پیروز اشید.

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

 

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت11

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : ساختن منو _ ساختن تابع عملکرد برای متغیرهای تنظیمی

 

 درود به شما.

 

در این قسمت قصد دارم در مورد برنامه نویسی توابع عملکرد مربوط برای یک متغیر تنظیمی توضیح بدم.

 

این قسمت  راهنما  4 بخش مهم دارد که به شرح زیر هستند:

*****************************************

1-  توابع مربوط به متغیر تنظیمی که به صورت عدد نمایش داده میشود .

2 - توابع مربوط به یک متغیر تنظیمی که  به صورت level ( نمایش به صورت کپسول )  نمایش داده خواهد شد .

3-  توابع برای متغیرهای به غیر از float , int_32 و برای تنظیم یکی از عناصر متغیر سراسریmenu_4pin_handle_config

4- توابع عملکردی برای موارد متفرقه .

 

****************************************

در ادامه یکایک این موارد را توضیح خواهم داد .

 

****************************************

****************************************

شماره 1_ برنامه نویسی  توابع مربوط به متغیر تنظیمی که به صورت عدد نمایش داده میشود .

 

برای ورود به بحث لطفا ابتدا به تصویر زیر که مربوط به تابع عملکردی برای نمایش یک متغیر float  است نگاه کنید .

 

علاوه بر مطالب و نکاتی که برای نوشتن توابع زیرمنوها در   قسمت 10   از قبیل گرفتن پشتیبان از تنظیمات و فونت و تریتیب نمایش و غیره ...

یک سری نکات هم در خصوص توابع مربوط به متغیرها وجود داره :

********************************

1-1 - در خط  278 : متغیر defulttheme_dec_digit را میبنید که مقدار دهی شده است . این متغیر مربوط به تم پیشفرض هست که برای نمایش اعداد اعشاری ، تعداد رقمهای اعشار ( حداکثر 10 تا )را برای نمایش مشخص میکند .

و همانطور که میبینید (در کادر سبز)  از مقدار آن پشتیبان گرفته شده است و در آخر مقدار آن بازیابی شده است . ( کادر آبی ) 

 

********************************

در قسمت =======  set config  ======= به عناصری از متغیر سراسری ، بر حسب نیاز مقدارهایی را داده ایم .

که تقریبا واضح است و نیاز به توضیح خاصی ندارد .ولی 3 مورد را توضیح میدم .

 

********************************

1-2- خط 284 :

در این عنصر از متغیر سراسری است ، آدرس متغیری را که میخواهیم مورد تنظیم قرار بگیرد وارد میکنیم (کتابخانه فقط نوع float و int_32  را میشناسد و برای دیگر انواع در ادامه مطلب توضیح داده خواهد شد ) که بهتر است به صورت void  type casting  شود تا احیانا کمپایلر خطا یا هشدار تولید نکند .

 

********************************

1-3- خط 288 :در این عنصر از متغیر سراسری ، آدرس تابعی مربوط به قسمت تم را قرار میدهیم  که مقدار متغیر را به شکل  عدد را روی صفحه نمایش میدهد .

********************************

1-4- مقدار small_step :  ( خط 292 ) توجه داشته باشید که برای مقادیر float  ، این مقدار نباید 0 باشد .

 

***هشدار : اگر این مقدار 0 باشد ، کتابخانه با آن به مانند یک متغیر از نوع صحیح ( int_32 ) رفتار خواهد کرد . در هنگام مقدار دهی به عناصر متغیر سراسری لطفا به این مورد دقت کنید .

********************************

1-5- ذخیره مقدار متغیر ( کادر قرمز ) :

همانگونه که در تصویر میبینید ، تابع   menu_4pin_handle_variable  ( خط 295 ) یک مقدار برگشتی دارد که در یک متغیر به نام  flagذخیره خواهد شد .

اگر مقدار متغیر تنظیمی توسط کاربر تغییر داده شده باشد . یک بیت خاص از متغیر flag  مقدار 1 خواهد داشت .

از این بیت میتوان برای تشخیص نیاز به ذخیره کردن متغیر تنظیمی  ( یا هر عملیات دیگری که مورد نیاز باشد ) استفاده کرد که نحوه ی اینکار در کارد قرمز مشخص شده است .

البته کاربر هر کد دلخواهی را میتوان در بلاک if  بنویسد و تابع ی که در تصویر میبینید مربوط به تم است و به طور پیشفرض خالی است و باید توسط کاربر برنامه نویسی شود .

 

 

****************************************

****************************************

2 - توابع مربوط به یک متغیر تنظیمی که  به صورت level ( به صورت استوانه )  نمایش داده خواهد شد .

بعضی متغیرها هستند که برای تنظیم عدد خاصی برای آنها مد نظر نیست بلکه مقدار آنها به صورت در صد مهم است مانند نور صفحه ، بلندی صدا و غیره ...

در تم یک تابع مخصوص برای اینکار وجود دارد که مقدار متغیر را به صورت یک کپسول نمایش میدهد .

 

 

در تصویر زیر یک نمونه برنامه نویسی برای چنین تابعی را میبینید .

این تابع دقیقا شبیه همان تابع برای نمایش متغیرها به صورت عدد هست ولی دو تفاوت کوچک دارد

2-1-کادر سبز:

  تابع defulttheme_print_level که جزیی از تم میباشد و مقدارمتغیر را به جای عدد به صورت استوانه نمایش میدهد .

2-2-کادر قرمز :

 لطفا دقت کنیدضروری است  small_step  برابر 0 باشد .

 

****************************************

****************************************

 

 3 -  توابع برای متغیرهایی به غیر از float , int_32 و برای تنظیم یکی از عناصر متغیر سراسریmenu_4pin_handle_config

 

قبلا گفته بودم که کتابخانه متغیر های تنظیمی  که به آن معرفی میشود را با فقط با نوع float و int32_t  شناسایی میکن .

حال سوال پیش می آید اگر خواستیم به طور مثال داده ای از نوع char  را تنظیم کنیم چطورمقادیر آنرا به کتابخانه وارد کنیم ؟

 

برای پاسخ به این سوال لطفا به تصویر زیر نگاه کنید .این تصویر مربوط به تابع عملکردی برای تنظیم تایم اوت است که متغیری از نوع uint8_t  میباشد .

 

 

3-1 : تنظیم یک متغیر از نوعی غیر از float  و  int32_t :

******************

3-1-1- کادر سبز :

 یک متغیر محلی از نوع int32_t  به نام internal_var تعریف کنید .

 

******************

3-1-2- کادر قرمز :

مقدارمتغیر تایم اوت را به این متغیر نسبت دهید .

 

******************

3-1-3-خط90 :

  آدرس متغیر internal_var  را به عنصر متناضر در متغیر سراسری وارد نمایید .

 

******************

3-1-4-کادر صورتی :

در آخر کار دوباره مقدار internal_var  را در  متغیر time_out  قرار دهید .

 

******************

فوت کوزه گری 8 :

اگر میخواهید متغیری به غیر از float  و int32_t را  به عنوان متغر تنظیمی به کتابخانه منو معرفی  کنید، این کار را با واسطه یک متغیر محلی از نوع قابل شناخت برای کتابخانه ( float  یا int32_t  ) انجام دهید .

**************************************************

3-2 - تنظیم عناصر متغیر سراسری از طریق منو :

حالت خاص دیگر زمانی است که شما میخواهید تنظیم یکی از پارامترهای متغیر سراسری menu_4pin_handle_config  را از طریق اجرای منو در lcd در اختیار کاربر قرار دهید .

در این صورت چه باید کرد ؟!

  جواب  در تصویر بالاست .

در این مورد ما تایم اوت را که یکی از پارامترهای تنظیمی کتابخانه است را به صورت یک آیتم قابل تنظیم در صفحه  lcd  در اختیار کاربر قرار میدهیم .

 این کار همانند تنظیم یک متغیر معمولی است . با یک تفاوت کوچک !!!!

3-2-1 - کادر قرمز :

بعد از بازیابی متغیر menu_4pin_handle_config   دوباره مقدار متغیر تایم اوت را به عنصر متناظر از متغیر سراسری نسبت میدهیم .

 

به دلیل اینکه ما از متغیر سراسری menu_4pin_handle_config پشتیبان گرفیتیم و بعد دوبار آنرا باز یابی میکنیم ( در قسمت ===== deinitial value =====  ) اگر قبل از آن متغیر تایم اوت را نسبت دهیم ، بازیابی متغیر سراسری ، کل اعمال توابع و دستورات قبلی را بی اثر میکند پس باید بعد از بازیابی نسبت داده شود .

 

***********************

 

فوت کوزه گری 9:

اگر میخواهید یکی از عناصر متغیر سراسری menu_4pin_handle_config  در هنگام اجرای منو تنظیم شود . در تابع عمکردی آیتم مربوطه ، بعد از بازیابی متغیر سراسری menu_4pin_handle_config  ، آن آیتم را به عنصر متناظر در متغیر سراسری menu_4pin_handle_config  نسبت دهید

 

****************************************

****************************************

4- توابع عملکردی برای موارد متفرقه .

 

شما درون تابع های عملکرد آیتمها علاوه بر نمایش لیستها و متغیرها ،میتوانید کارهای دیگری هم انجام دهید . 

یک مثال از این نوع را در تصویر زیر میبینید که یک پیام با متن " این آیتم در حال حاضر خالی است " را به مدت چند ثانیه در صفحه نمایش نشان میدهد .

 

****************************************

****************************************

مطلب این قسمت در ایجا به پایان رسید .

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

 

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

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

لینک قسمت بعدی

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت10

 

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : ساختن منو _ ساختن تابع عملکرد برای منوی اصلی و زیر منوها

 

 درود به شما.

 

در قسمت قبل در مورد برنامه نویسی تابع init.... را توضیح دادم .

در این قسمت نحوه ی برنامه نویسی توابعی رو توضیح میدم که مربوط به منوی اصلی و زیر منوها هستند .

 

در تصویر زیر تابع مربوط به منوی اصلی برنامه را میبینید

یک سری نکات اصلی هست که آونها رو توضیح میدم .

 

********************************

********************************

 

1- اول اینکه تابع باید مقداری را از نوع menu_4pin_flag_typedef برگرداند .( فلش نارنجی رنگ )

********************************

2- دوم محتویات کادرهای سبز کاملا ضروری هستند .و نمیتوانید آنها را حذف کنید .

 

********************************

3- اگر در تصویر دقت کنید میبینید که من فونت و ترتیب نوشتن ( چپ چین راست چین ) رو تغییر دادم .

( در محدوده ای که با  set font and alligment  نام گذاری شده است )

 

اما این کار ممکنه روی قسمتهای دیگه برنامه که ربطی به منو نداره تاثیر بزاره .  بنابراین اگر به کمی بالاتر دقت کنید متغیر هایی از نوع فونت و alligment 

میبینید که تعریف شده و در قسمت initial value   نوع فونت و ترتیب نوشتن ،را  قبل ا ز هر تغییری ذخیره کردم .

 

فوت کوزه گری 7:

فونت و ترتیب نوشتن ( چپ چین راست چین )عمومی مورد استفاده در نمایش منوها  را در تابع منوی اصلی تعیین نمایید . 

 

********************************

4 - اگر فونت را تغییر بدید باید عناصری از متغیر سراسری menu_4pin_handle_config  را که به ممکنه به اندازه فونت شما بستگی داشته باشه ( در تم پیشفرض این ارتباط وجود دارد ) دو باره مقداردهی کنید . این مقدار دهی رو در قسمتی که set config نام گذاری شده میبینید.

 

********************************

5- بعد از آماده سازی های لازم حالا میشه تابع menu_4pin_handle_list  را اجرا کرد تا منوی اصلی را روی lcd  نمایش بدهد .

 

********************************

6- برای راحتی خودتان رشته نام منو را همان رشته متغیر تابع عملکردی ( menu_name ) انتخاب نمایید . ( کادرهای قرمز )

 

پارامتر بعدی در تابع ،  آرایه است که در واقع همان منوی اصلی است و پارامتر بعدی تعداد آیتمهای منو است که در قسمت 8     در مورد آنها  توضیح دادم .

 

********************************

7 - بعد از خروج ازمنو لازم است چیزهایی را که تغییر داده بودیم مانند فونت و ترتیب نوشتن یا غیره ...... را به حالت اول باز گردانیم

این مطلب را در قسمتی که با ==== deinitial value ==== نام گذاری شده است میبینید .

 

********************************

********************************

 

بعد از این توضیحات نوبت به برنامه نویسی تابع عملکردی یک زیر منو میرسه .

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

 

 

تمام نکاتی که برای برنامه نویسی تابع عملکردی زیر منو وجود دارد با برنامه نویسی تابع منوی اصلی برابر است به غیر از 2 مورد .!!!

 

********************************

********************************

مورد اول :

 در تابع عملکردی زیر منو ، اگر میخواهیم در متغیر سراسری menu_4pin_handle_config تغییری ایجاد کنیم ، بهتر است قبل از آن از مقدار این متغیر

پشتیبان بگیریم ( کادرهای قرمز ).و بعد از اجرای زیر منو مقادیر را بازیابی کنیم .( کادر زرد )

ولی در تابع مربوط به منوی اصلی ضروری  نیست .

 

********************************

 مورد دوم :

در تابع menu_4pin_handle_list  به جای  متغیر اول  ( menu_name ) میتوانیم یک رشته دلخواه قرار دهیم که در این صورت به در هنگام اجرای زیر منو در  lcd ، به جای نام آیتم ، نام رشته مذکور در سربرگ نمایش داده خواهد شد .

در صورتی که میخواهید هنگام اجرای منو ، نام آیتم در سربرگ نمایش داده شود . لطفا اولین متغیر تابع menu_4pin_handle_list  را همنام با متغیر تابع عملکرد ( menu_name ) انتخاب نمایید .

 

 

********************************

********************************

 

در اینجا مطلب مربوط به برنامه نویسی توابع عملکردی منوی اصلی و زیر منو ، به پایان رسید .

 

لطفا سوالات و نظرات خودتان را بوسیله کامنت مطرح کنید .

 

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

لینک قسمت بعدی

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

 

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت9

 

 

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : ساختن منو _ انجام تنظیمات و مقداردهی آرایه(منو) ها

 

 درود به شما.

 

همانطور که خاطرتان هست در قسمت 7 از یک متغیر سراسری نام بردم به اسم   menu_4pin_handle_config  ( گزینه شماره 4)

این متغیر تنظیماتی را در خود نگه میدارد که توابع هندل لیستها و منوها( درمطلب راهنمای استفاده  قسمت  7  گزینه  3) برطبق آنها منوها را نمایش میدهند .

تابع   my_menu_init    را برای مقدار دهی این متغیر و همچین مقدار دهی آرایه ها تعریف کردم . و آخرین تابع در فایل خودش هست منتها به دلیل تاثیر قابل توجه توضیحات مربوط به تنظیمات در جلوگیری از ایجاد ابهام . ابتدا نحوه ی نوشتن این تابع را توضیح میدم.

این متغیر از نوع menu_4pin_handle_config_typedef که یک ساختمان است میباشد.

در تصویر زیر محتویات این ساختمان را مشاهده میکنید .

 

***********************************

***********************************

 

متغیرهای خطوط 94 تا 101 :

این متغیرها هم در نمایش منوها و هم در نمایش متغیرها استفاده میشوند( عام هستند)

و توضیحات آنها به صورت زیر است .

***********************************

1 - timeout :

 این عنصر زمان تایم اوت را برای کتابخانه را برای کتابخانه مشخص میکند و میتواند بین 0 تا 255 (ثانیه ) باشد .

*** هشدار :  هیچوقت آنرا روی صفر تنظیم نکنید ( اصلا زیر 10 ثانیه تنظیم نکید) چون به شما فرصت نخواهد داد که دگمه ای را بفشارید .

 

***********************************

2 - عنصر item__font_color :

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

 

***********************************

3-screen_height_start :

این یک عدد است که به توابع هندل  میگوید محدوده ی نمایش متغیرها و یا آیتمهای یک منو ازچه سطری شروع میشود .

 

***********************************

4- screen_height_end :

مانند بالا است منتها به توابع هندل  میگوید محدوده ی نمایش متغیرها و یا آیتمهای یک منو  در چه سطری خاتمه   پیدا میکند .

 

***********************************

5 - عنصر  screen_background_func :

این متغیر آدرس تابعی را نگه میدارد که توابع هندل برای ترسیم  پس زمینه تصویر  (back ground ) از آن استفاده میکنند .

 

 

***********************************

6 - menu_header_func :

مانند بالا است فقط به توابع هندل میگوید از چه تابعی برای ترسیم سربرگ ( تیتر ) استفاده کند .

 

***********************************

7- عنصر menu_footer_func :

به توابع هندل میگوید از چه تابعی برای ترسیم پابرگ( قسمت راهنمای کلیدهای ورود و خروج) منو استفاده کند .

 

*** توجه : از توابع قسمت تم  برای موارد  5 و 6 و 7 استفاده خواهد شد.

 

***********************************

 

دو متغیر دیگر وجود دارند به نام های list و  data که مربوط به تنظیمات اختصاصی برای منو ( لیست ) ها و متغیرهای تنظیمی هستند .

 

***********************************

 8 - عنصر list :

این متغیر برای تنظیمات مربوط به نمایش منوها و زیرمنوها ( لیستها ) استفاده میشود .

و از نوع ساختمان است که اجزای آن را در تصویر زیر میبینید.

8-1-item_height_space:

این متغیر ارتفاع مستطیلی که نام آیتم در آن نمایش داده خواهد شد را  برای تابع هندل کردن منوها مشخص میکند .

8-2-item_height_distance :

این متغیر فاصله بین مستطیلهایی را که آیتمها در آن نمایش داده میشوند را برای تابع هندل منو مشخص میکند.

8-3-selected_show_func:

هنگامی که کلیدها ی بالا یا پایین فشرده میشوند .  آیتم فعال تغییر خواهد کرد و باید به شیوه ای متفاوت نمایش داده شود .

این متغیر، آدرس تابعی را که برای نمایش آیتم فعال باید استفاده شود را در خود نگه میدارد.

8-4-unselected_show_func:

این متغیر آدرس تابع برای نمایش آیتم انتخاب نشده را در خود نگه میدارد .

 

8-5-show_scrollbar :

تابعی که در این متغیر قرار داده شود برای نمایش اسکرول بار نمایش داده خواهد شد .

 

**توجه:

توابعی که آدرس آنها در موارد3-8 و 4-8 و 5-8 قرار میگیرند . مربوط به تم مورد استفاده میباشند .

 

**************************************

 

9-متغیر data :

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

تعریف این ساختمان مطابق تصویر زیر است .

 

9-1-عنصر   var :

   آدرس متغیری که کاربر میخواهد مقدار آن را از طریق رابط کاربری (  اجرای منو روی lcd  ) تغییر دهد در این عنصر ساختمان قرار میگیرد .

 این عنصر از نوع  اشارگر  میباشد.

***هشدار :

لازم است کاربر برای متغیرها ی تنظیمی از نوع float , int32_t  استفاده نماید درصورتی که آدرس نوع دیگری را در عنصر var  واردنمایید،به احتمال زیاد عملکرد کتابخانه دچار اختلال خواهد شد .

 

9-2- عنصر var_font :

این متغیر از نوع فونت است و فونت برای نمایش مقدار متغیر روی lcd را ذخیره میکند  .( با فونت نمایش متن آیتمها و سر برگ و پابرگ تفاوت دارد ) .

 

9-3- عنصر var_unit_str :

این عنصر آدرس یک رشته را در خود نگه میدارد . که میتواند به عنوان واحد ( unit ) کنار عدد در lcd  نمایش داده شود .

مانند V ,A ,PPM ,% , Temp و غیره ....

 

9-4- عنصر  var_font_color :

رنگ متغیری را که در صفحه lcd  نمایش داده میشود را تعیین میکند .

 

 

 

9-5-متغیر  max_value  وmax_value :

هر متغیر تنظیمی یک مقدار حداکثر ویک مقدار  حداقل مجاز   دارد .

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

 

9-6- عنصر big_step :

گام بزرگ ( معمولی ) برای تغییر مقدار متغیر نمایش داده شده را در خود نگه میدارد . و با هر بار فشردن کلیدهای بالا وپایین مقدار متغیر را به اندازه big_step

تغییر میدهد .

9-7 - عنصر smal_step :

مانند بالا است  و مقدار گام کوچک را نگه میدارد و با فشردن کلیدهای بالا یا پایین به همراه کلید ورود به اندازه  smal_step به متغیر کم یا اضافه میکند .

این قابلیت فقط برای متغیر های اعشاری وجود دارد .

اگر smal_step صفر باشد ، توابع هندل متغیر ، عنصر var   را به عنوان یک متغیر int_32  و اگر 0 نباشد عنصر var را  به عنوان  float  خواهد شناخت .

*** توجه : مقدار  گام کوچک  باید به صورت معکوس به smal_step  وارد شود . به طوا مثال :

برای گام   0.1                             smal_step=10

برای گام   0.01                          smal_step =100

برای گام 0.5                                 smal_step=2

برای گام 1                                    smal_step=1

 

9-8- عنصر print_var_color :

این عنصر یک union  است . ( تعریف آنرا میتوانید در تصویر بالا قبل از تعریف ساختمان مربوط به نوع داده data  مشاهده کنید .)

به این union  میتوان 2 تابع مختلف  نسبت داد . که یکی از آنها به نام var_func  آدرس تابعی را نگه میدارد که برای نمایش مقدار متغیر تنظیمی روی  lcd  استفاده خواهد شد .

و جزء توابع قسمت تم است .

 

***********************************

***********************************

 حال که به نوع داده متغیر سراسری menu_4pin_handle_config  میرویم سراغ یک مثال عملی از تنظیم متغیرها .

 

***********************************

***********************************

 

تصویر زیر تنظیم این متغیر را در تابع my_menu_init  نشان میدهد .

این تصویر مربوط به مثال منوی ساخته شده همراه کتابخانه هست .در اینجا برحسب طراحی منویی که انجام دادم  قسمتهایی رو که در طول اجرای منو تغییر نمیکردن رو مقدار دهی کردم .

فوت گوزه گری 6 :

در تابع init .......  قسمت هایی از متغیر سراسری را که در طول اجرای منو تغییر نمیکنند و یا برای یک یا 2 مورد ( تعداد کم ) ممکن است تغییر کنند ، مقدار دهی نمایید .

 

در تابع init ...... علاوه بر مقداردهی متغیر سراسری  .

آرایه ها را هم مقدار دهی کردم که در تصویر زیر میبینید .

 

همانطور که در قسمت قبل گفتم ، هنگام تعریف توابع عملکردی آیتمها  3 دسته تابع را تعریف کردیم و این مورد به این علت بود که  3 منو داشتیم ( 1منوی اصلی و 2 زیر منو)

بنابراین نیاز بود 3 آرایه تعریف شود . مقدار دهی این 3 آرایه را در تصویر بالا میبینید .

که چطور رشته نام ها و نام توابع عملکردی  آیتمها ، به خانه های آرایه نسبت داده شده است .

 

***********************************

***********************************

در اینجا چند متغیر دیده میشود که مقدار دهی اولیه شده اند .

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

این متغیرها میتوانند در جای دیگری باشند و حتی در یک قسمت دیگر کد مقداری دهی اولیه شده باشند .

کتابانه فقط به آدرس آنها احتیاج داد. منتها برای سادگی مثالی که دردسترس کاربران قرار میگیرد متغیر ها همینجا تعریف و مقداردهی شده اند.

 

 

مطلب مربوط به این قسمت در اینجا به پایان رسید .

 

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

لینک قسمت بعدی

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

 

 

 

 

 

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت8

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : ساختن منو _ تعریف نام آیتمها و الگوی توابع

 

با سلام و درود به شما.

 

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

برای منوهای ساده و چند آیتم پیچیدگی خاصی نداره ولی اگر منو یکم طولانی باشه و مخصوصا منوهای تودردتو داشته باشیم اگر بدون نظم و ترتیب خاصی اینکار رو انجام بدید احتمال اشتباه کردن به شدت بالا میره و ممکنه کار خیلی خسته کننده بشه .

برای همین منظور من یک نظم و ترتیب رو که در ادامه توضیح خواهم داد بهتون پیشنهاد میدم .

البته این فقط یک پیشنهاده و شما اگر با یک نظم و ترتیب متفاوت  راحتتر باشید بهتره از همون استفاده کنید .

مهم راحتی و دقت هست .

 

این روش و تصاویری که در ادامه مطلب مشاهده میکنید مربوط به مثال منویی هست که همراه کتابخانه ارائه شده .

بنابراین اصل مطالب در دسترس شما خواهد بود .

 

**********************************

**********************************

مرحله اول : 3تا فایل بسازید .

 

 

فایل my_menu_name.h :

  در این فایل نام item های منو که در lcd  نمایش داده خواهد شد را تعریف میکنیم .

 

فایل my_menu.h :

در این فایل الگوی توابع مربوط به عملکرد هر آیتم و تعداد آیتمهای هر منو را تعریف میکینیم .

 

فایل my_men.c :

در این فایل بدنه توابع مربوطه را تعریف میکنیم

 

**********************************

**********************************

مرحله 2 : تعریف نام آیتمها

 

قبل از هر چیز لطفا به تصویر زیر نگاه کنید .

 

در این تصویر نامگذاری آیتمهای منو را مشاهده میکنید .

خط 13 مربوط به نامی است که هنگام اجرای منوی اصلی در سربرگ نوشته میشود .

خطهای 16و17و18و23و29و30و 31 :

  اینها نام آیتمهای منوی اصلی هستند . که در lcd  نمایش داده میشوند .

خط های 20 و 21 :

 خط 18 خود یک زیرمنو هست و شامل دو آیتم میباشد.

خطهای 21 و 22 نام آیتمهای زیر منوی خط 18 هستند .

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

 

 

یا به طور خلاصه :

******************

فوت کوزه گری 1 :

حتما برای منوی اصلی ( جدای از آیتمهای منو ،) نامی انتخاب کنید که در سربرگ نمایش داده شود .( مانند خط 13 )

******************

******************

فوت کوزه گری 2 :

از ساختار پلکانی برای تعریف نام آیتمها استفاده کنید .

******************

اینکار به شما اجازه میدهد به طور مشخص تشخیص دهید که نام مربوط به آیتمهای یک  زیر منو ، چه چیزهایی است و امکان اشتباه در هنگام تخصیص نام ها به آرایه را کاهش میدهد .

 

******************

فوت کوزه گری 3:

در صورتی که بیشتر متن شما به صورت فارسی نمایش داده میشود .

برای نمایش متون انگلیسی به جای تعویض خالت چپ چین راسچین  ، متون انگلیسی را از آخر به اول بنویسید.

******************

 

مانند خطوط 20 و 21

 

مطلب تکمیلی :

میتوانید شروع نام گذاری یک دسته از آیتمها را همانطور که در تصویر میبینید ، به صورت کامنت قید کنید ...که این باعث خوانایی بیشتر هم میشود .

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

 

**********************************

**********************************

مرحله3  : تعریف الگوی توابع

 

الگوی توابع را در تابع  my_menu.h تعریف میکنیم و پیشنهاد من به صورت زیر هست .

 

متغیر ها :

همیشه حداقل چند پارامتر به صورت متغیر هست که باید تنظیم بشوند .

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

 اگر توجه کنید توابع دسته بندی شده اند .

 

دسته اول :

تابع مربوط به اولین پله از نام ها ی آیتمها میباشد . که در واقع تابع منوی اصلی است .

 

دسته دوم :

توابع مربوط به دومین  پله از نام ها ی آیتمها میباشد .

 

***اگر دقت کرده باشید میبینید که آیتمهای پله دوم 7 عدد هستند ولی این تابع ها 6 تا هستند .

علت این است که دو آیتم آخر منو یک پیام ثابت را روی lcd  نمایش میدهند بنابر این از یک تابهع برای عملکرد آنها استفاده شده است . (خط 40 کادر سبز)

 

دسته سوم و چهارم :

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

 

******************

فوت کوزه گری 4 :

توابع مربوطه آیتمها را به ترتیب بر حسب پله ها بنویسد .

******************

 

تابع my_menu_init :

 در این تابع تنظیمات کلی و عمومی را برای اجرای منو را انجام میدهیم .

 

***توجه : اگر کمی دقت کرده باشید متوجه خواهید شد که هر دسته از توابع مربوط به  یک منو (لیست )است !!! و بنابر این به یک آرایه نیاز دارد .

 

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

 

******************

فوت کوزه گری 5:

در ابتدای هر دسته از توابع  تعداد اعضای آرایه مربوطه را به صورت دیفاین و با قرار دادن یک نام مناسب تعریف کنید .

******************

 

 

**********************************

**********************************

مطالب مربوط به این قسمت در ایتجا به پایان رسید امیدوار مفید بوده باشد.

 

در قسمت بعد نکات مربوط به کد نویسی بدنه توابع را خواهم گفت .

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

لینک قسمت بعدی 

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت7

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : تعاریف  و چیزهایی که در ساخت منو با آن سر و کار داریم .

 

با سلام و درود به شما.

 

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

 

کلا در مبحث ساختن منو با 5 دسته موضوع ارتباط داریم که به طور خلاصه به شرح زیر است :

 

1 - تعریف منو( لیست)

2- تعریف آیتم ( گزینه )

3 - توابع نمایش و کنترل منوها و متغیرها

4 - متغیر سراسری  menu_4pin_handle_config

5 - توابع مربوط به تم (theme )

 

توضیحات مربوط به این 5 مورد را در زیر آوردم.

*****************************************

*****************************************

1-تعریف منو(لیست) :

 

یک منو عبارت است از یک آرایه (که میتواند 1 خانه یا چند خانه داشته باشد) از نوع ساختمانی که در تصویر زیر میبینید.

** این ساختمان در فایل menu_4pin_typedef.h تعریف شده است .

 

*****************************************

*****************************************

2- تعریفitem(گزینه) منو:

 

هر کدام از اعضای این آرایه( منو) را یک آیتم ( گزینه ) منو  می نامیم.

 

 

شرح اعضای ساختمان :

****************************

2-1-item_name :

    این متغیر بیانگر نام آیتم فعلی است .

   هنگام نمایش آیتمهای منو روی صفحه نمایش ، یک نام هم برای آیتم نمایش داده میشود .

 لازم است این نام  توسط کاربر به صورت یک رشته ازنوع const char  تعریف شده باشد .و میتواند در حافظه فلش میکرو قرار گرفته باشد.

 متغیر item_name آدرس رشته نام آیتم مورد نظر را نگه میدارد.

 

****************************

 

2-1- menu_act :

این متغیر از نوع تابع است .

و آدرس تابع عملکرد مربوط به آیتم مورد نظر را نگه میدارد .

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

لازم است که این تابع توسط کاربر تعریف شود و متغیر menu_act آدرس این تابع را نگه میدارد .

 

*****************************************

*****************************************

 

3 - توابع نمایش و کنترل منوها و متغیرها :

 

در فایل menu_4pn.c  دوتابع به به صورت زیر وجود دارد .

 

این دوتابع متغیرهایی که باید تنظیم شود یا منوها را روی lcd نمایش داده . قابلیت تغییر مقدار متغیر یا بالا پایین شدن در آیتمهای منو و همچنین ورود و خروج را بوسیله کلیدها برای کاربر فراهم میکند.

** در نام این توابع عبارت handle وجود دارد .

 

****************************

 3-1 -  تابع  menu_4pin_handle_list :

این تابع یک منو را در صفحه lcd  نمایش میدهد.

متغیرهای تابع به این شرح است .

 

3-1-1 - متغیر menu_name :

  این متغیری است که نام منو ( آرایه ) را هنگام اجرای منو در سر برگ نمایش میدهد . البته ادامه توضیحات بیشتری در مورد این متغیر و مقداری که باید در آن قرا گیرد خواهم داد.

 

  3-1-2-متغیر  list_name :

        این متغیر همان آدرس آرایه منو هست .که تابع آن را روی صفحه نمایش اجرا میکنه .

 

   3-1-3 - متغیر item_number : 

         طول منو را برای تابع مشخص میکند .

 

 

****************************

 3-2 - تابع  menu_4pin_handle_variable :

  این تابع مقدار یک متغیر را  در صفحه نمایش نشان میدهد و به شما اجازه میدهد که با کلیدهای بالا و پایین مقادیر متغیر را تغیر دهید و نتیجه این تغیرات را در صفحه نمایش مشاهده کنید .

این تابع برای متغیرهای اعشاری دو گام(step )برای  تغیر دارد .یکی مربوط به قسمت صحیح است و یکی هم مربوط به قسمت اعشار که گام کوچک است .

اگر کاربر یکی از کلیدهای بالا یا پایین را به تنهایی فشار دهد قسمت صحیح  تغییر میکند و اگر همراه کلیدهای بالا یا پایین کلید ورود ( enter ) را هم نگه دارد . قسمت اعشار بر اساس گام کوچک تغییر خواهد کرد .

 

متغیر این تابع به شرح زیر است .

 

متغیر menu_name:

این متغیر آدرس رشته ای است که هنگام اجرای من در سربرگ نمایش داده شد .

ممکن است سوال برای شما پیش آمده باشد که متغیررا چطور معرفی کنیم ؟!!!! این تابع که برای اینکار پارامتر و متغیری نداره!!!!

جواب در توضیح شماره 4 هست.

 

*****************************************

*****************************************

 

4 -  متغیر سراسری menu_4pin_handle_config :

این متغیر در فایل   menu_4pin.c تعریف شده است .

و آدرس متغیر برای تابع menu_4pin_handle_variable و تمام تنظیمات برای هردو تابع را در خود نگه میدارد .

این تنظیمات شامل گام کوچک ، گام معمولی ، فونت ، رنگ فونت ، واحد برای عدد نمایش داده شده ،

آدر س متغیر و غیره ( تابع  handle_variable ........ از اینها استفاده میکند) .

 

و تنظیمات شامل :

ضخامت پهنای مستطیلی که آیتم ها درون آن نمایش داده میشوند و فاصله بین این مستطیل ها و همچنین تعین توابع مورد استفاده برای نمایش آیتم انتخاب شده و آیتم انتخاب نشده و همچنین تابع نمایش اسکرول بار (handle_menu ...... از اینها استفاده میکند) را در خود نگه میدارد .

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

 

*****************************************

*****************************************

5 - توابع تم (theme ) :

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

توابع تم شامل :

1 - تابع نمایش سربرگ

2- تابع نمایش پابرگ

3 - تابع نمایش اسکرول بار

4- نمایش نمایش پشت صحنه

5- تابع نمایش آیتم انتخاب شده

6 - تابع نمایش آیتم انتخاب نشده

 

میباشد. که از آنها در متغیر  توضیحات شماره 4 ( بالا) استفاده میشود .

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

 

دوستان  لطفا (حداقل خلاصه ) مطالب بالا را ( که در ابتدای مطلب ذکر کردم ) به خاطر بسپارید . تا هنگامی که در مطالب بعدی  با این اصطلاحات مواجه شدید برای شما مبهم نباشد .

*****************************************

 مطلب مربوط به تعاریف در همینجا به پایان رسید . در مطالب بعدی ساختن گام به گام منو را توضیح خواهم داد .

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

لینک قسمت بعدی

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت6

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

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

 

با سلام و درود به شما.

 

در این قسمت در باره محتویات فایل  menu_4pin_link.h  توضیح میدم .

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

************************************

1- قسمت  define includes: ( کادر سبز )

هدر فایلهایی که کاربر نیاز دارد در این قسمت اینکلود میشود( مثلا هدر هایی شامل توابع تاخیر pwm  و غیره..) . مثلا فایل txt_lcd.h    همان قسمت متنی کتابخانه  tftf lcd  هست که ازش در کتابخانه منو استفاده کردم .

 

************************************

2- ماکروی menu_4pin_delay_ms(x) :

این کتابخانه نیاز به یک تابع برای ایجاد تاخیر داره و این ماکرو تابعی را برای تاخیر به کتابخانه معرفی میکند.

من از همان تابع تاخیر کتابخانه lcd  استفاده کردم ولی میشه به طور مستقیم از HAL_Delay()  یا حتی تابع دستنویس خودتان را استفاده کنید .

( اینجاست که ممکنه هدرفایلهای خاصی نیاز باشه که کاربر باید اینکلود کنه )

 

************************************

3 - ماکروی  mwnu_4pin_gettick :

این مربوط به قابلیت تایم اوت( به معنی خروج خودکار بعد از زمان معینی که هیچ کلیدی فشرده نشود) کتابخانه هست .

واضحه تابع HAL_GetTick  مربوط به کتابخانه هال هست .

**در صورتی که  بخواهید تایم اوت غیر فعال باشد کافیست  لطفا جلوی این ماکرو 0 بنویسید.

 

************************************

4 - ماکروی menu_4pin_beeper :

این ماکرو تابعی را به کتابخانه برای ایجاد صدای کلیدها (بیپ ) معرفی میکند.

**توجه داشته باشید که زمانی که برای ایجاد بیپ صرف میشود به تاخیر کلیدها اضافه خواهد شد . بنابراین بهتر است که تابع اصلی که قرار است یک pwm  را برای تولید صدای بیپ در یک بازه زمانی تولید کند ، در خارج از این فایل باشد و اینجا فقط یک فلگ برای اجرای تابع بیپ 1 شود .

** در صورتی که نمیخواهید از این قابلیت استفاده کنید لطفا  جلوی ماکرو    ;    قرار دهید .

 

************************************

5-ماکروی menu4_pin_reset_watch_dog :

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

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

** در صورتی که از واچداگ استفاده نمیکنید لطفا جلوی این ماکرو ; قرار دهید .

************************************

 

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

که  با فشردن کلید  Enter ( Right pin)  وارد منو  خواهید شد و منوی ساخته شده ای که همراه فایل کتابخانه در اختیار شما قرار گرفته است ، اجرا خواهد شد .

 

مطلب مربوط به اتصال توابع و هدر فایلها در اینجا به پایان رسید .

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

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

لینک قسمت بعدی

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

 

 

 

 

 

اطلاعیه_اتصال"  3.2  lcd  با  چیپili9341 به کتابخانه lcd nokia 1661

با سلام و درود.

 

همانطور که اطلاع دارید نسخه جدید (1.0.3 ) کتابخانه lcd nokia1661 برای میکروهای stm32 را در وبلاگ منتشر کرده بودم و  یک کتاخانه منو هم نوشتم که از قسمتهای متنی و گرافیکی این نسخه از کتابخانه lcd  استفاده میکرد .

در مطلب مربوط به lcd در مورد خصوصیات نسخه جدید  گفته بودم که ساختار اون رو طوری نوشتم که به راحتی میشه lcd های دیگه رو به اون متصل کرد و از قابلیتهای متنی(و فونت)، گرافیکی و نمایش تصویر روی هر lcd tft  دلخواهی استفاده کرد .

و همینطور در مورد منو ادعا کرده بودم که تم پیشفرض ، قابلیت تطبیق اتوماتیک با ابعاد lcd  و فونت مورد استفاده را دارد . یعنی عرض و  ارتفاع و نوع فونت

مورد استفاده را شناسایی کرده و منو را بر اساس آنها روی صفحه ترسیم میکند.

 

خوشبخانه فرصتی پیش آمد و درایور tft 3.2 ili9341  را برای اتصال به کتابخانه lcd nokia1661  نوشتم.

 درایور ili9341  بعد از انجام موارد تکمیلی آماده  شده است و میتوانید آن را در (اینجا)  ببینید.

 

دقیقا این lcd :( 34 پین)

 

نحوه ی اتصال به کتابخانه  lcd nokia1661 :

   نکته جالب اینجاست:

اتصال درایور به کتابخانه بسیار آسان است . دقیقا به آسانی کپی پیست کردن یک پوشه !!!!!!!!

بله برای اتصال به کتابخانه فقط کافیست به جای پوشه lcd (در کتابخانه مربوط به نوکیا 1661) ، در محل پروژه پوشه مربوط به درایور ili9341 را کپی کنید .

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

دقیقا به همین راحتی !!!!

حتی نیاز نیست یک خط از  کدهایی را که قبلا نوشته اید تغییر دهید .( فقط شاید به دلیل تغییر ابعاد lcd نیاز به جا نمایی مجدد متنها و تصاویر باشد.)

که مثال عملی این مورد ، اجرای کتابخانه منو روی lcd با درایور ili9341  است . و این کار بدون تغییر در حتی یک خط از کدهای برنامه ، و صرفا با کپی پیست کردن پوشه درایور ili9341 و تنظیم پایه ها در کیوب و معرفی پایه ها به درایور ،  انجام شده است .

 

سرعت رفرش lcd3.2 با بورد bluepill   و همچنین عملکرد کتابخانه منو  روی LCD را در فیلم های زیر میبینید.

 

برای سرعت رفرش 3 حالت normal  و fast  و super fast  در نظر گرفتم که فیلم زیر

سرعت مربوط به حالت super fast روی میکرو   stm32f103 (بورد bluepill ) را

برای انترفیس 8 بیتی و پشتیبانی از 65 هزار رنگ را میبینید.

که در این حالت سرعت رفرش به 26  فریم در ثانیه  رسیده است !!!!!

 

فیلم زیر مربوط به اجرای کتاخانه منو روی  lcd 3.2 با بورد bluepill  هست .

 

 

لطفا برای سهولت اطلاع از اخبار جدید در این باره و موارد دیگر خواهشمندم  کانال تلگرام وبلاگ: dastsazemanblogfa@

را دنبال نمایید.

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

 

با سپاس از توجه تان .

 

ili9341   library   8080   tft 3.3 "    inch   stm32  bit    lcd    nokia1661

 کتابخانه , نوکیا1661 C1   درایور   تی اف تی   موازی  16 بیت   8 

 

 

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت5

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : تنظیمات کتابخانه منو 4 دگمه

 

 

با سلام و درود به شما.

 

 

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

 

تنظیمات کتابخانه :

****************************************************

****************************************************

 

تنظیمات کتابخانه منو در فایل menu_4pin_conf.h  انجام میگیرد که محتویات فایل را در تصویر زیر میبینید.

قسمت اول interface config هست . دارای 4 کلید UP , DOWN , EXIT , و ENTER هست که به واسطه ماکروهای زیر به کتابخانه معرفی میشوند.

 

*************************

 

ماکروی MENU_4PIN_UP_PORT :

این ماکرو برای معرفی پورتی که کلید UP  روی آن قرار دارد استفاده میشود.

 

ماکروی MENU_4PIN_UP_PIN :

این ماکرو شماره پینی از پورت را که کلید up روی آن قرار دارد به کتابخانه معرفی میکند.

 

*** بقیه ماکروها هم به همین ترتیب برای برای کلیدهای  DOWN , EXIT  و ENTER استفاده میشوند. که در تصویر واضح است .

 

****************************************************

ماکروی  MENU_4PIN_PIN_ACTIVE_STATE :

 

این ماکرو برای کتابخانه مشخص میکند که سطح ولتاژ  برای حالت فعال کلیدها کدام است که

دو مقدار را میپذیرد  و در فایل menu_4pin_names.h  تعریف شده اند .( تصویر زیر کادر سبز )

 

توضیح نام های مورد استفاده به شرح زیر است :

نام Menu_4pin_high :   حالت high ( ولتاژ VCC) را به عنوان سطح ولتاژ فعال شدن کلید معرفی میکند.

 

نام Menu_4pin_low :   حالت مخص پین (ولتاژ GND ) رابه عنوان سطح ولتاژ تحریک دگمه معرفی میکن .

 

نکته : برای راختی کار نام مورد نظر  را به جای تایپ کردن ، از فایل names به فایل مقصد کپی پیست کنید .

برای اطلاع از شماتیک و تنظیم پایه ها بر مبنای سطح ولتاژ لطفا ( قسمت دوم ) را ببینید .

 

****************************************************

 

محتویات فایل menu_4pin_names.h   را در تصویر زیر میبینید .

 

****************************************************

ماکروی MENU_4PIN_COR_TYPE  :

 

این ماکرو از فایل conf.h_**********     برای تعیین نوع میکروکنترلر استفاده میشود . که نام هایی که برای آن قابل استفاده است ،

در تصویر بالا (کادر قرمز )دیده میشود .

 

****************************************************

 

ماکروی MENU_4PIN_DELAY_BUTTON  :

 

زمان لازم برای فشردن یک کلید توسط دست ، تقریبا 200 میلی ثانیه است . بنابراین لازم است به کاربر فرصت دادد تا دستش را از روی کلید بردارد .

این ماکرو زمان لازم برای اینکار را به کتابخانه معرفی میکند . اگر این زمان بیش از حد کم باشد با هر بار فشردن کلید ، 2 یا چند فرمان اجرا خواهد شد .
 

مقدار متعارف بین 250 تا 300 میلی ثانیه است .

 

****************************************************

در اینجا تنظیمات مربوط به کتابخانه منو ( محتویات درون فایل menu_4pin _conf.h ) به پایان رسید .

در قسمت بعدی در مورد فایل menu_4pin_link.h  و اینکه چه نقشی در کتابخانه دارد و چگونه تنظیم میشود ، توضیح خواهم داد.

 

 برای اطلاعات بیشتر در این زمینه لطفا کانال تلگرام وبلاگ   dastsazemanblogfa@  را دنبال نمایید  .

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

لینک قسمت بعدی 

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت4

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : اضافه کردن فایلها به پروژه و انجام تنظیمات کتابخانه  

 

درود بر شما .

 

 

توجه :

تنظیماتی که در این قسمت گفته شده ، برای اجرای مثال منوی ساخته شده ای است که همراه کتابخانه ارائه میشود . و در موارد دیگر بر اساس نیاز کاربر میتواند تغییر کند. 

************************************************************************

اضافه کردن فایلها به پروژه :

 

برای اینکار کافیه که بعد از اضافه کردن کتابخانه lcd به پروژه ، پوشه های make_menu ( که فایلهای منوی اجرا شده ) و menu ( که فایلهای کتابخانه منو هست ) را در محل پروژه قرار بدهید .

و مسیر های لازم برای برای پوشه ها در قسمت تنظیمات پروژه را تعریف کنید .

 

************************************************************************

تنظیمات اضافی برای KEIL :

 

تصویر زیر مربوط هست به تنظیم ورژن کمپایلر:

 

 

و  تصویر زیر مربوط به استاندارد زبان برنامه نویسی هست.

 

 

************************************************************************

 

************************************************************************

نوشتن برنامه اصلی در تابع main:

 

لطفا اینکلودهای زیر را به همان ترتیب تصویر انجام دهید (کادر قرمز) .

 

 

و کد اجرای منو که به طور پیشنهادی میتواند به شکل زیر و قبل از حلقه بی نهایت(while  ) باشد .(کادر قرمز)

کادر زرد :   مربوط به اینیشیال کردن کتابخانه های مورد استفاده است .

 

کادر قرمز: مربوط به قسمت اجاری منو میباشد.

 

 

 

************************************************************************

بعد از اینکار نوبت به به تنظیمات کتابخانه ها میرسه .

 

************************************************************************

تنظیمات کتابخانه lcd :

 

1 - قسمت هسته :

همانطور  که در توضیحات مربوط به کتابخانه lcd  گفته بودم . نیاز هست یک تابع برای delay معرفی شود . اگر قصد دارید  از تابع HAL_Delay  استفاده کنید بهتر است آنرا به صورت :

define         delay_ms          HAL_Delay 

تعریف نمایید .

در غیر این صورت ( غیر فعال / فعال کردن systick   قبل و بعد از HAL_Delay ) ممکن است عملکرد تایم اوت مربوط به منو انجام نشود.

 

2 - قسمت متنی:

 

2-1  فونت:

فونت B_nazanin__9  , calibri_9_B   را به قسمت  فونت ها اضافه نمایید .( در فایل txt_lcd_font.h   اینکلود نمایید . )

 

2-2_ تنظیمات قسمت متنی:

در فایل txt_lcd_conf.h  لطفا تنظیمات زیر را انجام دهید.

************************************************************************

 

مطالب مربوط به این قسمت در اینجا به پایان رسید .

مطالبی که در قسمت بعد توضیح خواهم داد منحصرا مربوط به کتابخانه  menu  هستند.

 

 برای اطلاعات بیشتر در این زمینه لطفا کانال تلگرام وبلاگ dastsazemanblogfa@  را دنبال نمایید  .

 

با سپاس از توجه تان .

 

 

لینک قسمت قبلی

لینک قسمت بعدی

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت3

لینک قسمت معرفی کتابخانه

لینک راهنمای موضوعی مطالب

 

 

موضوع این قسمت : پیشنیازها و تنظیمات اولیه برای راه اندازی 

 

درود بر شما.

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

 

اولین پیشنیاز راه اندازی کتابخانه ، راه اندازی lcd  هست .

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

توجه  : نکته  ای که در مورد کتابخانه lcd وجود داره اینکه که نسخه قدیمی آن ( 1.0.1) بری منو قابل استفاده نیست و منو فقط روی نسخه جدید قابل اجرا هست . دوستانی که نسخه قدیمی رو در اختیار دارند لازم هست که نسخه جدید را تهیه کنند . تفاوتخای نسخه جدید نسبت به قدیمی را در  اینجا   توضیح دادم 

بعد از اینکه lcd راه اندازی شد نوبت به تنظیمات خود منو  میرسه .

به دلیل راحتی کار انجام تنظیمات را به وسیله stm32CubeMx  توضیح میدم . البته دوستان توجه داشته باشند که این کتابخانه وابسته به هال نیست .

بنابراین دوستانی که از هال استفاده نمیکنند . به هر روشی که خودشان ترجیح میدهند  (رجیستری ، SPL , LL  و غیره ...) میتوانند نسبت به انجام تنظیمات اقدام نمایند .

کتابخانه منو در هر دو محیط KEIL  و  truestudio (کمپایلر gcc ) قابل استفاده هست .

به دلیل در دسترس و ارزان بودن بورد  blue pill stm32f103 c8 t6   64KB ( البته بعضی blue pill ها stm32f103 CB t6  هستن که 128KB هست ).

مطالب رو روی این میکرو f103  توضیح میدم

برای شروع لطفا به تصویر زیر توجه کنید .

******************************************************

توضیح قسمت های تصویر :

1 - کادر بنفش : اگر از stlink  برای پروگرام کردن میکرو استفاده میکنید.

2 - کادر قزمز : چن کتابخانه منو قابلیت تایم اوت داره  نیاز به یک تایم بیس هست ، که روی هرتایمری که تمایل داشتین میتونید بگزارید .

ولی چی بهتر از systick .

3 _ کادر های زرد :  مربوط به کلیدهای  منو هست که برای راحتی نامگزاری هم کردم . 

  بقیه پایه ها : مربوط به lcd nokia1661   هست .

******************************************************

 

******************************************************

تنظیمات اختصاصی مربوط به پین های دگمه های منو را در تصویر زیر ببینید .

تنظیمات توی تصویر مشخص هست .

******************************************************

کادر نارنجی:   مقدار درون  کادر نارنجی بستگی به انتخاب حالت فعال برای پین کلید دارد .

 

pull up :   در این حالت ولتاژ تحریک پین سطح GND است . ( کلید باید پایه را به GND وصل کند)

pull down :  در این حالت ولتاژ تحریک پین کلید سطح VCC است . ( کلید باید پایه را به VCC وصل کند)

شماتیک پیشنهادی برای استفاده در هریک از حالات گفته شده را  در  لطفا در راهنمای استفاده: قسمت  2   ببینید .

******************************************************

در این مرحله پروژه اماده تولید هست .

 

در قسمت بعد اضافه کردن فایلها و تنظیمات منو در قسمت کد را توضیح خواهم داد.

 

 برای اطلاعات بیشتر در این زمینه لطفا کانال تلگرام وبلاگ   dastsazemanblogfa@  را دنبال نمایید  .

 

با سپاس از توجه تان.

لینک قسمت قبلی

لینک قسمت بعدی

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

 

راهنمای استفاده از کتابخانه منو4 دگمه_قسمت2

لینک قسمت معرفی کتابخانه

 

لینک راهنمای موضوعی مطالب

 

موضوع این قسمت : نحوه ی اتصال کلیدها به میکروکنترلر

 

با سلام.

 

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

ولتاژفعال شدن کلیدها میتواند در دو سطح GND و VCC برای کتابخانه تعریف شود .

در تصویر زیر شماتیک لازم برای اتصال بر حسب سطح ولتاژ دیده میشود.

تصویر سمت چپ برای مواقعی است که میخواهید فعال شدن پین میکرو  با ولتاژ GND اتفاق بیافتد . که در این حالت لازم است پین ها به صورت ورودی و pull up 

پیکر بندی شده باشند .

و تصویر سمت راست برای مواقعی است که لازم است فعال شدن پین میکرو  با سطح ولتاژ VCC اتفاق بیافتد. که در این صورت پینهای میکرو باید به صورت ورودی و pull down تنظیم شوند.

 

اما در مورد مقاومتها :

در این شماتیک مقاومتها عنصری ضروری نیستند اما برای ایمنی جهت صدمه ندیدن پینهای میکرو میتوانند مفید باشد .

اگر از مقاومت بالاکش/پایین کش    خارجی کمتر از 10k استفاده میکنید ممکن است لازم باشد کمی مقدار این مقاومتها را کاهش دهید .

 

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

با سپاس از توجه تان .

 

لینک قسمت قبلی

لینک قسمت بعدی

 

پستهای مرتبط :

کتابخانه lcd نوکیا 1661

 نرم افزار تولید فونت برای میکرو کنترلر

 

 

 

مالکیت معنوی:لطفا کپی نکنید ..لینک بدید.

 

 
  BLOGFA.COM