آموزش آردوینو پروژه سوم: چه خوش بی، مهربونی هر دو سر بی!

آموزش آردوینو پروژه سوم: چه خوش بی، مهربونی هر دو سر بی!

آموزش آردوینو پروژه سوم: چه خوش بی، مهربونی هر دو سر بی!
آموزش آردوینو پروژه سوم: چه خوش بی، مهربونی هر دو سر بی!

آموزش آردوینو، پروژه‌ی سوم:

باباطاهر عریان خیلی سال پیش فرموده: چه خوش بی، مهربونی هر دو سر بی / که یک سر مهربونی دردسر بی

با توجه به بیت بعدیِ این دوبیتی، ما حدس می‌زنیم که باباطاهر توی حال خیلی خوبی بوده! اما امکان نداره ایشون هیچ تصور می‌کرده که ما امروز، موقع آموزش آردوینو این دوبیتی به کارمون بیاد!

تا اینجا ارتباط ما یک سر بی! یعنی فقط با LED ها می‌تونستیم اطلاعاتی رو از وضعیت خروجی‌ها به‌دست بیاریم. ورودی‌ها رو هم باز از خود بورد می‌گرفتیم که خوب توفیری تو کلیت ماجرا نمی‌کرد. اما تو پروژه‌ی امروز، ارتباط رو هر دو سر می‌کنیم!

وسایل مورد نیاز:

  1. آردوینو
  2. بِرِد بورد
  3. LED، سه عدد
  4. میکرو سوئیچ
  5. سیم برد بوردی (jumper wire)، سه عدد
  6. مقاومت 330 اهم، سه عدد

شروع:

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

توی الکترونیک به این دکمه، نمیگن دکمه! چون کار رو باکلاس جلوه نمی‌ده!

اسمش رو گذاشتن “میکرو سوئیچ” که هر کی ندونه فکر می‌کنه حالا انگار چی هست! این میکرو سوئیچ دوتا پایه داره و این بچه این‌قدر خاکی و بی‌ریاس که اصلاً فرقی نمی‌کنه مثبت رو به کدوم وصل کنی منفی رو به کدوم!

این تصویر مداری هست که من طراحی کردم:

آموزش آردوینو با میکروسوئیچ

با مقاومت، ۳ تا از پایه‌ها رو وصل کردم به ۳ تا LED که پایه زمین‌شون هم با سیم به زمین بورد متصل شده. از میکرو سوئیچ هم به یکی از دیگه از پایه‌ها ارتباط برقرار‌شده که ورودی مدار باشه.

هدف این پروژه:

برنامه‌ای که باید می‌نوشتم به این صورت بود که ابتدا تمام LED ها خاموش باشن. بعد از فشار دادنِ اولین بارِ میکرو سوئیچ، اولی روشن بشه، دومین بار دومی و … . در انتها هم باز همه چراغ‌ها خاموش بشن. برنامه‌ای که نوشتم:

رفع اشکال‌های کد:

کار کرد؟ معلومه که نه! اصلاً اگه کد شما دفعه اول کار کرد حتماً یه مشکلی هست، یا توی شما یا توی کد!

اما این بار بیش‌ازحد انتظار مشکل داشت. تمامی LED ها با همدیگه روشن شدند! که خوب مشخصاً برنامه داشت بدون دلیل وارد اون شرط می‌شد.

بعد از کلی بررسی کردن متوجه شدم میکرو سوئیچ‌ها این‌قدرها هم سربه‌زیر نیستن.

چیزی به اسم پول آپ وجود داره که قاعدتاً باید اسم یه نوع بیماری باشه! اما اینجوریه که مشخص میکنه تو حالت عادی وقتی‌که کلید رو نفشردیم، چه مقداری توی ورودی بره. خوشبختانه آردوینو ما پول آپ رو به‌صورت داخلی داره و باید بهش اطلاع بدیم که فعالش کنه. درنتیجه خط زیر باید توی تابع Setup اضافه بشه:

و طبیعتاً حالا که توی حالت عادی مقدار HIGH رو خروجی میده، باید شرط رو عوض کنیم:

پس با مقدار صفر، متوجه فشرده شدن سوئیچ میشیم.

اشکال بعدی که خودم باید زودتر حدس می‌زدم اینه که وقتی شما مقداری رو توی خروجی یک پایه بورد قرار می‌دید، طبیعتاً نباید انتظار داشته باشید توی تکرار بعدی تابع Loop مقدارش پریده باشه!

یعنی اگه شما برنامه اصلاح‌شده بالا رو اجرا کنید، با فشار دادن سوئیچ LED اول روشن‌شده و با فشار دادن برای بار دوم LED دوم هم به اون ملحق میشه. پس اگه میخواید فقط یک LED روشن بمونه، لازمه قبلی رو خاموش‌کنید. پس تابع Loop رو به این صورت در میاریم:

 

خوب حالا شد!

این تغییرات هدفی که داشتیم رو برآورده میکنه. اما یه تغییر کوچیک دیگه برای باحال تر شدن پروژه اضافه می‌کنیم: اگه میکرو سوئیچ به‌صورت ممتد مثلاً برای دو ثانیه فشرده شد همه LED ها با هم روشن بشه.

این کار به‌سادگی دنیای نرم‌افزار نیست. یه جورایی شما باید دستی حساب کنید که چقدر سوئیچ فشرده‌شده! شما رو با تابع millis آشنا می‌کنم. ایشون مقدار زمانِ گذشته از آخرین اجرای بورد رو در واحد میلی‌ثانیه به شما اطلاع میدن. کاری که باید بکنیم اینه که زمانی که سوئیچ فشرده شد، زمان رو بگیریم و زمانی که رها شد، مدت‌زمان گذشته رو حساب کنیم! به نظر میاد توی آموزش آردوینو روزهای سختی پیش رو داشته باشیم!

کد پروژه بعد از تمام این تغییرات:

نکات:

مقدار 1- رو به این دلیل قرار دادیم که موقعی که سوئیچ فشرده‌شده و چندین بار Loop اجرا میشه، هر بار مقدار جدیدی نگیره.

موقعی که شما فکر می‌کنید که یک لحظه سوئیچ رو فشار دادید، ممکنه 100 دفعه تابع Loop اجرا بشه. برای همین به میزانی از delay نیاز دارید.

 

حمایت از meisam

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

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

0 دیدگاه

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

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

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

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

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

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

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک