آردوینو آموزش آردوینو پروژه های آردوینو

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

اتصال چند کلید به یک پین آردوینو
نوشته شده توسط علیرضا قربانی

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

 

 

وسایل لازم:

آردوینو uno

۶ عدد مقاومت با هر مقداری که در دسترس هست پیشنهاد ما ۴ عدد مقاومت ۲۷۰ اهم و یک عدد مقاومت ۴٫۷ کیلواهم

برد بورد

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

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

اتصال چند کلید به یک پین آردوینو
اتصال چند کلید به یک پین آردوینو

اکنون کد زیر را روی برد آردوینو Arduino آپلود کنید:

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

شماره کلید مقدار نمایش داده شده بر روی سریال مانیتور نرم‌افزار
۱ ۵۳
۲ ۱۰۴
۳ ۱۴۹
۴ ۱۹۰
۵ ۲۲۸

اکنون کتابخانه کلید‌های آنالوگ را  از لینک زیر دانلود و طبق آموزش زیر به نرم‌افزار آردوینو اضافه کنید:

دانلود کتابخانه کلید‌های آنالوگ

آموزش نصب کتابخانه در آردوینو

پس از نصب کتابخانه توسط دستور زیر  کتابخانه به نرم افزار اضافه می‌کنیم:

سپس باید از  کلاس analogButtons یک شی می‌سازیم و به ‌جای آرگمان اول یعنی  analog_pin شماره پین آنالوگی که کلید‌ها به آن وصل هستند را وارد می‌کنیم.

چون کلید‌هایمان را به پین شماره آنالوگ شماره ۱ یعنی A0 متصل  کردیم پس باید اینگونه کد نویسی کنیم:

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

مثلا می‌خواهیم هنگامی که کلید شماره ۲ فشرده شد عبارت “button ۲ clicked” و  هنگامی که کلید شماره ۲ نگه داشته شد عبارت “button 2 held” بر روی سریال مانیتور نرم‌افزار آردوینو نمایش داده شود ، پس باید برای هر یک از دو حالت فوق یک تابع به شکل زیر بنویسیم:

اکنون باید از کلاس button یک شی بسازیم و مقادیری که قبلا از خواندن مقدار پین A0 از روی سریال مانیتور یاداشت کردیم را به توابع نوشته شده فوق نسبت دهیم.سازنده کلاس button به صورت زیر می‌باشد:

value : مقدار آنالوگ خوانده شده از کلید می‌باشد.

clickFunction : تابعی است که برای رخداد Click نوشتیم

holdFunction : تابعی است  که برای رخداد Hold نوشتیم

holdDuration : مقدار زمانی است که برای تشخیص حالت Hold استفاده می‌شود و به طور پیش‌فرض دارای مقدار ۱۰۰۰ میلی‌قانیه می‌باشد.

holdInterval: مقدار زمانی است که برای تشخیص حالت Click استفاده می‌شود و به طور پیش فرض دارای مقدار پیش‌فرض ۲۵۰ میلی‌ثانیه‌ می‌باشد.

برای ساخت شی از کلاس button دو حالت وجود دارد:

در حالت اول اگر قرار بود که کلید فقط دارای وضعیت Click باشد یعنی فقط برای آن تابع Click نوشته بودیم باید طبق روش زیر  آبجکتمان را ایجاد کنیم.

که به‌جای analog_value باید مقدار خروجی کلید شماره ۱ که در ابتدای کار از روی سریال مانیتور‌ نرم‌افزار نمایش داده شد وارد کنیم. مقدار خوانده شده ۵۳ بود پس باید اینگونه کد را توسعه دهیم:

در حالت دوم: کلید هم دارای وضعیت Click و هم ضعیت Hold می‌باشد یعنی برای کلید موردنظرمان هم تابع Click و هم تابع Hold نوشتیم. پس باید طبق روش زیر آبجکتمان را ایجاد کنیم:

که  b4Click تابع نوشته شده برای رخداد Click می‌باشد همچنین   b4Hold تابع نوشته شده برای رخداد نگه داشتن کلید می‌باشد. و holdDutation مقدار زمان برای رخداد hold و holdInterval هم مقدار زمان برای رخداد Click می باشد.

پس با توجه به این الگو اگر بخوایم با نگه داشتن ۲۰۰۰ میلی ثانیه کلید تابع رخداد Hold   نمایش داده شود و هچنین زمان برای تشخیص رخداد Click  برابر ۲۰ میلی ثانیه باشد باید کد‌ها را اینگونه توسعه دهیم:

در مرحله بعدی باید توسط تابع add شی ساخته شده از کلاس button را به شی ساخته شده از کلاس analogButtons نسبت دهیم.به صورت زیر:

مثال: اکنون می‌خواهیم کلید شماره ۱و۲ را به کلاس analogButtons نسبت دهیم.

در مرحله آخر تنها کاری که باید انجام دهیم این است که دستور زیر را در loop برنامه بنویسیم:

پروژه

در این پروژه با توجه به جدول  و شماتیک زیر  برنامه‌ای می‌نویسیم که در آن ۵ کلید به پین A0 متصل شده اند و با توجه به تحریک آن یا نگه داشتن آن ، رخداد متناظر با آن کلیک بر روی سریال مانیتور نرم‌افزار نمایش داده می‌شود.

اتصال چند کلید به یک پین آردوینو
اتصال چند کلید به یک پین آردوینو
شماره کلید مقدار نمایش داده شده بر روی سریال مانیتور نرم‌افزار
۱ ۵۳
۲ ۱۰۴
۳ ۱۴۹
۴ ۱۹۰
۵ ۲۲۸

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

علیرضا قربانی

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

۵ دیدگاه

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