
در آردوینو، نوع دادهی word یک نوع عدد صحیح است که دقیقاً ۲ بایت (۱۶ بیت) حافظه مصرف میکند و فقط اعداد مثبت یا صفر را ذخیره میکند.
محدودهی مقادیر قابل ذخیره در آن:
۰ تا ۶۵,۵۳۵
این نوع داده در تمام بردهای رایج آردوینو (از جمله Uno، Nano، Mega، ESP32 و Due) همیشه ۲ بایت است — برخلاف int که در برخی بردها ۴ بایت میشود.
توضیح برای مبتدیها: کلمهی «word» در دنیای کامپیوتر به معنی «یک واحد دادهی ۱۶ بیتی» است. در آردوینو، این کلمه بهصورت یک نوع داده تعریف شده تا به شما امکان دهد اعداد مثبت ۱۶ بیتی را بدون نگرانی از تغییر اندازه در بردهای مختلف ذخیره کنید. فکر کنید مثل یک جعبهی ۱۶ تکهای که همهی تکهها فقط برای عدد استفاده میشوند — پس بیشترین عدد ممکن (۶۵,۵۳۵) جا میشود، اما هیچوقت نمیتواند منفی باشد.
در آردوینو، چند نوع داده وجود دارد که ممکن است شبیه word به نظر برسند:
unsigned int: در بردهای AVR (مثل Uno) همان word است (۲ بایت، ۰–۶۵,۵۳۵). اما در ESP32 یا Due، unsigned int ۴ بایت است — پس با word فرق میکند!uint16_t: این نوع از کتابخانههای استاندارد C++ آمده و دقیقاً همان word است. در واقع، در آردوینو: typedef uint16_t word;int: میتواند منفی باشد و در Uno محدودهی کوچکتری دارد (−۳۲,۷۶۸ تا +۳۲,۷۶۷).بنابراین، اگر نیاز دارید که متغیر شما همیشه ۲ بایت باشد و فقط اعداد مثبت ذخیره کند، word گزینهی ایمنتری نسبت به unsigned int است — چون اندازهاش در تمام بردها ثابت است.
word sensorValue = 1023; // حداکثر مقدار آنالوگ
word pwmValue = 255; // مقدار PWM
word counter = 50000; // شمارندهی بزرگ (کمتر از 65535)
بعضی سنسورها (مثل سنسورهای فشار یا دما با دقت بالا) دادههای ۱۶ بیتی ارسال میکنند. برای ذخیرهی این داده، word گزینهی طبیعی است:
// فرض کنید دو بایت از سنسور خوانده شدهاند
byte highByte = 0x12;
byte lowByte = 0x34;
// ترکیب دو بایت به یک عدد 16 بیتی
word sensorData = (highByte << 8) | lowByte; // sensorData = 0x1234 = 4660
Serial.println(sensorData);
توضیح برای مبتدیها: عبارت
(highByte << 8)یعنی «بایت بالا را ۸ بیت به چپ منتقل کن» — یعنی آن را در جای دهگان بایت قرار بده. سپس با|(یا بیتی) بایت پایین را اضافه میکنیم. نتیجه یک عدد ۱۶ بیتی کامل است که دقیقاً در یکwordجا میشود.
اگر کد شما باید هم روی Arduino Uno و هم روی ESP32 اجرا شود، استفاده از word تضمین میکند که متغیر شما همیشه ۲ بایت باشد. در مقابل، unsigned int در Uno ۲ بایت است، اما در ESP32 ۴ بایت — که میتواند باعث خطا در ارتباطات سریال یا ذخیرهسازی داده شود.
چون word بدون علامت است، اگر مقدار آن را کم کنید و از صفر پایینتر برود، به انتهای محدوده بر میگردد (سرریز معکوس):
word x = 0;
x = x - 1; // حالا x = 65535!
بنابراین، در حلقههای کاهشی یا محاسباتی که ممکن است نتیجه منفی شود، از word استفاده نکنید — یا حتماً قبل از کم کردن، مقدار را بررسی کنید.
word = ۲ بایت، فقط ۰ تا ۶۵,۵۳۵uint16_t است — ولی نام سادهتری برای کاربران آردوینو داردunsigned int استاین مطلب بر اساس مستندات رسمی Arduino از بخش word – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم