
در آردوینو، کلمهی کلیدی const برای تعریف متغیرهای ثابت استفاده میشود — یعنی متغیرهایی که پس از مقداردهی اولیه، دیگر قابل تغییر نیستند.
این کار باعث میشود کد شما خواناتر، ایمنتر و کمخطاتر شود، چون جلوی تغییر تصادفی مقادیر مهم را میگیرد.
توضیح برای مبتدیها: فرض کنید یک عدد مهم دارید، مثل شماره پین LED که همیشه ۱۳ است. اگر این عدد را در یک متغیر معمولی ذخیره کنید، ممکن است بعداً در کد اشتباهی آن را تغییر دهید. اما اگر از
constاستفاده کنید، کامپایلر هر تلاش برای تغییر آن را به عنوان خطا نشان میدهد — مثل این است که بگویید: «این عدد مقدس است، دست نزن!»
استفاده از const چند مزیت دارد: — جلوگیری از خطا: تغییر تصادفی مقادیر ثابت جلوگیری میشود.
— بهبود خوانایی کد: هر کس کد شما را بخواند، میفهمد که این مقدار قرار نیست تغییر کند.
— بهینهسازی حافظه: در آردوینو، متغیرهای const معمولاً در حافظهی برنامه (Flash) ذخیره میشوند، نه در RAM — پس RAM شما آزاد میماند.
برای تعریف یک متغیر ثابت، کافی است قبل از نوع داده، کلمهی const را بنویسید:
const int ledPin = 13;
const float pi = 3.14159;
const char version = A;
اگر سعی کنید بعداً مقدار آن را تغییر دهید، کامپایلر خطا میدهد:
const int sensorPin = A0;
sensorPin = A1; // ❌ خطای کامپایل: assignment of read-only variable
در اکثر پروژههای آردوینو، پینها و مقادیر آستانه (threshold) ثابت هستند. استفاده از const برای آنها استاندارد صنعتی است:
const int BUTTON_PIN = 2;
const int LED_PIN = 13;
const int TEMP_THRESHOLD = 30; // آستانه دما برای هشدار
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int temperature = readTemperature();
if (temperature > TEMP_THRESHOLD) {
digitalWrite(LED_PIN, HIGH);
Serial.println("هشدار دما!");
}
}
توضیح برای مبتدیها: توجه کنید که نام متغیرهای
constمعمولاً با حروف بزرگ نوشته میشود (مثلLED_PIN). این یک قرارداد استاندارد در برنامهنویسی است که به خواننده کد نشان میدهد: «این یک مقدار ثابت است».
در آردوینو، دو راه برای تعریف ثابت وجود دارد: — #define NAME value (پیشپردازنده)
— const type NAME = value; (متغیر ثابت)
تفاوتهای کلیدی: — const نوع داده دارد (مثل int یا float)، اما #define نوع ندارد.
— const فقط در محدودهی خودش (مثلاً داخل یک تابع یا سراسری) قابل دسترسی است، اما #define همیشه سراسری است.
— const ایمنتر است، چون کامپایلر میتواند خطاهای نوعگذاری را تشخیص دهد.
مثال مقایسهای:
// روش قدیمی (کمتر توصیه میشود)
#define PI 3.14159
// روش مدرن و ایمن (توصیه شده)
const float PI = 3.14159;
در آردوینو، متغیرهای const بهطور خودکار در حافظهی برنامه (Flash) ذخیره میشوند، نه در RAM محدود. این ویژگی بسیار مهم است، چون: — RAM آردوینو Uno فقط ۲ کیلوبایت است.
— با استفاده از const برای مقادیر ثابت، RAM را برای دادههای پویا (مثل سنسورها یا شمارندهها) آزاد نگه میدارید.
اگر آرایهای دارید که هیچوقت تغییر نمیکند (مثل لیست رنگها یا پیامهای ثابت)، آن را با const تعریف کنید:
const char* messages[] = {
"آماده",
"در حال کار",
"خطا!"
};
این کار هم RAM را ذخیره میکند و هم جلوی تغییر تصادفی پیامها را میگیرد.
const برای تعریف مقادیر ثابت استفاده میشودconst در Flash ذخیره میشوند — نه در RAM#define استاین مطلب بر اساس مستندات رسمی Arduino از بخش const – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم