وبلاگ فربد | Farbod Blog

توی این وبلاگ راجع به پروژه هام صحبت می کنم

حساب کردن میانگین با pushbutton در آردوینو

  • ۹۱۷

سلام دوستان :)

امروز با یک پست رباتیکی باحال در خدمتتون هستم :)

توی این پست قراره یک ربات بسازیم که با استفاده از سه تا pushbutton از ما ورودی بگیره و میانگین اونارو حساب کنه و اگر یک یا هر دو عدد به 21 رسیدن اونارو دوباره از 1 حساب کنه(این قسمت صرفا برای چالشی تر شدن پروژه هستش و بودن یا نبودش فرقی نداره). مثلا اگر 27 داشته باشیم 7 میگیره یا اگر 25 داشته باشیم 5 میگیره.

خب قطعات مورد نیاز برای این پروژه اینا هستن:

1- سه تا pushbutton

2- آردوینو (هر نوعی)

3- سه تا مقاومت 330 اهم

4- یازده تا سیم نری به نری

 

خب اول از همه بریم برای بستن مدار :)

 

مدار:

خب حالا که مدار رو بستیم بریم سراغ برنامه.

کد:

int pushbutton1;
int pushbutton2;
int pushbutton3;
int value1 = 0;
int value2 = 0;
float value3 = 0;
int pushbuttonpin1 = 8;
int pushbuttonpin2 = 9;
int pushbuttonpin3 = 10;
bool value1_above20 = false;
bool value2_above20 = false;

void setup() 
{
  pinMode(pushbuttonpin1, INPUT);
  pinMode(pushbuttonpin2, INPUT);
  pinMode(pushbuttonpin3, INPUT);
  Serial.begin(9600);
}

void loop() 
{
  pushbutton1 = digitalRead(pushbuttonpin1);
  pushbutton2 = digitalRead(pushbuttonpin2);
  pushbutton3 = digitalRead(pushbuttonpin3);

  if(pushbutton1 == LOW)
  {
    value1++;
    delay(200);
    if(value1 > 20)
    {
      value1_above20 = true;
      value1 = 1;
    }
  }
  if(pushbutton2 == LOW)
  {
    value2++;
    delay(200);
    if(value2 > 20)
    {
      value2_above20 = true;
      value2 = 1;
    }
  }
  if(pushbutton3 == LOW)
  {
    if(value1_above20 == true || value2_above20 == true)
    {  
      Serial.println("Warning: numbers above 20 are not allowed. your number will start from 1");
      Serial.println("**********************************************************************");
    }
    value3 = (value1 + value2) / 2;
    Serial.print("first number: ");
    Serial.println(value1);
      
    Serial.print("second number: ");
    Serial.println(value2);
    
    Serial.print("mean: ");
    Serial.println(value3);

    value1 = 0;
    value2 = 0;
    value3 = 0;
    delay(200);
  }

}

توضیح: اول سه تا متغییراز نوع int تعریف کردیم که مقادیر pushbutton ها رو(0 یا 1) داخلش ذخیره میکنه. بعد سه تا متغییر value درست کردیم که تعداد دفعاتی که کلید فشار داده میشه رو داخلش ذخیره کنه. بعد از اون هم سه تا متغییر دیگه تعریف کردیم که شماره پین کلید ها رو داخلش ذخیره میکنه. دو تا متغییر دیگه از نوع bool هم تعریف کردیم که اگر مقدار هر کدومشون بیشتر از 20 شد اون رو برابر true قرار بدیم و با چک کردن اون متغییر یک پیغام چاپ کنیم که یک وقت کاربر فکر نکنه برنامه مون خرابه :)))

توی void setup اومدیم pinMode های کلید هامون رو تعریف کردیم و با استفاده از دستور Serial.begin به کامپیوتر و آردوینو گفتیم که آماده برقراری ارتباط با سقف 9600 بایت در ثانیه باشن.

توی void loop اول از همه 3 تا متغییر تعریف کردیم که مقدار کلید ها رو میخونه که ببینه الان کلید فشار داده شده یا نه. بعد چندتا if نوشتیم. توی if اول گفتیم که اگر pushbutton1 برابر LOW بود (یعنی فشار داده شده بود) اول به مقدار متغییر value1 یکی اضافه کنه و بعد یک delay بده(که برنامه هنگ نکنه) و متغییر value1_above20 رو برابر true قرار میدیم.

توی if بعدی هم به همین شکل عمل کردیم فقط برای value2 و کلید شماره دو اینکار رو انجام دادیم.

توی if بعدی گفتیم اگه کلید شماره 3 رو فشار دادیم اول بیاد چک کنه که اگر یکی از اعداد (یا دو تا عدد) بزرگتر از 20 بود(با استفاده از boolean هایی که قبلا تعریف کرده بودیم) میانگین مقدار اول و دوم رو حساب کنه و داخل متغییر value3 بریزه. بعد هم مقدار کلید اول ، دوم و سوم رو چاپ کنه و نشون بده. در آخر هم تمام value ها رو صفر میکنه و یک delay میده (باز هم برای اینکه هنگ نکنه).

 

اینم از این :)))

امیدوارم براتون مفید بوده باشه D:


  • چقدر عالی و خلاقانه
    مرسی واقعا
    پاسخ:
    سلام دوست عزیز
    ممنون از ابراز لطف و همراهی شما
    موفق باشید
  • سلام
    خیلی عالی بود
    من مدار بستم و برنامه رو نوشتم و اجرا کردم،دقیق و کامل بود
    میخواستم ازتون تشکر کنم و بگم لطفا پست های مربوط به رباتیک بیشتر بذارین
    پاسخ:
    سلام دوست عزیز
    خوشحالم از اینکه براتون مفید بوده
    موفق باشید
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی