آردوینو - آموزش آردوینو-Arduinoتازه هاهمه ی مطالب

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

در قسمت قبل آموزش آردوینو در الکترولب به نحوه راه اندازی led چشمک زن با آردوینو پرداختیم . در این آموزش اتصال کلید به آردوینو و کنترل یک وسیله جانیی دیگر مثل led با کلید را بررسی می کنیم.

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

  • برد آردوینو (mega یا uno)
  • برد بورد برای اتصال کلید و led
  • کلید فشاری یا push button
  • LED
  • سیم برد بوردی

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

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

عملکرد کلی برنامه:

در این برنامه با فشردن کلید که به پایه 13 متصل است روشن می ‌شود و با رها کردن کلید خاموش می شود.

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

این برنامه از منوی فایل و قسمت example انتخاب شده نام برنامه Button می باشد.

// constants won't change. They're used here to 
// set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     
}

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW); 
  }
}

 

عبارت const int در سطر:

برای تعریف یک متغیر عددی در آردوینو از عبارت int استفاده می شود به طور مثال اگر بنویسیم

int a= 13

یعنی متغیر a برابر ۱۳ می شود در هر کجای برنامه می توان به جای عدد 13 از a استفاده کرد.

عبارت const در اول int به این معنی است که تا آخر برنامه مقدار متغیر a ثابت میماند و مقدار آن را تغییر نمی دهیم. پس عبارت های

const int ledPin =  13; 
const int buttonPin = 2;

به این معنی. می باشد که به جای عدد 12 می توانیم عبارت button pin و به جای عدد 13 از عبارت ledpin در دستورات استفاده کنیم.

این نوع نوشتن برنامه باعث خوانایی بیشتر برنامه می شود یعنی اگر دستور

 pinMode(ledPin, OUTPUT);

را در نظر بگیریم به جای عدد 13 از عبارت ledpin استفاده شده است. پس به راحتی می توانیم تصمیم بگیریم که باید این پایه به صورت خروجی تعریف شود.

مزیت دیگری که این نوع برنامه نویسی برای ما دارد این است که اگر بخواهیم پایه ای که led یا کلید به آن متصل است را تغییر دهیم کافی است مقدار آن را فقط در اول برنامه تغییر دهیم. و دیگر نیازی نیست که مثلاً پایه 13 را به ۵ در تمامی دستورات تغییر دهیم مثلاً اگر بنویسیم

const int ledPin = 5;

نیازی به تغییر کل دستورات نوشته شده برای تغییر برنامه نیست.

متغییر buttonstate:
int buttonState = 0;

این متغییر برای ذخیره وضعیت کلید به کار میرود در ادامه بیشتر در این مورد توضیح میدهم.

تابع setup :

در تابع setup پایه ای که led به آن متصل شده است را به صورت خروجی. و پایه ای که کلید به آن متصل است به صورت ورودی تنظیم می کنیم. در باره دستور pinmod در قسمت قبلی آموزش توضیحاتی ارایه شد.

تابع loop:

دستور digitalread:

توسط این دستور می توان از وضعیت یک پایه خبردار شد این دستور دو مقدار High و Low را بر می گرداند مثلا اگر بنویسم.

a=digitalRead(13);

اگر بر روی پایه ی 13 پنچ ولت داشته باشیم متغییر a برابر High می شود.  و در صورت صفر ولت بودن پایه در متغیر a صفر یا Low ذخیره می شود.  پس در برنامه ی ما

 buttonState = digitalRead(buttonPin);

وضعیت کلید وصل شده در متغییر buttonstate قرار می گیرد.

دستور if:

اگر با برنامه نویسی C آشنایی داشته باشید فهمیدن مفهوم این دستور برایتان ساده خواهد بود.  من در ادامه معنی دستور شرطی if… else را به طور کامل توضیح می دهم.

اگر عبارت نوشته شده در داخل پارانتز دستور if درست باشد یعنی 1 دستورات داخل کروشه if اجرا می شود در  صورت ناردست بودن شرط (یعنی 0) دستورات داخل کروشه else  اجرا می شود.

عبارت ==:

از این عبارت برای مقایسه ی دو متغییر استفاده می شود. به این صورت که اگر دو متغییر برابر باشند مقدار 1 و اگر برابر نباشند مقدار 0 را بر می گرداند.

if (buttonState == HIGH)

شرط  buttonState == HIGH به این معنی است که اگر پایه ی متصل به کلید یک شود (5 ولت کلید فشار داده شده باشد) شرط if درست بوده و دستورات داخل کروشه if اجرا می شود.

{     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  }

و led روشن می شود. ولی اگر پایه متصل به کلید صفر باشد (کلید فشار داده نشده باشد) شرط if نادرست بوده و دستورات داخل کروشه else اجرا می شود.

 else {
    // turn LED off:
    digitalWrite(ledPin, LOW); 
  }

و led خاموش می شود.

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

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

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

Related Articles

7 Comments

  1. سلام بنده قصد دارم با آردوینو2560 وmpu6050ویه فرستنده(wifi)اطلاعات رو به یه گیرنده بفرستم واونجا سرعت موتور سروو رو تغییر بدم.چن تا مشکل هس:اول اینکه مبتدی ام و تا حالا با ماژولای wifi کار نکردم به همین دلیل ماژولش رو شما پیشنهاد بدید(البته توضیحاتتون در موردESP8266خوندم).دومم اینکه با یه آردوینو کار را میافته یا برا فرستنده و گیرنده جدا باید باشه(یه چشم انداز کلی هم از مسیر انجام پروژه بدید خیلی عالی میشه).
    تشکر وسپاس فراوان بابت زحماتتون.

    1. در قسمت فرستنده که mpu هست به یک برد آردوینو و ماژول وای فای esp8266 (از هر مدلی مثلا es-07) باید استفاده کنید در گیرنده هم باید ماژول وایفای و یک برد اردوینو داشته باشید به همراه یک بافر یا درایور برای موتور سروو . اطلاعات مربوط به وای فای هم در فسمت دوم آموزش توضیح داده خواهد شد

  2. سلام
    خطای error: espcomm_upload_mem failed
    چه زمانی داده میشه ؟
    برای رفع این خطا باید چه کنیم ؟

  3. سلام مهندس
    وقت بخیر
    چه طور میشه با کلید مثلا دور یک موتر که با pwm کم یا زیاد میشه رو تغییر داد
    منظورم کم یا زیاد کردن عدد مورد نظر با موتر هست….
    ممنون میشم اگر پاسخ بدین

  4. سلام ممنون از سایت خوبتون

    یک سوال
    اگر بخواهیم با زدن کلید، ال ای دی روشن شود (نیازی به نگهداشتن کلید نباشد)

    و با زدن مجدد کلید، ال ای دی خاموش شود، چه باید کرد؟!

  5. سلام
    من میخام که با دو عدد پوش باتن یه LED را روشن و خاموش کنم یعنی به اینصورت که با فشردن پوش باتن اول LED روشن وبا پ.ش باتن بعدی چراغ خاموش بشه
    و من فقط تو قسمت buttonState مشکل دارم اگه بشه که کسی منو یه راهنمایی کنه

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

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

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