ساختار اصلی برنامهها در آردوئینو
در برنامهنویسی آردوئینو، ساختار اصلی هر برنامه از دو بخش اصلی تشکیل میشود: ()setup و ()loop. این دو بخش برای راهاندازی و اجرای مداوم برنامه طراحی شدهاند و در تمام پروژههای آردوئینو باید وجود داشته باشند. در ادامه به بررسی دقیق این دو بخش میپردازیم.
1. بخش ()setup
تابع ()setup در ابتدای هر برنامه آردوئینو قرار میگیرد و تنها یک بار در ابتدا هنگام روشن شدن برد یا راهاندازی مجدد آن اجرا میشود. در این بخش، شما تنظیمات اولیه و پیکربندیهای مورد نیاز برای پروژه خود را انجام میدهید.
وظایف بخش ()setup
- تنظیم پینها: برای تعیین اینکه کدام پینها به عنوان ورودی یا خروجی استفاده خواهند شد.
- راهاندازی ارتباطات سریال: برای پیکربندی ارتباط سریال و ارسال دادهها به کامپیوتر.
- راهاندازی سنسورها یا دستگاههای خارجی: اگر نیاز به راهاندازی دستگاههای خاص دارید، مانند ماژولهای سنسور یا صفحهنمایشها، این کار معمولاً در این بخش انجام میشود.
ساختار تابع ()setup
// تنظیمات اولیه و راهاندازیها
}
مثال:
در این مثال، پین 13 به عنوان خروجی و پین 7 به عنوان ورودی تنظیم میشود و ارتباط سریال آغاز میشود:
pinMode(13, OUTPUT); // تنظیم پین 13 به عنوان خروجی
pinMode(7, INPUT); // تنظیم پین 7 به عنوان ورودی
Serial.begin(9600); // شروع ارتباط سریال با سرعت 9600 بیت بر ثانیه
}
2. بخش ()loop
تابع ()loop بعد از اجرای تابع ()setup به طور مداوم و پیوسته اجرا میشود. این تابع به طور مداوم در یک حلقه تکرار میشود و تمام کدهایی که قرار است به طور مستمر اجرا شوند، در این قسمت قرار میگیرند.
وظایف بخش ()loop
- انجام عملیات تکراری: برای انجام هر عملی که نیاز به تکرار مداوم دارد (مانند خواندن دادهها از سنسورها، کنترل دستگاهها و نمایش اطلاعات).
- اجرای کدهای اصلی پروژه: هر عملیات خاصی که باید به طور مداوم انجام شود، در این بخش قرار میگیرد.
ساختار تابع ()loop
// کدهای تکراری و عملیات اصلی
}
مثال:
در این مثال، LED متصل به پین 13 روشن و خاموش میشود و مقدار ورودی از پین 7 خوانده میشود:
int sensorValue = digitalRead(7); // خواندن مقدار ورودی از پین 7
if (sensorValue == HIGH) {
digitalWrite(13, HIGH); // اگر سنسور فعال است، LED را روشن کن
} else {
digitalWrite(13, LOW); // در غیر این صورت، LED را خاموش کن
}
}
3. تفاوت بین ()setup و ()loop
- ()setup تنها یک بار هنگام شروع برنامه یا ریست برد اجرا میشود و برای انجام تنظیمات اولیه استفاده میشود.
- ()loop به صورت پیوسته و مداوم اجرا میشود و برای انجام کارهایی که باید به طور مستمر انجام شوند، استفاده میشود.
4. نکات مهم
- تابع ()setup برای آمادهسازی سختافزار و سیستم بسیار مهم است و باید تنظیمات اولیه مانند پیکربندی پینها، ارتباطات و راهاندازی دستگاهها در آن انجام شود.
- تابع ()loop هسته اصلی برنامه آردوئینو است و همه کارهای مربوط به عملکرد برنامه باید در این بخش نوشته شوند.
5. یک مثال ساده
در این مثال، یک LED به پین 13 متصل است و با استفاده از یک سنسور که به پین 7 متصل شده، چراغ روشن و خاموش میشود. در این برنامه از ()setup برای تنظیم پینها و ارتباط سریال و از ()loop برای خواندن ورودی سنسور و کنترل LED استفاده شده است.
pinMode(13, OUTPUT); // تنظیم پین 13 به عنوان خروجی برای LED
pinMode(7, INPUT); // تنظیم پین 7 به عنوان ورودی برای سنسور
Serial.begin(9600); // راهاندازی ارتباط سریال
}
void ()loop {
int sensorValue = digitalRead(7); // خواندن ورودی از سنسور
if (sensorValue == HIGH) {
digitalWrite(13, HIGH); // روشن کردن LED اگر سنسور فعال است
Serial.println("LED is ON");
} else {
digitalWrite(13, LOW); // خاموش کردن LED اگر سنسور غیرفعال است
Serial.println("LED is OFF");
}
delay(1000); // تاخیر 1 ثانیه
}
نتیجهگیری
در برنامههای آردوئینو، دو بخش اصلی ()setup و ()loop وجود دارند که هرکدام وظیفه خاصی دارند. ()setup برای انجام تنظیمات اولیه و راهاندازیها استفاده میشود، در حالی که ()loop برای اجرای مداوم و تکراری عملیات و کدهای اصلی برنامه بهکار میرود. این ساختار ساده و کاربرپسند باعث میشود که توسعهدهندگان به راحتی بتوانند برنامههای خود را برای پروژههای الکترونیکی مختلف بنویسند.
