-
يكشنبه, ۱۷ مرداد ۱۴۰۰، ۰۱:۰۶ ق.ظ
-
۹۱۷
سلام دوستان :)
امروز با یک پست رباتیکی باحال در خدمتتون هستم :)
توی این پست قراره یک ربات بسازیم که با استفاده از سه تا 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: