تو مطلب قبلی براتون از آردوینو گفتم که چی هست و از کجا پیداش شد. برای اینکه با آردوینو کار کنید باید زبونش رو بفهمید تا بتونید باهاش صحبت کنید. چون قراره خیلی ساده بگم یه کم از برنامه نویسی براتون میگم تا بیشتر آشنا بشید.
هر زبان برنامه نویسی یه سری قواعد داره و یه سری دستورات فانکشنهای از پیش تعریف شده. زبان برنامه نویسی آردوینو C هستش. برای نوشتن برنامه و کامپایل اون به Arduino IDE نیاز دارین که میتونید اون رو از اینجا دانلود کنید. بعد از نصب و باز کردن IDE با چنین صحنهای مواجه خواهید شد.
وقتی کامپیوتر شخصیتان رو روشن میکنید یه سری اتفاقات اون پشت میافته. مثلا شناسایی هارد دیسک چک کردن سالم بودن سخت افزارها مثل رم و ... بعد از این جریانات سیستم عامل بالا میاد و شما شروع به کار میکنید. بورد آردوینو هم تقریبا این شکلی است. اگر به کد دقت کنید میبینید که دو بلاک (block) اصلی دارد. به قسمتهایی که توسط کروشه {} مشخص میشود بلاک میگویند. بلاک setup مربوط به اتفاقاتی است که هنگام بالا اومدن (boot) بورد رخ میدهد و بلاک loop تا زمانی که برق قطع نشود یا بورد ریست نشود به طور مداوم اجرا میشود.
قواعد و سینتکس زبان C رو میتونید از اینجا ببینید. چنتا پیش پا افتاده شو میگم براتون که کارتون راه بیفته. اول اینکه آخر هر خط باید سمی کالن (;) باشه. چند مدل متغیر در C داریم که باید به تناسب برنامه از اونها استفاده کنید. مثلا برای مقادیر عددی int, float, double ... و برای مقادیری مانند متن و اینا char, String.
تو مطلب قبلی براتون گفتم که یک بورد آردوینو چند پورت IO داره. این پورتها میتونند ورودی یا خروجی باشن. قبول کنید که آردوینو علم غیب نداره که بفهمه ما کدوم پورت رو به عنوان ورودی استفاده کردیم یا خروجی! پس تو قسمت setup باید براش بگیم که قصد داریم با پورتهاش چیکار کنیم. به این کد دقت کنید:
void setup { pinMode(7, OUTPUT); pinMode(8, INPUT_PULLUP); pinMode(5, INPUT); }
در این کد پورت ۷ به عنوان خروجی و پورت ۸ و ۵ به عنوان ورودی مشخص شدهاند. فرق input با input_pullup خیلی ساده است. وقتی پایهای به صورت input مشخص شود شما باید چک کنید مقدار آن ۱ یا صفر است. یعنی اگه به این پایه +5V وصل کنید مقدارش ۱ یا HIGH میشه و اگه صفر ولت یا همون GND وصل کنید مقدارش صفر یا LOW میشه. در input_pullup پایه با یک مقاومت داخلی میکروکنترلر به +5V وصل میشه. بنابرین اگه شما یک کلید سر راه اون پایه بذارین و اون سر دیگه کلید رو به GND وصل کنید با فشردن کلید پایه LOW میشه و فقط در کد نیاز دارین که چک کنید آیا این پایه LOW شده یا نه و اگر شده بود اون کاری که لازمه رو انجام بدین.
میخایم مداری که در مطلب قبل نشون دادم رو پروگرام کنیم. همونطور که در عکس میبینید یک led به پایه ۷ وصل شده.
void setup { pinMode(7, OUTPUT); } void loop { digitalWrite(7,HIGH); delay(1000); digitalWrite(7,LOW); delay(1000); }
یک کد ساده برای این مدار نوشتم. در این کد از digitalWrite استفاده کردم. این دستور به آردوینو میگه که اون پایهای که مشخص کردیم خروجیش صفر باشه یا ۱ (HIGH و LOW کار صفر و یک رو انجام میدن، یعنی هم میتونید عدد ۰ و ۱ رو بذارین هم از این دو کلمه استفاده کنید). بعد از دستور delay استفاده کردم که باعث میشه اجرای دستورات ما به اندازه زمانی که مشخص کردیم وقفه بیفته. این زمان بر حسب میلی ثانیه است که هر ۱۰۰۰ میلی ثانیه میشه یک ثانیه. پس یک ثانیه led روشن میمونه و میرسه به دستور بعدی که مقدار پایه رو LOW کرده پس led خاموش میشه و تا یک ثانیه خاموش میمونه. چون این کد رو در قسمت loop نوشتیم تا بینهایت تکرار میشه و led چشمک میزنه. دقت کنید که در قسمت setup تکلیف خودمو با پایه روشن کردم که باید OUTPUT باشه. اگه این کار رو نکنید led روشن نخواهد شد.
کد ما آماده است. الان باید آردوینو رو با کابل USB به سیستمتون وصل کنید. از منوی Tools > Board مطابق شکل زیر Ardunio/Generic UNO رو انتخاب کنید.
دوباره از منوی Tools > Port باید پورتی که توسط آن کامپیوتر شما آردوینو رو شناخته انتخاب کنید. این پورت معمولا COM3 یا بالاتر است. (COM1 و COM2 توسط سیستم رزرو شده) اگر در منوی پورت چیزی نمیبینید کابل usb رو قطع کنید و مجدد وصل کنید. دقت کنید اسم این پورتها در لینوکس فرق داره و برای پروگرام کردن باید دسترسیهایی به اون پورت بدهید برای اطلاعات بیشتر اینجا رو بخونید.
همه چی آماده است. دکمه پروگرام رو بزنید تا آردوینو پروگرام شود. بعد از آن خواهید دید که led برایتان چشمک میزند.