آموزش منو در آردوینو arduino

آموزش ساخت منو در آردوینو بخش اول

طراحی واسط کاربری حرفه‌ای در نرم اقزار‌ها  از نقات قوت یک سیستم می‌باشد.در این پست به آموزش ساخت منو در آردوینو می‌پردازیم. منو ساختاری سلسله مراتبی و تودرتوست که برای طبقه بندی و دسته بندی منطقی فرامین و یا اطلاعات در نرم افزارهای گوناگون استفاده می شود تا افراد بتوانند آنچه را می خواهند به راحتی پیدا کنند. معمولا در کار روزمره با نرم افزارهای مختلف با انواع منو سروکار داشته ایم . منوی Start ویندوز نمونه ای آشناست , منویی آبشاری که با حرکت  اشاره گر روی هر کدام از گزینه هایش , در صورت وجود , مجموعه ای از گزینه های زیر مجموعه را نمایش میدهد و بدینصورت افراد می توانند منطقاً  , گزینه نهایی مورد نظر خود را به راحتی پیدا کنند.در ادامه آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.شیوه‌های مختلفی به منظور ساخت منو وجود دارد ولی از آنجایی که آردوینو پلتفرمی دارای کتابخانه‌های فراوانی می‌باشد ، به جای برنامه ‌نویسی‌های پیچیده  از کتابخانه MenuBackend استفاده می‌کنیم که لینک دانلود آن در قسمت زیر قرار داده  شده است.پس از دانلود کتابخانه ، آن را به نرم افزار آردوینو اضافه نمایید.

دانلود کتابخانهMenuBackend

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

آموزش LCD کاراکتری در آردوینو

آموزش دیبانسیتگ یا نویزگیری کلید در آردوینو

سحت افزار مورد نیاز:

آردوینو Uno

میکروسوئیچ بزرگ

LCD کاراکتری ۲*۱۶

برد بورد


پیش از انجام هر کاری ابتدا باید یک ساختار کلی از منویی که مدنظرمان می‌باشد ترسیم کنیم. همانند تصویر زیر:

آموزش منو در آردوینو

طرحی از منویی که در ذهن داریم

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

۱ عدد کلید برای رفتن به سمت راست منو(جابه جایی در بین آیتم‌های منو)

۱ عدد کلید برای رفتن به سمت چپ منو (جابه‌جایی در بین آیتم‌های منو)

۱ عدد کلید به منظور  وارد شدن به منو ( عملیات Enter)

۱ عدد کلید به منظور رفتن به ابتدای منو ( عملیات Escap)

آموزش منو در آردوینو (2)

شماتیک پروژه

کد‌های پروژه

ابتدا کد‌های زیر را در آردوینو خود آپلود کنید  و نتیچه را مشاهده کنید.

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

آموزش منو در آردوینو

ساختار منو

شرح کدها

پس از فراخوانی کتابخانه‌ها و تنظیمات آن‌ها ابتدا باید از کلاس MenuBackend یک آبجکت بسازیم(منظور از آبجکت همان منو می‌باشد) همانند زیر:

menuChange : تابعی است که هنگامی که جابه‌جایی بین گزینه‌های منو به صورت خودکار فراخوانی ‌می‌شود( این تابع را باید خودمان بعد از loop برنامه بنویسیم.

menuUse : تابعی است که هنگامی که منوی را مورد استفاده قرار می‌دهیم به صورت خودکار فراخوانی می‌شود ( ابن تابع را نیز باید در پایان کدها بنویسیم)

پس باید اینگونه عمل کنیم:

در مرحله‍‌ی بعدی باید ایتم‌هایی که در منوی ما به کار برده می‌شود را تعریف کنیم.بری تعریف ایتم‌ها مطایق دستور العمل زیر عمل می‌کنیم.

آموزش منو در آردوینو

ساختار منو

پس طبق ساختار فوق ، ایتم‌های منو را طبق قطعه کد زیر تعریف می‌کنیم:

معرفی چند تابع :

getRoot ()

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

add(menu Name)

به وسیله این تابع می‌توان یک آیتم را به آیتم دیگر اضافع نمود ( یعنی می‌توان یک آیتم را به عنوان زیر‌شاخه یک آیتم دیگر قرار داد یا به عبارت دیگر یک منو را به منویی دیگر اضافه نمود). به عنوان مثال در قطعه کد زیر ، آیتم subMenuItem1 را به عنوان زیر شاخه آیتم menuItem1 اضافه می‌کنیم:


در برنامه خود طبق ساختار زیر

آموزش منو در آردوینو

ساختار منو

آیتم‌ها را  در setup برنامه به یکدیگر اضافه می‌کنیم.

مرحله اول

آموزش منو در آردوینو

مرحله دوم

آموزش منو در آردوینو

مرحله سوم

آموزش منو در آردوینو

و در نهایت

آموزش منو در آردوینو

پس کد‌های برنامه تا این قسمت به صورت زیر می‌شود:

هم اکنون باید وضعیت LOW شدن هر یک از ۴ عدد تاچ سوئیچ را بررسی کرده و در صورت فشرده شدن هر کدام ، شماره‌ی پین آن را در متغیر  lastButtonPushed میریزیم. کد‌های ما به صورت  زیر می‌شود:

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

اکنون برای نمایش دادن نام هر یک از ITEM ها در LCD هنگام جابه‌جایی در میان آیتم‌ها تابع menuChange را باید طبق کد‌های زیر توسعه دهیم:

و همچنین برای نمایش دادن نام هر یک از زیرمنوها که مورد استفاه (use) قرار می‌دهیم تابع  menuUse را طبق کد‌های زیر توسعه می‌دهیم:

و در پایان ؛ کد‌های نهایی پروژه به صورت زیر می‌باشد:

 

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

11 دیدگاه ها

  1. M.Ali می‌گه:

    آقای قربانی سلام
    آقا واقعا دمت گرم، خیلی مفصل توضیح دادی، من برم برای تست روی آردوینو بعد میام سوالامو میپرسم.

    چاکریم

  2. علی می‌گه:

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

  3. علی می‌گه:

    با سلام
    با تعویض مرورگر موفق به دانلود اکثر کتابخانه ها شدم ولی متاسفانه کماکان امکان دانلود کتابخانه OLED را ندارم.
    با تشکر از زحمات شما ومطالب بسیار عالی سایت

    • علیرضا قربانی می‌گه:

      سلام
      ارتباطی ب مرور گر نداره – کتابخانه ها را مجددا آپلود کردم – کتابخانه مرتبط به OLED نیز قرار گرفت و میتونین دانلود کنید

      موفق و موید باشید

  4. حامد می‌گه:

    سلام
    این آموزش ها بسیار عالی هستند از زحماتتان متشکرم
    سئوالی داشتم
    آیا میتوان به جای این که این همه سیم و کلید برای استفاده از منوها گذاشته میشه و به جای ال سی دی کاراکتری از شیلد ال سی دی لمسی که در این لینک
    https://daneshjookit.com/1737-%D9%85%D8%A7%DA%98%D9%88%D9%84-lcd-24-%D8%B4%DB%8C%D9%84%D8%AF-uno.html?search_query=lcd&results=16

    آورده شده استفاده کرد . و به جای کلیدهای فشاری از امکان تاچ ال سی دی استفاده کرد ؟
    یعنی با یک تیر تقریبا ۳ نشون زد
    ۱: استفاده از ال سی دی تاچ به جای کاراکتری که از کیفیت بهتری برخورداره
    ۲: استفاده از تاچ ال سی دی برای منوها به جای کلید
    ۳: استفاده از امکان درگاه اس دی کارت نصب شده روی ال سی دی تاچ . به جای شیلد sd card
    ????????
    آیا میتوان این روش را استفاده کرد ؟

  5. SLC می‌گه:

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

    MenuBackend_sample:101: error: ‘menuUseEvent’ was not declared in this scope

    MenuBackend menu = MenuBackend(menuUseEvent,menuChangeEvent); // konstruktor
    ^
    MenuBackend_sample:101: error: ‘menuChangeEvent’ was not declared in this scope
    MenuBackend menu = MenuBackend(menuUseEvent,menuChangeEvent); // konstruktor

    exit status 1
    ‘menuUseEvent’ was not declared in this scope

    اگر راهنمایی کنید ممنون میشم.

  6. ali می‌گه:

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *