🧰 تابع در آردوینو — کدت را مرتب کن
وقتی loop() ات بیشتر از سی خط شد و دیگر نمیفهمی کجا چه خبر است، وقت تابع نوشتن است.
سادهترین تابع
void beep() {
tone(8, 880);
delay(150);
noTone(8);
}
حالا هرجا بنویسی beep(); این سه خط اجرا میشوند.
تابع با ورودی
void blink(int pin, int times) {
for (int i = 0; i < times; i++) {
digitalWrite(pin, HIGH); delay(150);
digitalWrite(pin, LOW); delay(150);
}
}
// استفاده:
blink(13, 3); // سه بار چشمک روی پایه ۱۳
blink(12, 5); // پنج بار روی پایه ۱۲
تابع با خروجی
void یعنی چیزی برنمیگرداند. اگر بخواهی نتیجه بدهد، نوعش را بنویس و return کن:
float toCelsius(int raw) {
return raw * 5.0 / 1023.0 * 100.0;
}
// استفاده:
float dama = toCelsius(analogRead(A0));
چرا واقعاً ارزشش را دارد
- خواناتر.
blink(13, 3)خودش توضیح میدهد چه میکند؛ شش خط digitalWrite نه. - یک جا برای اصلاح. اگر اشکالی در منطق چشمک باشد، فقط یک جا را درست میکنی.
- تستپذیر. میتوانی یک تابع را جداگانه امتحان کنی.
محدودهی متغیر — تلهی رایج
متغیری که داخل یک تابع تعریف شود، با پایان آن تابع از بین میرود. اگر شمارندهات هر بار صفر میشود، احتمالاً داخل loop() تعریفش کردهای. شمارندهها را بیرون از توابع تعریف کن.
int counter = 0; // بیرون: میماند
void loop() {
int wrong = 0; // داخل: هر دور صفر میشود
counter++;
wrong++; // همیشه ۱ میماند
}
راستی — setup() و loop() هم خودشان تابعاند.