آموزش آردوینو پروژه چهارم
خیلی معقول نیست که توی عصر ارتباطات و دهکده جهانی و پیتزا، شما توی فضای یک وجبی برد بورد، خودتون رو حبس کنید! منزوی و درونگرا نباشید و سعی کنید ارتباطات تازه برای خودتون دست و پا کنید. چجوری؟ یکم اطرافتون رو نگاه کنید تا ببینید چه چیز جدیدی برای ارتباط میشه پیدا کرد. نه اون نه! منظورم اون نیست! بله همون کامپیوتر یا لپتاپی که بورد تون رو بهش متصل کردید دیگه. در واقع از همون روز اول بهش متصل بودیم اما مثل انگل ازش فقط بهعنوان منبع تغذیه استفاده کردیم. حالا وقتشه کمی باهاش صحبت کنیم!مدار:
امیدوارم مداری که اینجا طراحی کردیم رو خیلی در به داغون نکرده باشید؛ چون میتونیم فقط با یکم تغییر، پروژه چهارم آموزش آردوینو رو باهاش انجام بدیم. اون میکرو سوئیچ و سیم های اضافه رو بردارید و مدار رو شکل زیر کنید. از این ساده تر هم میشه؟ خوب بله احتمالاً میشه اما همینم خوبه دیگه!هدف پروژه:
قراره همون ۳ تا LED پروژه سوم رو به همون شیوه، روشن و خاموش کنیم؛ اما این بار بهجای دکمه، از کامپیوتر بهش دستور میدیم. من کدهای اضافی رو حذف کردم و به این کد تبدیلش کردم:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | int incomingByte = 0; int buttonStatus=1; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); Serial.begin(9600); Serial.print("Hello"); } void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); Serial.print("I received: "); Serial.println(incomingByte, DEC); } for(int i=2;i<5;i++) { if(i==buttonStatus || buttonStatus==6) digitalWrite(i, 10); else digitalWrite(i, LOW); } } |
1 | buttonStatus=incomingByte-48; |
ارتباط با شیلدها:
ارتباط بعدی چیه؟ درسته بورد های آردوینو فوقالعاده هستند اما انتظار ندارید که تمام عمرمون رو با همین فسقلیها تلف کنیم؟! بوردهای آردوینو، بوردهای جانبی رو هم پشتیبانی میکنن که اصلاحاً بهشون Shield میگن. یعنی شما یه بورد دیگه که امکان خاصی بهتون میده رو بر میدارید و پیوندش میدید به همین آردوینوها تا ببینیم چی از توش در میاد! فعلا من توی خنزر پنزرهام فقط یه جوی استیک مخصوص آردوینو دارم. پس چاره ای نداریم جز اینکه از همون استفاده کنیم! میخواهیم باهاش یکم بازی کنیم. به نظر کلا جوی استیک فقط برای بازیه! این دسته جوی استیک رو چهار هزار تومان تهیه کردیم. همینطور که می بینید پایههاش طوری هستند که نمیشه توی برد فرو کرد و باید سیمهای یک سر مادگی و یک سر نری داشته باشید. من چندتاشون که به هم چسبیده رو دارم.معرفی پین آنالوگ به برنامه:
خوب اولین باره که داریم از پینهای آنالوگ استفاده می کنیم. چطور معرفیشون کنیم؟ این خطها رو توی setup اضافه میکنیم:1 2 3 | pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(7, INPUT); |
صورتمسئلهی نهایی:
اگه دکمه جوی استیک زده شد، کنترل از دست سریال خارج بشه و با جوی استیک Led ها رو روشن خاموش کنیم. اگه به سمت راست حرکت کرد Led سمت راست رو روشن میکنیم. برای چپ هم همینطور. بالا و پایین رو هم نور Led وسط رو کم و زیاد میکنیم. اول متغیرهایی که فکر میکنیم لازمه رو معرفی میکنیم و یک سری متغیر هم برای استاندارد شدن کد استفاده میکنیم:1 2 3 4 5 6 7 8 9 10 | int joyleftRight; int joyUpDown; bool joySelected=false; // int leftLed=4; int centerLed=3; int rightLed=2; int buttonPin=7; // |
نمونه کد بعد از تغییرات:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | //by Sissog //آموزش آردوینو قسمت چهارم int incomingByte = 0; int buttonStatus=1; int joyleftRight; int joyUpDown; bool joySelected=false; // int leftLed=4; int centerLed=3; int rightLed=2; int buttonPin=7; // // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(rightLed, OUTPUT); pinMode(centerLed, OUTPUT); pinMode(leftLed, OUTPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(buttonPin, INPUT); digitalWrite(buttonPin, HIGH); Serial.begin(9600); Serial.print("Hello"); } // the loop function runs over and over again forever void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); buttonStatus=incomingByte-48; Serial.print("I received: "); Serial.println(incomingByte, DEC); } joyleftRight= analogRead(A2); joyUpDown= analogRead(A1); joySelected= (digitalRead(buttonPin) == 0 ? !joySelected: joySelected); for(int i=2;i<5;i++) { if((!joySelected) && (i==buttonStatus || buttonStatus==6)) digitalWrite(i, 10); else if(joySelected) { analogWrite(centerLed,joyUpDown/4); if(0<=joyleftRight && joyleftRight<450) digitalWrite(rightLed,HIGH); else if(550<joyleftRight ) digitalWrite(leftLed,HIGH); else digitalWrite(i, LOW); } else digitalWrite(i, LOW); } delay(200); } |
سلام.من تا شماره چهار مطالب آردویینو رو خوندم ولی فقط یه مشکلی که داشت این بود که کد هایی که نوشته شده بود راه حلی برای نوشتنش یا جاهایی که باید نوشته میشد گفته نشده بود و فقط کد ها نوشته شده بود و کسی که میخوند فقط باید کپی میکرد.
ببخشید منظورتون رو درست متوجه نمیشم ! ، توی پست اول آموزش نحوه اینه که ادیتور رو چطور و از کجا دانلود کنید و چطور استفاده کنید.
اگر هم منظور شما نحوه کار با توابع هست که می تونید به رفرنس های آردوینو که توسط سیسوگ ترجمه شده اند مراجعه کنید.
داره جالب میشه این داستان آردینوی شما
ممنون، به زودی وارد دنیایی دیگری از آردوینو می شویم که خودمان هم شب ها از هیجانش خواب نداریم!