
در آردوینو، نوع دادهی int (مخفف integer یا «عدد صحیح») یکی از پرکاربردترین انواع داده است.
این نوع برای ذخیرهی اعداد صحیح مثبت و منفی استفاده میشود — یعنی اعدادی بدون ممیز یا بخش اعشاری.
اما نکتهی بسیار مهم: اندازهی int در آردوینو همیشه یکسان نیست!
— در بردهای مبتنی بر تراشههای AVR (مثل Arduino Uno, Nano, Mega):
int = ۲ بایت → محدوده: −۳۲,۷۶۸ تا +۳۲,۷۶۷
— در بردهای مبتنی بر ARM یا ESP (مثل Arduino Due, ESP32):
int = ۴ بایت → محدوده: −۲,۱۴۷,۴۸۳,۶۴۸ تا +۲,۱۴۷,۴۸۳,۶۴۷
این تفاوت به دلیل استاندارد C++ است که اندازهی int را بر اساس «اندازهی طبیعی پردازنده» تعریف میکند.
چون بیشتر شمارهها در دنیای آردوینو در محدودهی −۳۲,۷۶۸ تا +۳۲,۷۶۷ قرار دارند:
— شماره پینها (۰ تا ۵۳)
— مقادیر سنسور آنالوگ (۰ تا ۱۰۲۳)
— زمانهای تأخیر (میلیثانیه)
— شمارندههای حلقه
بنابراین، int گزینهی «پیشفرض» برای اعداد صحیح در آردوینو است.
int counter = 0;
int sensorValue = analogRead(A0); // مقداری بین 0 تا 1023
int temperature = -10; // دما میتواند منفی باشد!
در این مثال، هر بار که دکمه فشرده میشود، یک شمارنده افزایش پیدا میکند:
const int buttonPin = 2;
int pressCount = 0;
int lastButtonState = HIGH;
int currentButtonState;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
currentButtonState = digitalRead(buttonPin);
if (lastButtonState == HIGH && currentButtonState == LOW) {
pressCount++; // افزایش شمارنده
Serial.print("دکمه ");
Serial.print(pressCount);
Serial.println(" بار فشرده شد.");
delay(50); // جلوگیری از نوسان (debounce)
}
lastButtonState = currentButtonState;
}
اگر مقدار یک int در AVR از +۳۲,۷۶۷ بیشتر شود، بهجای خطا دادن، به −۳۲,۷۶۸ بر میگردد!
این پدیده را «سرریز» (overflow) میگویند:
int x = 32767;
x = x + 1; // حالا x = -32768 !
این رفتار گاهی در انیمیشنها یا شمارندههای چرخشی مفید است، اما اغلب باعث باگهای پنهان میشود.
اگر نیاز به اعداد بزرگتر دارید، از long استفاده کنید.
اگر عدد شما همیشه مثبت است (مثل شماره پین یا مقدار سنسور)، ممکن است فکر کنید unsigned int بهتر است.
اما این نوع داده محدودهی بیشتری ندارد — فقط جهت منفی را حذف میکند:
— int: −۳۲,۷۶۸ تا +۳۲,۷۶۷
— unsigned int: ۰ تا ۶۵,۵۳۵
با این حال، استفاده از unsigned میتواند باعث سردرگمی در محاسبات (مثلاً وقتی یک عدد منفی غیرمنتظره ظاهر شود) شود.
برای مبتدیها، استفاده از int سادهتر و ایمنتر است — مگر اینکه واقعاً به محدودهی ۰–۶۵۵۳۵ نیاز داشته باشید.
byte: ۱ بایت، فقط ۰ تا ۲۵۵ — برای اعداد کوچک و مثبتint: ۲ بایت در AVR، منفی و مثبت — برای کاربردهای عمومیlong: ۴ بایت، محدودهی بسیار بزرگ — برای زمان (میلیثانیه)، GPS و...انتخاب درست نوع داده، هم حافظه را ذخیره میکند و هم کد را خواناتر میسازد.
این مطلب بر اساس مستندات رسمی Arduino از بخش int – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم