آموزش ساخت تابع در کد آردوینو (استفاده از توابع شخصی)

توابع، بخشهایی از کد برنامه شما هستند که کارها را انجام میدهند. آنها شامل کدهایی برای کارهایی مانند دریافت داده از یک سنسور، تنظیم وضعیت ولتاژ یک پین یا نمایش متن روی نمایشگر LCD هستند. در این مقاله، ما یاد میگیریم توابع چیستند و چگونه میتوان از آنها در پروژههای آردوینو استفاده کرد.
تابع آردوینو چیست؟
تمام توابع دارای ورودی و خروجی هستند:

- ورودیها اطلاعاتی هستند که به تابع میدهید. تابع عملی روی این ورودی انجام میدهد و خروجی تولید میکند.
- به عنوان مثال، تابع زیر را در نظر بگیرید:
x = y^2 + 1

اگر مقدار y = 3 را وارد کنیم، تابع محاسبه را انجام داده و خروجی x = 10 خواهد بود.

در برنامهنویسی میگوییم که این تابع مقدار 10 را باز میگرداند.
هر تابع دارای یک نوع بازگشتی است. نوع بازگشتی مشخص میکند که تابع چه نوع دادهای را بازمیگرداند.
- اگر تابع یک عدد صحیح بازگرداند، نوع بازگشتی آن
intاست:
int functionName() {
}
- برای توابعی که هیچ مقداری باز نمیگردانند، نوع بازگشتی
voidاست:
void functionName() {
}
کد تابع داخل آکولادها قرار میگیرد و شما میتوانید هر کدی که در آردوینو استفاده میکنید را داخل یک تابع قرار دهید:
void functionName() {
// کد تابع اینجا قرار میگیرد
}
استفاده از یک تابع در برنامه به عنوان فراخوانی تابع یا call کردن تابع شناخته میشود. برای فراخوانی یک تابع، نام تابع را نوشته، پرانتز باز و بسته قرار داده و سمیکالن میگذاریم:
void loop() {
functionName();
}
در اینجا تابع functionName() در بخش loop فراخوانی شده است، اما توابع میتوانند در بخش setup هم فراخوانی شوند.
وقتی به یک تابع ورودی میدهیم، به آن آرگومان (argument) دادهایم. آرگومانها دادهای هستند که تابع برای انجام وظیفه خود نیاز دارد.
به عنوان مثال، تابع digitalWrite() دو ورودی میگیرد: شماره پین و وضعیت پین:
digitalWrite(pin, mode);
pinوmodeپارامتر هستند که نوع دادهای که تابع دریافت میکند را مشخص میکنند.- مقادیر واقعی که میدهیم، آرگومان هستند. برای مثال، اگر بخواهیم پین 10 را روشن کنیم:
digitalWrite(10, HIGH);
pinوmodeپارامتر هستند10وHIGHآرگومان هستند
همه توابع پارامتر نمیگیرند. بعضی توابع مانند millis() بدون هیچ آرگومانی یک مقدار بازمیگردانند.
پروژه نمونه ساخت تابع آردوینو
LEDها روش خوبی برای نمایش این موضوع هستند، زیرا میتوان آنها را با هر دستگاه دیگری که توسط سیگنال 5 ولت آردوینو کنترل میشود جایگزین کرد. بنابراین، بیایید تابع functionName() را طوری بسازیم که یک LED سبز و یک LED آبی چشمک بزنند.
قطعات مورد نیاز برای ساخت این پروژه:
- آردوینو Uno
- سیمهای جامپر
- برد بورد
- آیسی SN74HC14N (Schmitt trigger)
- کلید فشاری لمسی
- مقاومت 10 کیلو اهم
- خازن 1 میکروفاراد
نحوه اتصال مدار:

پس از اتصال مدار، این کد را روی آردوینو آپلود کنید:
void setup() {
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
blinkLED(9, 500);
blinkLED(10, 1000);
}
void blinkLED(int pin, int duration) {
digitalWrite(pin, HIGH);
delay(duration);
digitalWrite(pin, LOW);
delay(duration);
}
توضیح کد
در بخش setup()، پینهای 9 و 10 به عنوان خروجی تنظیم شدهاند.
در بخش loop() تابع blinkLED() دو بار فراخوانی میشود – یک بار برای هر LED. هر بار که تابع فراخوانی میشود، آردوینو به جایی میرود که تابع blinkLED() با تعریف زیر قرار دارد:
void blinkLED(int pin, int duration)
در تابع blinkLED() دو پارامتر تعریف شده است:
pin: یک متغیر از نوع int که شماره پین آردوینو را ذخیره میکندduration: یک متغیر از نوع int که مدت زمان چشمک زدن LED را به میلیثانیه ذخیره میکند
وقتی اولین فراخوانی blinkLED(9, 500) در بخش loop() انجام شود، عدد 9 در متغیر pin و عدد 500 در متغیر duration ذخیره میشود.
در بدنه تابع blinkLED()، ابتدا پین را روشن (HIGH) میکنیم، سپس به اندازه مقدار duration صبر میکنیم، بعد پین را خاموش (LOW) کرده و دوباره همان مدت زمان صبر میکنیم. این کار باعث میشود LED متصل به پین 9 هر 500 میلیثانیه روشن و خاموش شود.
پس از اجرای کامل کد داخل تابع blinkLED()، آردوینو از تابع خارج شده و به خط بعدی کد در بخش loop() باز میگردد.
خط بعدی کد در بخش loop()، دومین فراخوانی تابع blinkLED() است. در این مرحله، عدد 10 در متغیر pin و 1000 میلیثانیه در متغیر duration ذخیره میشود. این باعث میشود LED متصل به پین 10 هر 1000 میلیثانیه روشن و خاموش شود.
امیدواریم این مقاله به شما در درک نحوه استفاده از توابع در آردوینو کمک کرده باشد. اگر سوالی دارید، حتماً در بخش نظرات مطرح کنید تا پاسخ دهیم.









