اتصال کلید به آردوینو بدون استفاده از مقاومت بالا کشنده

جلسه هفتم: اتصال کلید به آردوینو

در مثال قبلی (نحوه برنامه نویسی و اتصال کلید به آردوینو) از مبحث آموزش آردوینو با نحوه اتصال کلید به برد آردوینو و برنامه نویسی آن آشنا شدیم. همانطور که یاد گرفتیم برای اتصال کلید به آردوینو نیاز به یک مقاومت بالا کشنده (Pull-up Resistor) و یا مقاومت پایین کشنده (Pull-Down Resistor) داریم تا بتوانیم وضعیت متقارن کلید یعنی صفر یا یک را ایجاد کنیم. اما در آردوینو قابلیتی به نام مقاومت بالا کشنده داخلی (Pull-up Resistor) وجود دارد که با فعالسازی آن دیگر احتیاجی به اتصال مقاومت بالا کشنده خارجی به برد آردوینو نیست و این موضوع باعث می شود تا در طراحی مدارات حرفه ای و یا مداراتی که نیاز به تعریف ورودی های زیاد دارند از حجم پیچیدگی مدار به شدت کاسته شود.


لیست قطعات مورد نیاز

برد آردوینو Arduino UNO R3 مدل DIP1 عدد
تک سوئیچ 2 پایه DIP سایز 6x6x5 میلیمتر1 عدد
لامپ LED سبز سایز 5mm میلی متر مدل مات1 عدد
مقاومت 220 اهم با توان 0.25 وات و تلرانس 1 درصد1 عدد
برد بورد (پروجکت برد) مدل GL1 عدد
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی)1 عدد

اتصال لامپ LED به آردوینو

ابتدا مطابق نقشه شماتیک زیر یک لامپ LED را به پایه دیجیتال شماره 13 آردوینو متصل کنید. به این صورت پایه بلند لامپ ال ای دی که نشان دهنده پلاریته مثبت آن است را به واسطه مقاومت 220 اهمی به پایه مربوطه در آردوینو که در بالا ذکر شد متصل کنید. و پایه کوتاهتر لامپ ال ای دی که نشان دهند پلاریته منفی آن است را به منفی منبع تغذیه یا پایه GND بر روی آردوینو متصل کنید.

بعد قبل
نحوه اتصال لامپ LED به برد آردوینو
نحوه اتصال لامپ LED به برد آردوینو
بعد قبل

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

سپس مطابق دو تصویر زیر و نقشه شماتیک باید یک کلید را به آردوینو متصل کنید. برای این منظور کافی است ابتدا یک پایه کلید را توسط یک تکه سیم به منفی منبع تغذیه با همان پایه GND در آردوینو متصل کنید. سپس پایه دوم کلید را با یک تکه سیم به پین دیجیتال شماره 2 آردوینو متصل کنید. با توجه کردن به نقشه شماتیک متوجه خواهید شد با فشردن کلید ولتاژ منفی به پایه شماره 2 آردوینو متصل می شود و در نتیجه این پایه وضعیت 0 می گیرد، و زمانیکه شما کلید را رها می کنید پایه شماره 2 آردوینو آزاد می شود، یعنی نه ولتاژ منفی و نه مثبت می گیرد، پس وضعیت یک چگونه ایجاد می شود!!!

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

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

برقراری ارتباط سریال در آردوینو

در این پروژه علاوه بر اینکه می خواهیم با استفاده از یک کلید یک لامپ LED را روشن و خاموش کنیم، می خواهیم وضعیت کلید را نیز در محیط سریال نرم افزار آردوینو مشاهده کنیم. به همین خاطر تنها کاری که برای برقراری ارتباط سریال لازم است انجام دهید، استفاده از دستور زیر است. توسط دستور زیر می توانید ارتباط سریال را پیکر بندی کنید. برای ارتباط سریال نیاز است تا یک باود ریت (پهنای باند) برای پردازشگر آردوینو تعریف نمائید. لازم به ذکر است این مقدار باید در هر دو دستگاه که در اینجا برد آردوینو و کامپیوتر است باید یکسان باشد.

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

در ادامه برنامه به دلیل اینکه در این مثال ما کلید را به پایه دیجیتال شماره 2 آردوینو متصل کرده ایم به همین لازم است توسط دستور زیر این پین از آردوینو را به عنوان ورودی تعریف کنیم. توجه کنید در دستور زیر با نوشتن کد PULLUP در ادامه دستور INPUT به صورت INPUT_PULLUP مقاومت بالا کشنده داخلی را نیز فعال کرده ایم.

تعریف پایه های آردوینو به صورت خروجی

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

خواندن وضعیت پایه های آردوینو

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

بعد از خواندن مقدار دیجیتال که در این مثال همان وضعیت کلید است، لازم است آنرا ذخیره کنیم. برای ذخیر وضعیت کیلد لازم است در حلقه اصلی برنامه یک متغیر تعریف کنیم و مقدار دیجیتال خوانده شده را به صورت مستقیم در آن بریزیم. از آنجا که خروجی دیجیتال می تواند عدد یک یا صفر باشد، تعریف یک متغیر از نوع Int کفایت می کند. به همین دلیل طبق دستور زیر ابتدا یک متغیر به نام sensorValue از جنس Int تعریف می کنیم و مقدار دیجیتال خوانده شده را درون متغیر می ریزیم.

چاپ مقدار متغیر در محیط سریال

کار تمام است، تا به اینجا کار ما ارتباط سریال را پیکربندی کردیم. پایه دیجیتال شماره 2 آردوینو را به عنوان ورودی و پایه شماره 13 آردوینو را به عنوان خروجی تعریف کردیم و در ادامه مقدار دیجیتال خوانده شده از پین دیجیتال شماره 2 آردوینو را در یک متغیر به نام sensorValue از جنس Int ریختیم. حالا فقط یک قدم به پایان کار مانده است و آن هم چاپ مقدار متغیر sensorValue در محیط سریال است. که این کار به راحتی توسط دستور Serial.println() قابل انجام است. برای اینکه این دستور کامل شود تنها لازم است در داخل پرانتز نام متغیری که می خواهیم چاپ کنیم را همانند دستور زیر درج نمائیم. همچنین در این دستور با نوشتن کلمه DEC در انتهای کد دستوری به آردوینو می فهمانیم که مقدار متغیر sensorValue را به صورت مقدار دسیمال (Decimal) در محیط سریال چاپ کند.

در انتهای برنامه برای اینکه بتوانیم وضعیت لامپ LED را با استفاده از کلید کنترل کنیم یک دستور شرطی بسیار ساده می نویسیم که در آن شرط می گذاریم اگر متغیر sensorValue که حاوی وضعیت کلید است برابر یک بود لامپ LED خاموش شود و در غیر اینصورت اگر وضعیت متغیر sensorValue برابر با صفر بود لامپ LED روشن شود. لطفا توجه داشته باشید وضعیت یک به این معنی است که کلید فشرده نشده است چراکه ورودی کلید به منفی تغذیه متصل شده است و زمانیکه کلید فشرده شود پایه شماره 2 آردوینو وضعیت صفر به خود می گیرد.

سورس کد برنامه در نرم افزار آردوینو

آموزش صفر تا صد برنامه نویسی بردهای آردوینو – جلسه هفتم

 اطلاعات پروژه

 رمز فایل : www.electronics98.com (این مطلب فاقد فایل جهت دانلود است)

 محیط برنامه نویسی : Arduino (IDE)

 برنامه نویسی شده به زبان : ترکیبی از برنامه نویسی به زبان سی (C) یا سی پلاس پلاس (++C)

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 15 آوریل 2018

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

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

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