توابع فراخوانیهای کدهای از پیش نوشته شده توسط شخص سومی هستند که کارهای مختلفی را انجام میدهند. این توابع حاوی کدهایی برای انجام کارهایی مانند دریافت داده از یک سنسور، تنظیم وضعیت ولتاژ یک پین یا نمایش متن بر روی صفحه نمایش LCD هستند. در این مقاله میآموزیم که توابع آردوینو چه هستند و چگونه از آنها در پروژههای خود استفاده کنیم.
تابع آردوینو چیست؟
یک تابع آردوینو را میتوان به عنوان مجموعهای از دستورالعملها دسته بندی شده برای یک کار خاص است معنا کرد. ما میتوانیم توابعی را تعریف کنیم که یک نتیجه یا مقدار را برمیگرداند یا اصلاً نتیجهای را بر نمیگرداند. دومی که نتیجهای را بر نمیگرداند، در سایر زبانهای برنامه نویسی procedure نامیده میشود. با این حال، زبان C هر دو را فقط یک تابع مینامد. همه توابع دارای یک ورودی و یک خروجی هستند. ورودیها اطلاعاتی هستند که به تابع میدهید. تابع یک عمل روی ورودی انجام میدهد و یک نتیجه را به خروجی ارسال میکند. برای مثال، تابع x = y2 + 1 را در نظر بگیرید. اگر y = 3 را وارد کنیم، تابع محاسبه را انجام میدهد و x = 7 را خروجی میدهد. در برنامه نویسی میگوییم که این تابع مقدار 7 را برمیگرداند.
چه زمانی تابع خود را تعریف کنیم؟ زمان تعریف تابع عبارتند از:
- وقتی کد بیش از یک بار در برنامه من تکرار میشود.
- اگر کد من با توابع خواناتر شود.
- اگر کد من با توابع قابل مدیریتتر شود.
- اگر بخواهیم از یک کد دوباره در برنامههای دیگر استفاده کنیم.
چرا برای کار با آردوینو از توابع استفاده میکنیم؟
توابع آردوینو اجازه میدهند تا برنامهها را در بخشهایی از کد برای انجام وظایف (مختلف) ساختاربندی کنید. حالت معمولی برای ایجاد یک تابع زمانی است که فرد نیاز دارد یک عمل را چندین بار در یک برنامه انجام دهد. استاندارد کردن قطعات کد در توابع چندین مزیت دارد:
- استفاده از توابع این است که از نوشتن یک کد به طور مکرر در کد برنامه اجتناب میکنند که باعث صرفهجویی در زمان و حافظه میشود.
- هر بار که یک تابع فراخوانی میشود، ما فقط از کدهایی استفاده میکنیم که یک بار نوشته شده است.
- توابع یک عمل را در یک مکان کدگذاری میکنند، به طوری که تابع فقط باید یک بار debug شود.
- اگر کد نیاز به تغییر داشته باشد، توابع احتمال خطا در اصلاح را کاهش میدهد.
- توابع کل کد برنامه را کوچکتر و فشردهتر میکنند زیرا بخشهای کد بارها مورد استفاده مجدد قرار میگیرند.
- توابع میتوانند استفاده مجدد از کد در برنامههای دیگر را با ماژولار کردن آن آسانتر کنند.
- استفاده از توابع اغلب کد را قابل خواندن میکند.
برای آشنایی با اتصال آردوینو به اینترنت کلیک کنید.
ساختار یک تابع آردوینو
قبل از اینکه بتوان از یک تابع در یک پروژه استفاده کرد، باید آن را ایجاد کرد. کد زیر نمونهای از تابعی است که برای چاپ خط چین در Arduino IDE ایجاد شده است.
1 2 3 4 5 6 7 |
void DashedLine() { Serial.println("----------------"); } |
کد بالا که تابع را ایجاد میکند، تعریف تابع نامیده میشود. تصویر زیر اجزای یک تابع را نشان میدهند.
برد آردوینو Uno R3 دارای پردازنده ATmega328P
نام تابع
وقتی تابعی را ایجاد میکنیم، باید نامی برای آن انتخاب شود. قرارداد نام گذاری توابع به شرح زیر است: نام تابع میتواند از کاراکترهای الفبایی (A تا Z؛ a تا z؛ صفر تا 9) و زیرخط (_) ساخته شود.
- نام تابع ممکن است با یک عدد یعنی اعداد صفر تا 9 شروع نشود.
- نام تابعی که مشابه کلمه کلیدی زبان یا تابع موجود است نباید استفاده شود.
نام تابع با پرانتز () به پایان میرسد. هیچ چیزی به تابع مثال فوق (چاپ خط چین) منتقل نمیشود، بنابراین پرانتز خالی است.
نوع برگشت
یک تابع باید نوع بازگشتی داشته باشد. تابع مثال فوق چیزی را بر نمیگرداند، بنابراین یک نوع بازگشتی از void دارد.
عملکرد بدنه
بدنه تابع از عباراتی تشکیل شده است که بین پرانتزهای {} قرار گرفتهاند. که عبارات عملکرد تابع را تشکیل میدهند (آنچه تابع هنگام فراخوانی انجام میدهد). هنگامی که یک تابع استفاده میشود، گفته خواهد شد که آن را فراخوانی باید کرد.
فراخوانی یک تابع
برای استفاده از تابعی که در بالا ایجاد شد، باید آن را در یک بخش کد برنامه فراخوانی کرد، همانطور که در کد برنامه زیر نشان داده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
void setup() { Serial.begin(9600); DashedLine(); Serial.println("| Program Menu |"); DashedLine(); } void loop() { } void DashedLine() { Serial.println("----------------"); } |
در کد برنامه بالا، تابع DashedLine() در پایین فایل ایجاد میشود و سپس مانند تصویر زیر به اندازه دو بار در بالای فایل فراخوانی میشود. برای فراخوانی یک تابع، از نام تابع و سپس باز کردن و بستن پرانتز استفاده کنید. در نهایت عبارتی را که تابع را فراخوانی میکند با نقطه ویرگول خاتمه دهید. طرح را در یک آردوینو بارگذاری کنید و سپس پنجره ترمینال را باز کنید. طرح مقداری متن را در کادری مطابق شکل زیر چاپ میکند. اولین باری که تابع فراخوانی میشود، خط چین نشان داده شده در بالای تصویر را چاپ میکند. سپس متن توسط عبارت زیر فراخوانی تابع در پنجره نمایشگر سریال نوشته میشود. سپس این تابع دوباره فراخوانی میشود تا همان خط چین که کادر را کامل میکند چاپ شود.
نحوه استفاده از توابع در یک برنامه آردوینو
هر تابع یک نوع بازگشت دارد. نوع بازگشتی، نوع داده مقداری است که تابع برمیگرداند. بنابراین اگر تابع یک عدد صحیح برگرداند، نوع برگشتی تابع int نامیده میشود:
1 2 3 |
int functionName() { } |
برای توابعی که هیچ مقداری بر نمیگردند، نوع بازگشتی void نامیده میشود:
1 2 3 |
void functionName(){ } |
کد تابع در داخل براکتها قرار میگیرد. شما میتوانید از هر کد آردوینو در داخل یک تابع استفاده کنید:
1 2 3 4 5 |
void functionName(){ // function code goes here } |
استفاده از یک تابع در یک برنامه نیاز به فراخوانی قبل از استفاده از آن تابع را دارد برای فراخوانی یک تابع، نام تابع، پرانتزهای باز و بسته و یک نقطه ویرگول مانند این را بنویسید:
1 2 3 4 5 |
void loop(){ functionName(); } |
در اینجا ما تابع functionName() را در بخش حلقه فراخوانی میکنیم، اما توابع را میتوان در بخش setup نیز فراخوانی کرد. ارائه یک ورودی به یک تابع، «ارسال کردن آن به عنوان آرگومان» نامیده میشود. وقتی آرگومانهایی را به یک تابع ارسال میکنیم، ورودیهایی را که برای انجام وظیفهاش نیاز دارد به آن میدهیم. به عنوان مثال، تابع functionName() دو اطلاعات را در برمیگیرد که شامل شماره پین و حالت پین هستند: digitalWrite(pin, mode); pin و mode پارامتر نامیده میشوند. پارامترها انواع دادههایی هستند که تابع به عنوان ورودی میگیرد. آرگومانها مقادیر واقعی هستند که شما ارائه میکنید. به عنوان مثال، فرض کنید که از تابع digitalWrite()برای تنظیم سطح منطقی یک برای پین 10 استفاده میکنیم: digitalWrite(10, HIGH); pin و mode پارامترها هستند، اما 10 و HIGH آرگومان هستند. هر تابعی پارامتر نمیگیرد. برخی از توابع مانند تابع millis()یک مقدار را بدون هیچ آرگومان برمیگرداند.
فهرست کاربردیترین توابع آردوینو
Digital I/O
- digitalRead()
- digitalWrite()
- pinMode()
Analog I/O
- analogRead()
- analogReference()
- analogWrite()
Zero, Due & MKR Family
- analogReadResolution()
- analogWriteResolution()
Advanced I/O
- noTone()
- pulseIn()
- pulseInLong()
- shiftIn()
- shiftOut()
- tone()
Time
- delay()
- delayMicroseconds()
- micros()
- millis()
Math
- abs()
- constrain()
- map()
- max()
- min()
- pow()
- sq()
- sqrt()
Trigonometry
- cos()
- sin()
- tan()
Characters
- isAlpha()
- isAlphaNumeric()
- isAscii()
- isControl()
- isDigit()
- isGraph()
- isHexadecimalDigit()
- isLowerCase()
- isPrintable()
- isPunct()
- isSpace()
- isUpperCase()
- isWhitespace()
Random Numbers
- random()
- randomSeed()
Bits and Bytes
- bit()
- bitClear()
- bitRead()
- bitSet()
- bitWrite()
- highByte()
- lowByte()
External Interrupts
- attachInterrupt()
- detachInterrupt()
- Interrupts
- interrupts()
- noInterrupts()
Communication
- Serial
- SPI
- Stream
- Wire
USB
- Keyboard
- Mouse
کلام آخر یک تابع آردوینو را میتوان به عنوان مجموعهای از دستورالعملهای دسته بندی شده برای یک کار خاص معنا کرد. از توابع برای انجام کارهای مختلف استفاده میشود. استفاده درست از توابع میتواند به شما کمک کند تا پروژههای خود را راه اندازی کنید. امیدواریم این مقاله به شما اطلاعاتی در مورد نحوه استفاده از توابع در آردوینو بدهد. اگر در مورد هر چیزی سوالی دارید، حتماً در این مقاله کامنت بگذارید و ما سعی خواهیم کرد به آن پاسخ دهیم. برای خرید محصولات آردوینو به فروشگاه جم ترونیک مراجعه کنید.
همچنین شما می توانید برای خرید رگولاتور با بهترین قیمت از جم ترونیک کلیک کتید