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

آشنایی با دستورات پایه و مروری بر جلسات قبل
در جلسه دوم در مورد ساخت چشمک زن کامل توضیح داده شد؛ در جلسه قبل از هیچ مداری استفاده نکردیم و از چراغ LED روی بورد آردوینو استفاده کردیم زیرا برای ورود به مبحث سخت افزار لازم است مواردی را بدانید. در ادامه در مورد سخت افزار آردوینو و خلاصه ای از جلسات قبل را مرور میکنیم…
در سری آموزش آردوینو مقدماتی از بورد آردوینو UNO استفاده میکنیم. (شما نیز میتوانید از آردوینو Duemilanove استفاده کنید) زیرا این بورد ها برای شروع مناسب هستند و قیمت تقریبا پایینی دارند و علاوه بر سخت افزار ساده، چیپ مبدل USB به سریال (برای پروگرم کردن بورد) روی بورد قرار گرفته است.
ابتدا با نصب نرم افزار آردوینو و طی کردن مراحلی که در جلسه اول گفته شد، نرم افزار و برد آردوینو خود را تست کنید.
با زدن دکمه آپلود، کد های نوشته شده، روی حافظه فلش میکروکنترلر نوشته میشوند و حتی با قطع جریان برق کد ها باقی میمانند. در جلسه دوم متغیری از نوع int برای ذخیره عدد روی آن و قرار دادن و استفاده آن در کد تعریف کردیم.
متغیر ها روی حافظه SRAM میکروکنترلر ذخیره میشوند و با قطع جریان برق از بین میروند؛ گاهی ممکن است بخواهید مقدار یک متغیر را در آردوینو بدون آنکه با قطع برق از بین بروند ذخیره کنید. برای اینکار کافی است اطلاعات / متغیر ها را روی حافظه EEPROM ذخیره کنید.
این نوع حافظه مانند حافظه فلش یا یک هارد دیسک عمل میکند و حتی با قطع جریان اطلاعات روی آن ذخیره میشود و میتوان دوباره آنها را خواند. مبحث EEPROM خود نیاز به یک جلسه جداگانه دارد.
پین ها
آردوینو دارای پین های آنالوگ و دیجیتال است که هرکدام کاربرد خاصی دارند؛ معمولا از پین های دیجیتال برای روشن و خاموش کردن یک LED، رله، موتور و… استفاده میشود و از پین های آنالوگ برای خواندن مقادیر سنسور ها، مقاومت ها، کلید ها و… استفاده میشود.
برای آشنایی با مقاومت و بقیه المان های الکترونیکی، آموزش های الکترونیک شیراز کدرز را مطالعه کنید. این پین ها کاربرد های دیگری نیز دارند که در جلسات بعدی گفته خواهد شد.
برنامه نویسی
در صورتی که جلسات قبلی را مطالعه نکرده اید و یا اگر با سخت افزار آردوینو آشنایی لازم را ندارید، ابتدا آن ها را مطالعه کنید.
برنامه نویسی آردوینو نسبت به میکروکنترلر ها و پلتفرم های دیگر ساده تر است. تعدادی از دستورات ابتدایی آردوینو را در زیر مشاهده میکنید:
digitalWrite(PIN, VALUE);
digitalRead(PIN);
pinMode(PIN, MODE);
delay(TIME_IN_MS);
Serial.read(CLASS);
Serial.print(String|Int|Char);
در ادامه به توضیح تمامی این دستورات میپردازیم:
pinMode(PIN, MODE);
با این دستور پاین مورد نظر را برای خروجی با ورودی تنظیم میکنیم (فعلا به ورودی نیاز نداریم). به جای PIN پین مورد نظر آردوینو را قرار دهید و به جای MODE حالت مورد نظر را وارد کنید. در لیست زیر مقادیر MODE را بررسی میکنیم:
حالت | مقدار |
خروجی | OUTPUT |
ورودی | INPUT |
ورودی به صورت پول آپ | INPUT_PULLUP |
برای مثال، برای تعریف پین 2 آردوینو به عنوان خروجی از دستور زیر استفاده میکنیم:
pinMode(2, OUTPUT);
digitalWrite(Pin, VALUE);
به وسیله این دستور میتوانید مقداری به پین مورد نظر اعمال کنید. معمولا برای استفاده از این دستور ابتدا پین مورد نظر را به عنوان خروجی تعریف میکنیم.پس از تعریف پین مورد نظر به وسیله این دستور میتوانیم به آن مقدار مورد نظر(خاموش / روشن) را اعمال کنیم.
بجای PIN پایه مورد نظر آردوینو و بجای VALUE مقدار مورد نظر را وارد کنید. لیست مقادیر VALUE را در زیر مشاهده میکنید:
مقدار به فارسی | مقدار باینری (0 و 1) | نام مقدار |
روشن | 1 | HIGH |
خاموش | 0 | LOW |
مثلا برای روشن کردن پین 2 که قبلا به عنوان خروجی تعریف شده است میتوانیم از یکی از دستورات زیر استفاده کنیم:
digitalWrite(2, HIGH);
digitalWrite(2, 1);
و برای خاموش کردن پین 2 از یکی از دستورات زیر استفاده میکنیم:
digitalWrite(2, LOW);
digitalWrite(2, 0);
توجه: منظور از خاموش این است که روی پین موردنظر 0 ولت و منظور از روشن قرار دادن ولتاژ 5 ولت روی پین موردنظر است.
delay(TIME);
با استفاده از این دستور میتوانید در هرکجای کد، تاخیری به اندازه دلخواه ایجاد کنید. فقط کافیست بجای TIME مقدار زمان مورد نظر خود را به میلی ثانیه وارد کنید. مثلا برای یک ثانیه تاخیر از کد زیر استفاده میکنیم:
delay(1000);
دستورات و توابع گفته شده، دستورات پایه آردوینو هستند که فقط با همین چند دستور میتوانید وسیله های کاربردی بسیاری بسازید!
بدنه کد
برای استفاده کردن از دستورات گفته شده باید آنها را در تابع مورد نظر قرار دهید؛ برای این کار کافی است کد زیر را در نرم افزار آردوینو بنویسید (نرم افزار آردوینو به طور خودکار با ساخت یک سند جدید این کد ها را اضاف میکند)
void setup(){
// Setup
}
void loop(){
// Codes
}
در قسمت setup باید مقدار دهی اولیه و دستوراتی که فقط میخواهید یک بار در کد تکرار شوند بنویسید؛ اما در loop باید کد های اصلی را بنویسید که تا زمانی که تغذیه آردوینو متصل باشند اجرا میشوند.
در setup دستوراتی مانند pinMode و تنظیمات serial آردوینو قرار داده میشود که در ادامه به آن میپردازیم.
سریال – Serial
یکی از پروتکل های ارتباطی آردوینو، پروتکل سریال است. شما میتوانید از سریال برای تبادل داده بین آردوینو و کامپیوتر یا دیگر ماژول ها و میکروکنترلر ها استفاده کنید.
Serial.begin(BAUD_RATE);
برای شروع ارتباط سریال، باید از این تابع استفاده کنید. پارامتر این تابع، مقدار باود ریت یا سرعت انتقاد داده موردنظر است. معمولا از 9600 و 115200 استفاده میکنیم. اما بهتر است از یک مقدار استاندارد استفاده کنید. در جدول زیر مقادیر استاندارد را مشاهده میکنید:
2400 |
9600 |
19200 |
28800 |
38400 |
57600 |
19200 |
Serial.print(VALUE);
برای چاپ مقادیر روی سریال از این تابع استفاده میکنیم. پس از مشخص کردن باودریت میتوانید از این دستور استفاده کنید. در زیر یک نمونه کد برای چاپ متن در سریال مشاهده میکنید:
void setup(){
Serial.begin(9600);
Serial.print("Hello wordl!");
Serial.print(1234);
Serial.print('A');
}
void loop(){
}
ابتدا کد بالا را روی آردوینو خود آپلود کنید. سپس بورد آردوینو را به کامپیوتر متصل کنید و پورت را انتخاب کنید و سریال مانیتور را باز کنید و باودریت را روی 9600 یا مقداری که در کد گذاشته اید قرار دهید (با دکمه سریال یا با کلید های ترکیبی ctrl+shift+M)
نتیجه:
در کد بالا تمامی متون و اعداد در یک خط چاپ میشوند زیرا از تابع print استفاده کردیم. برای شکستن خطوط میتوانید پس از چاپ متن از \n استفاده کنید و یا از تابع println استفاده کنید:
Serial.print("Hello world\n");
Serial.println("Hello world");
اگر نمونه کد بالا را امتحان کنید خواهید دید که در سریال مانیتور مقادیری چاپ میشوند(تنها یک بار)، اما اگر کد ها را در loop فرار دهید خواهید دید که کد ها تا ابد ادامه خواهند داشت!
مانند کد زیر:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print("Hello wordl!");
Serial.print(1234);
Serial.print('A');
// delay(1000);
}
اما میتوانید با اضافه کردن یک delay به آخر کد از چاپ لحظه ای جلوگیری کنید.
با تشکر از همراهی شما، جلسه سوم نیز به اتمام رسید؛ در این جلسه با سریال و توابع ابتدایی آشنا شدیم. در جلسه چهارم آشنایی کامل را با سریال و متغیر ها پیدا میکنید.
درباره admin_hb
حسین بذرافکن هستم، برنامه نویس، فریلنسر و عاشق الکترونیک...
نوشته های بیشتر از admin_hb
دیدگاهتان را بنویسید