آردوینو, پروژه آردوینو

آموزش 0 تا 100 آردوینو؛ قسمت سوم

آموزش 0 تا 100 آردوینو قسمت سوم؛ نحوه خاموش و روشن کردن LED با آردوینو

در قسمت سوم از سری مطالب آموزش 0 تا 100 آردوینو می‌خواهیم نحوه خاموش و روشن کردن LED با آردوینو با استفاده از یک دکمه فشاری را آموزش دهیم. برای این کار لازم است با مفاهیم ورودی و خروجی دیجیتال در آردوینو آشنا شوید و چگونگی استفاده از آنها را بیاموزید؛ پس با بهنام رباتیک همراه باشید.

اگر دکمه بالای برد بورد را فشار دهید، LED روشن می‌شود و اگر دکمه پایینی را فشار دهید، آن را خاموش خواهید کرد.

آرایش برد بورد

بردبورد GL
بردبورد GL

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

به یاد داشته باشید که LED باید در جهت مناسب بوده و پایه کوچک آن در سمت راست باشد.

نحوه عملکرد کلید فشاری

دکمه فشاری کوچک
دکمه فشاری کوچک

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

در واقع این کلیدها دارای دو عدد اتصال هستند. پایه‌های B و C با یکدیگر و پایه‌های A و D با یکدیگر از درون اتصال دارند. علت اصلی این است که کلیدها دارای چهار پایه هستند تا به راحتی و توازن بر روی برد بورد قرار گیرند.

برنامه آردوینو

نحوه وصل کردن آردوینو به بردبورد
نحوه وصل کردن آردوینو به بردبورد

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

_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_//www.behnamrobotic.com

int ledPin = 5;

int buttonApin = 9;

int buttonBpin = 8;

byte leds = 0;

void setup()

{

  pinMode(ledPin, OUTPUT);

  pinMode(buttonApin, INPUT_PULLUP);

  pinMode(buttonBpin, INPUT_PULLUP);

}

void loop()

{

  if (digitalRead(buttonApin) == LOW)

  {

    digitalWrite(ledPin, HIGH);

  }

  if (digitalRead(buttonBpin) == LOW)

  {

    digitalWrite(ledPin, LOW);

  }

}

توضیحات کد مربوط به خاموش و روشن کردن LED با آردوینو

LED مات زرد رنگ به قطر 5 میلی متر
LED مات زرد رنگ به قطر 5 میلی متر

در قسمت دوم این سلسله مطالب، با توابع PinMode و DigitalRead آشنا شدیم. این تابع نیز دقیقاً بر عکس تابع digitalWrite عمل می‌کند و به جای آن که خروجی را 0 و یا 1 کند، مقدار 0 یا 1 بودن آن را تشخیص می‌دهد. برای مثال، فرض کنید که می‌خواهید مقدار یک سنسور را بخوانید و یا فشار دادن یک دکمه را حس کرده و واکنش نشان دهید. در این مواقع باید از این تابع بهره ببرید.

دستور if به معنای ایجاد شرط است. یعنی اگر کلید وصل شد، LED را روشن کند. در مورد این دستور در قسمت‌های بعدی این مطالب بیشتر توضیح خواهیم داد.

در قسمت اول برنامه می‌بینید که سه متغیر برای سه پایه در این پروژه در نظر گرفته شده است. متغیر ledpin به عنوان پایه خروجی LED و buttonApin مربوط به دکمه بالا و buttonBpin مربوط به دکمه پایین می‌باشد. این سه مقدار ورودی و خروجی دیجیتال در آردوینو هستند. در آموزش‌های بعدی به طور مفصل با متغیرها آشنا خواهیم شد بنابراین در این بخش تنها لازم است بدانید که از متغیر برای تعریف نام برای پایه‌ها استفاده شده است.

در تابع راه‌اندازی ledpin را به عنوان خروجی در نظر گرفتیم که برای کنترل LED امری طبیعی است اما در اینجا ما دارای دو ورودی هستیم که باید آنها را به روش زیر به ورودی‌های PULLUP تبدیل کنیم.

pinMode(buttonApin, INPUT_PULLUP);

pinMode(buttonBpin, INPUT_PULLUP)

در void loop دو عبارت شرطی داریم که هرکدام مختص یکی از کلید ها در نظر گرفته شده است. در هر عبارت از دستور ‘digitalRead’ برای خواندن ورودی دیجیتال متناظر با آنها استفاده شده است.

مفهوم پول آپ (Pull up) در زمان خاموش و روشن کردن LED با آردوینو

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

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

مفهوم پول آپ و پول داون در آردوینو
مفهوم پول آپ و پول داون در آردوینو

مفهوم پول داون (Pull Down) در زمان خاموش و روشن کردن LED با آردوینو

پول داون دقیقاً بر عکس مقاومت پول آپ است و باید پایه مورد نظر را با مقاومت به زمین وصل کرد. در آردوینو، امکان پول داون نرم‌افزاری وجود ندارد و باید از طریق یک مقاومت 10 کیلو اهم این کار را انجام دهید با این تفاوت که به جای اتصال مقاومت 5 ولت، باید آن را به GND یا همان منفی مدار متصل کنید. پس از آنجا که ورودی به طور عادی دارای مقدار HIGH می‌باشد و فقط در صورتی برابر LOW می‌شود که دکمه فشار داده شود، ما از این اتفاق به عنوان یک تغییر منطقی در توابع خود بهره می‌بریم.

به یاد داشته باشید که اگر دکمه‌ای فشار داده شود، ورودی متناظر با آن دارای مقدار LOW می‌گردد. اگر دکمه A صفر شود، از تابع digitalwire برای روشن کردن LED توسط متغیر ledpin استفاده می‌شود. به همین صورت اگر دکمه B فشرده شود، مقدار LOW بر روی متغیر ledpin نوشته شده و LED خاموش می‌گردد.

سخن پایانی

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