
تصور کنید یک جعبهی کفش دارید که داخلش چندتا کشوی کوچک هست — هر کدوم یه شماره دارن: کشوی ۰، کشوی ۱، کشوی ۲ و...
شما میتونید تو هر کشو یه چیز بریزید: یه عدد، یه ولتاژ سنسور، یه شماره پین LED و...
اسم این جعبهی هوشمند در برنامهنویسی، «آرایه» (Array) هست!
فرض کنید میخواید دمای ۵ اتاق رو بخونید و ذخیره کنید. بدون آرایه، باید بنویسید:
int temp1 = 22;
int temp2 = 24;
int temp3 = 21;
int temp4 = 23;
int temp5 = 20;
حالا اگر بخواید میانگین بگیرید؟ باید هر کدوم رو جداگانه جمع کنید!
اما با آرایه:
int temperatures[5] = {22, 24, 21, 23, 20};
همه دادهها در یک جا، با یک اسم، و قابل دسترسی با یک شماره!
این همون قدرت آرایههاست.
شما فقط میگید: «من یه آرایه از ۴ تا عدد میخوام»، ولی هنوز مقدار نمیریزید:
int myArray[4]; // آرایهای با 4 خانه — ولی محتوایش تصادفی است!
هشدار مهم: مقادیر داخل این آرایه تعریفنشده هستند! ممکنه عدد عجیبی مثل
-12345یا0باشن.
همیشه قبل از استفاده، مقداردهی کنید:myArray[0] = 10; myArray[1] = 20; // و الی آخر
اینجا همه چیز رو یکجا مینویسید — هم اندازه، هم مقادیر:
int myArray[] = {10, 20, 30, 40}; // آرایهای با 4 عنصر — کامپایلر خودش اندازه رو متوجه میشه!
نکته طلایی: وقتی از
{}استفاده میکنید، نیازی نیست عدد داخل براکت[ ]رو بنویسید. آردوینو خودش تعداد اعداد رو میشماره و آرایه رو درست میکنه!
در آرایهها، اولین خانه شمارهی ۰ دارد، نه ۱!
پس:
myArray[0] → اولین عدد (10)myArray[1] → دومین عدد (20)myArray[3] → چهارمین عدد (40)اگر بنویسید myArray[4]، خارج از محدوده هستید! چون آرایهی ما فقط خونههای ۰ تا ۳ رو داره.
این اشتباه، یکی از رایجترین دلایل خراب شدن برنامههای آردوینو است!
راهکار ایمن: همیشه از متغیری برای ذخیرهی اندازه آرایه استفاده کنید:
int values[] = {5, 10, 15, 20}; int size = sizeof(values) / sizeof(values[0]); // size = 4 for (int i = 0; i < size; i++) { Serial.println(values[i]); }
int ledPins[] = {2, 3, 4, 5}; // پینهای 4 تا LED
int numLeds = 4; // تعداد LEDها
void setup() {
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
delay(300);
digitalWrite(ledPins[i], LOW);
}
}
فرض کنید ۳ عدد سنسور فتوسل (LDR) به پینهای A0, A1, A2 وصل شدن:
int sensorPins[] = {A0, A1, A2};
int sensorValues[3]; // جایی برای ذخیره مقادیر
void setup() {
Serial.begin(9600);
}
void loop() {
for (int i = 0; i < 3; i++) {
sensorValues[i] = analogRead(sensorPins[i]); // مقدار هر سنسور رو بخون
Serial.print("Sensor ");
Serial.print(i);
Serial.print(": ");
Serial.println(sensorValues[i]);
}
delay(1000);
}
این کد نشون میده چطور آرایهها کمک میکنن کد رو انعطافپذیر و قابل گسترش کنید. فردا اگر ۱۰ تا سنسور اضافه کردید، فقط کافیه آرایه رو بزرگتر کنید — بقیه کد تغییری نمیکنه!
این مطلب بر اساس مستندات رسمی Arduino از بخش Array – Language Reference تهیه شده است، اما با توضیحات عمیقتر، مثالهای کاربردی و نکات منحصربهفرد برای جامعهی فارسیزبان.
برچسب های مهم
بسیار مطلب کامل و جامع و خوبی بود تشکر