
در آردوینو، کلمهی کلیدی void یک نوع دادهی خاص است که به معنی «هیچ چیز» یا «بیمقدار» است.
این نوع داده هرگز برای تعریف متغیر استفاده نمیشود. بلکه فقط در تعریف توابع به کار میرود تا نشان دهد آن تابع هیچ مقداری را برنمیگرداند.
توضیح برای مبتدیها: تصور کنید یک دستور العمل دارید که میگوید: «چراغ را روشن کن». این دستور یک کار انجام میدهد، اما پاسخی مثل «چراغ روشن شد» یا عددی به شما نمیدهد. در برنامهنویسی، چنین دستوری با
voidتعریف میشود — یعنی فقط کاری انجام میدهد، ولی چیزی برنمیگرداند.
در زبانهای برنامهنویسی، هر تابع باید مشخص کند که چه نوع خروجیای دارد. اگر تابعی خروجی نداشته باشد، باید از void استفاده کرد تا کامپایلر بداند که انتظار مقدار بازگشتی نداشته باشد.
این کار باعث میشود کد شما منطقیتر، خواناتر و کمخطاتر باشد.
در آردوینو، دو تابع اصلی setup() و loop() هر دو از نوع void هستند:
void setup() {
// تنظیمات اولیه — هیچ چیزی برنمیگرداند
pinMode(13, OUTPUT);
}
void loop() {
// حلقه اصلی — هیچ چیزی برنمیگرداند
digitalWrite(13, HIGH);
delay(1000);
}
همچنین میتوانید توابع شخصی خود را با void تعریف کنید:
void blinkLED(int pin, int duration) {
digitalWrite(pin, HIGH);
delay(duration);
digitalWrite(pin, LOW);
delay(duration);
// این تابع فقط یک کار انجام میدهد — چیزی برنمیگرداند
}
int, float, String و...: تابع مقداری را محاسبه کرده و برمیگرداند.void: تابع فقط یک کار انجام میدهد (مثل روشن کردن LED، ارسال داده، تنظیم پین) و هیچ مقداری برنمیگرداند.مثال مقایسهای:
// تابعی که مقدار برمیگرداند
int add(int a, int b) {
return a + b; // یک عدد صحیح برمیگرداند
}
// تابعی که چیزی برنمیگرداند
void printSum(int a, int b) {
Serial.println(a + b); // فقط چاپ میکند — return ندارد
}
توضیح برای مبتدیها: اگر در تابعی از دستور
returnاستفاده میکنید، باید نوع دادهی تابع را مشخص کنید (مثلint). اما اگر تابع شما فقط کاری انجام میدهد و نیازی به بازگرداندن مقدار نیست، حتماً ازvoidاستفاده کنید. در توابعvoidنمیتوانید ازreturn value;استفاده کنید — فقط میتوانید باreturn;از تابع خارج شوید (اختیاری).
void resetSensor() {
digitalWrite(sensorResetPin, LOW);
delay(10);
digitalWrite(sensorResetPin, HIGH);
Serial.println("سنسور ریست شد.");
// هیچ مقداری برنمیگرداند — فقط یک سری دستور اجرا میکند
}
void loop() {
// ... خواندن داده ...
if (errorDetected) {
resetSensor(); // فراخوانی تابع void
}
}
شما نمیتوانید متغیری از نوع void تعریف کنید:
void x = 5; // ❌ خطای کامپایل! void برای متغیر نیست
اگر چنین کدی بنویسید، کامپایلر خطایی مانند «variable or field x declared void» نشان میدهد.
در آردوینو، دو تابع اصلی setup() و loop() بخشی از ساختار پایهی هر اسکچ هستند. این توابع حتماً باید از نوع void باشند — چون سیستم آردوینو انتظار ندارد آنها مقداری را بازگردانند. اگر نوع دیگری قرار دهید، کد کامپایل نمیشود.
void یک نوع داده برای «عدم بازگشت مقدار» استsetup() و loop() همیشه void هستندvoid استفاده کنیداین مطلب بر اساس مستندات رسمی Arduino از بخش void – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم