-
 

راهنمای استفاده از کتابخانه منو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

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

 

 

 

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

 

 

 

 

 

راهنمای استفاده از کتابخانه منو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

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

 

 

 

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

 

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

 

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

 

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

لینک راهنمای استفاده قسمت 3 : با موضوع تنظیمات نرم افزار Cube Mx  و تولید پروژه .

لینک راهنمای استفاده قسمت 4 : با موضوع اضافه کردن فایلها به پروژه ، تنظیم کمپایلر ، تنظیم کتابخانه LCD و نوشتن فایل main

لینک راهنمای استفاده قسمت 5 : با موضوع  انجام تنظیمات مربوط به کتابخانه منو 4 دگمه

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

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

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

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

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

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

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

 

 

 

موضوع این قسمت : معرفی فایلهای موجود در پوشه دریافتی ( باز کردن درب  جعبه )

 

با درود بر خوانندگان گرامی.

 

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

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

 

مطالب را طبق مراحل زیر ارائه خواهم داد:

1- معرفی فایلهای درون پوشه دریافتی .

2- شماتیک لازم برای دگمه های کتابخانه .

3- نحوه ی اضافه کردن کتابخانه به پروژه و اه اندازی مثال موجود در پوشه دریافتی و ایجاد تنظیمات مربوطه .

4- شرح توابع مربوط به کتابخانه

5 - نحوه ی ایجاد منو (ساختار اصلی + فوتهای کوزه گری )

6- تنظیمات مربوط به تم پیشفرض.

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

 

و اما معرفی فایلهای کتابخانه:

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

توضیحات مربوط به این پوشه ها به صورت زیر است :

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

پوشه make_menu :

 

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

محتویات درون پوشه را در تصویر زیر میبینید .

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

 

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

پوشه menu :

 

این پوشه شامل فایلهای اصلی کتابخانه ( به همراه پوشه فایلهای تم پیشفرض ) هست .( تصویر زیر)

پوشه theme :

شامل فایلهای تم پیشفرض هست .

 

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

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

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

 

شرح قسمت دوم نام فایلها :

1 -  conf : 

  تنظیمات کتابخانه منو در این فایل قرار دارد

 

2- link :  

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

 

3- names:

 این فایل شامل تعریف نامهایی ، برای راحتی کاربر به منظور استفاده در فایل conf است.

 

4- theme :

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

 

5- typedef :

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

 

 

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

فایل main.c :

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

 

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

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

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

لطفا قسمتهای بعدی را دنبال نمایید .

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

با سپاس.

 

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

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

 

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

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

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

 

 

 

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

 

 

 

 

 

کتابخانه حرفه ای منو 4 کلید برای stm32

با سلام .

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

با توجه به مطلبی که قبلا در کانال تلگرام وبلاگ اعلام کرده بودم ، کتابخانه منو اماده شده و

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

راستش این کتابخانه یک پیشینه ای داره و یکدفعه به ذهنم نرسید!!

و اما ماجرا چی بود!؟

ماجرا از آنجا آغاز شد که میخواستم یک دستگاه کنترل دما و رطوبت رو با صفحه نمایش lcd کاراکتری بسازم و نیاز به منو بود ... بنابراین افتادم به سرچ توی اینترنت ......هر چی کد در مورد منوهای ساده لیستی ، دیدم به صورت ثابت با if و else پیاده سازی شده بود . خب این راه حل ساده ای هست ولی اگر بخواهید کاربر رفاه خوبی داشته باشه و ایتم های منو یک مقدار مفصل و تودر تو باشه واقعا اوضاع اسف انگیز خواهد شد . ...بنابراین دست به کار شدم و یک ساختاری را با آرایه و به صورت محدود پیاد ه سازی کردم که یک منو لیستی ساده رو با 5 دگمه اجرا میکرد .

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

کتابخانه منو 5 دگمه برای LCD کاراکتری !!!!

قابلیتهای قابل قبولی داشت مثلا قابلیت تنظیم متغیرهای float و int و متغیرهای فلگ رو داشت و میتونستید روبه روی آونها به اندازه3 کاراکتر یک رشته به عنوان واحد تعریف کرد . وهمچنین میشد باهاش کالیبراسیون نرم افزاری انجام داد و داده ها رو هم توی یک حافظه دائم ذخیره کرد.

خلاصه چیز خوبی بود اما یک اشکال خیلی بزرگ داشت ، ساختارهای داده های مربوط به کتابخانه خیلی پیچیده شده بود طوری که حتی خودم هم بعضی وقتها قاطی میکردم که چی به چیه !!!

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

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

ایده هایی برای بهتر شدنش به ذهنم رسیده بود ، ولی معلق ماند تا رفتم سروقت tft lcd ها ....

زمانی که تصمیم گرفتم دوباره روی کتابخانه منو کار کنم ، اول توی نت یک سرچ کردم ببینم برای منوهای ساده لیستی ، و با نما یشگر tft کتابخانه مناسبی پیدا میشه یا نه ؟

منوهایی که روی tft های سایز کوچک پیاده سازی شده بود ، ازهمون منوهای if و else بودن و اون GUI هایی که کتابخانه ای بودن برای میکروهای با حجم فلش و سرعت بالا طراحی شده بود ... کم حجم ترینشان که فقط کارکردهای اساسی رو پیاده سازی کنه به 80 کیلوبایت فلش احتیاج داشت !!!!! یعنی ازمیکروهای 128 کیلوبایتی و کمتر، صرف نظر کنید. جدای این مسئله یکسری فونت هم همراه کتابخانه هاشون بود که از نوع ثابت بودن (آخه فونت چه ربطی به کتابخانه منو داره ؟!!!!!... این مربوط به کتابخانه راه اندازی متنی lcd میشه ) و از فونت فارسی هم که خبری نبود .

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

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

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

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

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

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

این کد تست پروژه هست که روی بورد blue pill پیاده سازی شده است .

حتی مثل همون کتابخانه متنی که برایtft lcd نوشته بودم و فونتهای مختلف به تعداد نامحدود رو میشد به اون اظافه کرد ، این کتابخانه هم تم های نا محدودی رو میشه بهش اضافه کرد . که در مطالب مربوط به راهنمای استفاده ، به این مطلب خواهم پرداخت .

بعد از این توضیحات میرم سر اصل مطلب :

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

پیش نیازها وتوجهات در رابطه با کتابخانه منو:

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

1 – این کتابخانه برای کمپایلرهای keil و arm gcc ( نرم افزار true studio از gcc استفاده میکند) نوشته شده است .

2- استاندارد زبان برنامه نویسیc99 - gnu99 میباشد.

3 - کتابخانه به صورت رجیستری و بدون تکیه به کتابخانه های HAL یا SPL نوشته شته شده است.

4 – این کتابخانه شامل بخشی به نام theme است که( قابل تعویض است و) نوع پیشفرض آن به همراه کتابخانه ارائه میشود و وابستگی به قسمتهای گرافیک و متنی کتابخانه tft lcd که در حال حاضر ارائه شده است ، دارد . و تنها با نسخه جدید کتابخانه lcd ( 1.1.3 ) قادر به اجرا شدن میباشد .

هشدار: لازم است که قبلا کتابخانهtft lcd را تهیه کرده باشید( زیرا به همراه کتابخانه منو ارئه نمیشود )

4– کتابخانه برای میکروهای stm32f0xx و stm32f1xx قابل اجرا است .و تحت شرایطی روی میکروهای stm32f4xx اجرا میشود .

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

خصوصیات و قابلیتهای کتابخانه :

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

1 – این کتابخانه منوها را به صورت لیستی اجرا میکند و کاربر از طریق 4 دگمه به امکانات کتابخانه منو دسترسی دارد .

2 – پیمایش دایره ای دو جهته در نمایش آیتمهای منو و مقادیر تنظیمی:

توضیح:

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

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

مزیت :

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

3 – نمایش اسکرول بار :

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

4 – قابلیت تنظیم متغیرهای صحیح :

این کتابخانه از تنظیم متغیرهای علامت دارصحیح با سایز 32 بیت ( -65534 تا 65535 ) پشتیبانی میکند .

5 - تایم اوت :

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

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

میتوانید عملکرد قابلیت های 1 تا 4 و همچنین تایم اوت را در کلیپ زیر ببینید .( چنانچه در منو تنظیم شد ، بعد از 6 ثانیه بیکار بودن از منو خارج میشود )

6 – قابلیت تنظیم برای متغیرهای اعشاری:

این کتابخانه قابلیت تنظیم متغیرهای اعشاری ممیز شناور با سایز 32 بیت (float ) تا حداکثر4 رقم اعشار را دارد .

و این قابلیت برای هر متغیر به طور مستقل قابل تعیین است .

در ضمن امکان تغیر در مقدار صحیح و اعشاری عدد به صورت جداگانه وجود دارد .

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

7- صدای کلیدها:

قابلیت ایجاد صدا برای کلیدها در نظر گرفته شده است .

8- انتخاب فونت ( اندازه متن و نوع فونت ) و رنگ متن برای متغیرها به طور مستقل:

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

9 – تعیین واحد (unit ) برای نمایش کنار متغیرها :

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

( در فیلم بالا نمایش داده شده است )

10 – استفاده ازتعداد دلخواهی تم در برنامه و تغییر تم هنگام اجرای منو :

توضیح :

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

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

مزیت :

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

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

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

خصوصیات و قابلیتهای تم پیشفرض :

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

قسمتی از انعطاف پذیری کتابخانه مربوط به تم پیشفرض کتابخانه است . من این تم رو به گونه ای برنامه نویسی کردم که به شدت !!!!! انعطاف پذیر هست . و از قسمت گرافیکی کتابخانه lcd tft برای تولید شکلهایی که در منو نمایش داده شده است استفاده کردم .تعدادی از خصوصیات قابل توجه تم پیشفرض را در زیر شرح دادم .

1 – نمایش متغیرها ی اعشاری و صحیح :

2 – نمایش متغیر از نوع level :

توضیح :

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

پیمایش دایره ای به همراه نمایش متغیر level را لطفا در فیلم زیر ببینید

3 – قابلیت تشخیص خودکار ابعاد صفحه :

تم پیشفرض به صورت خودکار عرض و ارتفاع صفحه نمایش را شناسایی کرده وشکلهای موجود در صفحه را مطابق با ابعاد صفحه ترسیم میکند . این قابلیت علاوه بر این که به شما این امکان را میدهد که کتابخانه منو و تم را بدون نگرانی در مورد ابعاد صفحه ، در lcd هایی با اندازه های متفاوت به کار ببرید ، به شما این امکان را هم میدهد که صفحه نمایش را درهر یک از زوایای 90 ، 180 یا 270 د جه چرخانده و منو همچنان به خوبی اجرا شود .!!!

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

4 – قابلیت تشخیص خودکار اندازه فونت و تطابق اندازه کادر دور آیتمها با آن:

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

5 - انتخاب زبان فارسی یا انگلیسی برای پابرگ ( راهنمای ورود و خروج منو):

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

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

قابلیت 4 و 5 را لطفا در تصویر زیر ببینید.

***در تصویر بالا ضخامت کادر دور متن در مقایسه با تصاویری که در ادامه آمده ، کمتر شده است .

6- استفاده از رنگ پس زمینه جاری lcd به عنوان رنگ پس زمینه منو:

این کار باعث میشود در صورتی که رنگ بگراند را در lcd ( که توسط تابع nlcd_clear صفحه را با آن رنگ ( پاک ) میکند) را تغییر دهید ، رنگ پس زمینه منو به طور اتوماتیک آپدیت خواهد شد .

این گزینه توسط کاربر قابل تنظیم است .

7 - انتخاب حالت چپ چین ، وسط چین و راست چین برای متن آیتمها :

این قابلیت برای تم تعیین میکند که متن را در کدام قسمت صفحه تراز کند( چپ ،راست یا وسط)

لطفا تصاویر مربوط به قابلیت 6 و 7 را در زیر ببینید

رنگ پس زمینه در کتابخانه lcd nokia1661 به زرد تغییر داده شده است و پس زمینه و نوشته ها با این عمل مطابق شده اند .

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

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

قسمت عمومی :

1 – رنگ پس زمینه سر برگ و پا برگ

2 – رنگ متن موجود در سر برگ و پا برگ .

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

قسمت نمایش لیست ( آیتمهای یک منو):

3– رنگ قسمت بگراند آیتم انتخاب شده و انتخاب نشده .

4 – رنگ متن آیتم انتخاب شده و انتخاب نشده .

5– رنگ اسکرول بار و رنگ پس زمینه اسکرول بار .

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

قسمت نمایش متغیر های عددی :

6– تعیین تعداد پیشفرض ارقام اعشار در هنگام نمایش مقادیر عددی .( در هنگام اجرای منو قابل تغییر است )

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

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

قسمت نمایش متغیر از نوع level :

8– رنگ پس زمینه تصویر

9– رنگ لبه های سیلندر

10- رنگ قسمت پر سیلندر

11- ضخامت سیلندر

12– فاصله سیلندر از کناره های LCD

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

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

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

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

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

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

فایل هگز تست :

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

فایل تست برای میکرو stm32f103CBt6 ( بورد blue pill ) و lcd نوکیا 1661

فایل تست برای میکرو stm32f072 c8t6 و lcd نوکیا 1661

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

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

قیمت نسخه 1.0.1 برای stm32 و کمپایلرهای gcc و کیل : 180,000 تومان

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

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

نحوه ی خریداز طریق پرداخت مستقیم: برای خرید لطفا اینجا را ببینید

فایلهای لازم ظرف حداکثر 24 ساعت برای شما ارسال خواهد شد .

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

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

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

عضو شوید .

با سپاس.

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

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

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

اجرای منو روی tft 3.2 اینچ ( اتصال درایور ili9341 به کتابخانه lcd nokia1661 )

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

کلمات کلیدی :

menu 4 pin button stm32 library lcd tft کتابخانه منو 4 پین دگمه برای stm32 ال سی دی تی اف تی

 
  BLOGFA.COM