آردوینو – ساختار برنامه

ساختار برنامه در میکروکنترلرها
زبانهای C و C++ از پرکاربردترین زبانها در برنامهنویسی میکروکنترلرها هستند. این زبانها به دلیل سرعت بالا، دسترسی مستقیم به سختافزار و قابلیت انعطافپذیری، در توسعه سیستمهای نهفته بسیار محبوب هستند. در این مقاله، به بررسی ساختار کدنویسی به زبان C/C++ برای میکروکنترلرها میپردازیم و این مفاهیم را در قالب آردوینو توضیح میدهیم.
ساختار کلی برنامه به زبان ++C/C
در برنامهنویسی میکروکنترلرها با زبان C، ساختار کلی برنامه شامل دو بخش اصلی است:
- تابع اصلی
int main()
: تمام دستورات و فرآیندها از اینجا شروع میشوند. این تابع نقطه ورود برنامه به شمار میرود. - حلقه بینهایت
while(1)
: برای اجرای مداوم دستورات استفاده میشود، زیرا میکروکنترلرها به صورت پیوسته و بیوقفه در حال اجرا هستند.
#include // Library for accessing registers
int main() {
DDRB |= (1 << PB0); // Set PB0 pin as output
while (1) {
PORTB |= (1 << PB0); // Turn ON the LED
_delay_ms(1000); // Delay for 1 second
PORTB &= ~(1 << PB0); // Turn OFF the LED
_delay_ms(1000); // Delay for 1 second
}
return 0;
}
توضیح کد:
#include <avr/io.h>
: این کتابخانه برای دسترسی به رجیسترهای میکروکنترلر AVR استفاده میشود. بدون این کتابخانه، نمیتوانید به پینهای سختافزاری میکروکنترلر دسترسی پیدا کنید.DDRB |= (1 << PB0);
: رجیستر DDRB برای تعیین ورودی یا خروجی بودن پایههای پورت B استفاده میشود. با این دستور، پایه PB0 به عنوان خروجی تعریف میشود.PORTB |= (1 << PB0);
: رجیستر PORTB برای کنترل سطح منطقی پینها استفاده میشود. این دستور پایه PB0 را به حالت HIGH (روشن کردن LED) میبرد._delay_ms(1000);
: این دستور برنامه را برای ۱۰۰۰ میلیثانیه (۱ ثانیه) متوقف میکند. این تأخیر برای ایجاد فاصله زمانی بین روشن و خاموش شدن LED است.PORTB &= ~(1 << PB0);
: این دستور پایه PB0 را به حالت LOW (خاموش کردن LED) میبرد.
ساختار برنامه در آردوینو
برنامهنویسی در آردوینو از ساختار مشابه زبان C استفاده میکند، اما فرآیند کدنویسی بسیار سادهتر شده است. در آردوینو، نیازی به تعریف مستقیم main()
یا دستورات رجیستری نیست. این فرآیند در پسزمینه توسط محیط آردوینو مدیریت میشود.
ساختار کلی یک برنامه آردوینو شامل دو تابع اصلی است:
- تابع
setup
: برای مقداردهی اولیه سختافزارها (مثل تنظیم پایهها به عنوان ورودی یا خروجی). - تابع
loop
: برای اجرای مداوم دستورات. این تابع همانند حلقهwhile(1)
عمل میکند.
void setup() {
pinMode(13, OUTPUT); // Set pin 13 as output
}
void loop() {
digitalWrite(13, HIGH); // Turn ON the LED
delay(1000); // Delay for 1 second
digitalWrite(13, LOW); // Turn OFF the LED
delay(1000); // Delay for 1 second
}
توضیح کد:
pinMode(13, OUTPUT);
: پایه شماره ۱۳ آردوینو به عنوان خروجی تعریف میشود. این پایه معمولاً به LED داخلی آردوینو متصل است.digitalWrite(13, HIGH);
: دستور برای روشن کردن LED. این دستور معادل تغییر رجیستر خروجی به حالت HIGH است.delay(1000);
: توقف برنامه برای ۱ ثانیه.digitalWrite(13, LOW);
: دستور برای خاموش کردن LED. این دستور معادل تغییر رجیستر خروجی به حالت LOW است.
متن سربرگ خود را وارد کنید
ویژگی | ساختار استاندارد C | ساختار آردوینو |
---|---|---|
تابع اصلی | int main() |
تابعهای setup و loop |
حلقه بینهایت | while(1) |
تابع loop |
دسترسی به رجیسترها | مستقیم با رجیسترها | توابع سادهشده مانند digitalWrite و pinMode |
پیچیدگی کدنویسی | زیاد | ساده و مناسب مبتدیان |
نتیجه گیری
برنامهنویسی میکروکنترلرها به زبان C نیازمند درک عمیقی از رجیسترها و سختافزار است که ممکن است برای مبتدیان چالشبرانگیز باشد. آردوینو با فراهم کردن یک محیط ساده و توابع آماده، فرآیند یادگیری و توسعه پروژهها را سریعتر و آسانتر کرده است. با یادگیری ساختار C/C++ در آردوینو، میتوانید به پروژههای پیشرفتهتر با دسترسی مستقیم به رجیسترها نیز بپردازید.
دیدگاهتان را بنویسید