
در آردوینو، نوع دادهی unsigned char یک نوع عددی است که دقیقاً یک بایت (۸ بیت) حافظه مصرف میکند و فقط میتواند اعداد مثبت یا صفر را ذخیره کند.
محدودهی مقادیر قابل ذخیره در آن:
۰ تا ۲۵۵
برای درک بهتر: چون ۸ بیت داریم، میتوانیم 2^8 = 256 حالت مختلف داشته باشیم — از ۰ تا ۲۵۵.
در آردوینو دو نوع char وجود دارد:
char (معمولی): میتواند اعداد منفی و مثبت را ذخیره کند → محدوده: −۱۲۸ تا +۱۲۷unsigned char: فقط اعداد مثبت یا صفر → محدوده: ۰ تا ۲۵۵چرا این تفاوت وجود دارد؟ چون در char معمولی، یکی از ۸ بیت برای نشان دادن «علامت» (مثبت یا منفی) استفاده میشود. اما در unsigned char، همهی ۸ بیت برای ذخیرهی مقدار عددی استفاده میشوند — پس میتواند اعداد بزرگتری را نگه دارد، اما هیچوقت منفی نیست.
توضیح برای مبتدیها: فکر کنید یک جعبهی ۸ تکهای دارید که هر تکه میتواند ۰ یا ۱ باشد. اگر بخواهید عدد منفی هم نشان دهید، یکی از تکهها را فقط برای «علامت» استفاده میکنید (مثلاً ۰ = مثبت، ۱ = منفی). اما اگر فقط عدد مثبت نیاز دارید، همهی ۸ تکه را برای عدد استفاده میکنید — پس عدد بزرگتری جا میشود!
زمانی از unsigned char استفاده میکنیم که: — مطمئن هستیم عدد هرگز منفی نمیشود (مثل مقدار سنسور، شدت نور LED، ولتاژ)
— نیاز به ذخیرهی عددی بین ۰ تا ۲۵۵ داریم
— میخواهیم حافظه را ذخیره کنیم (چون فقط ۱ بایت مصرف میکند)
در واقع، unsigned char در آردوینو همان نوع دادهی byte است! این دو کاملاً قابل جایگزینی هستند و هیچ تفاوتی در عملکرد یا حجم حافظه ندارند.
unsigned char value1 = 200;
byte value2 = 200; // دقیقاً همان چیزی است!
توضیح برای مبتدیها: چرا دو نام برای یک چیز؟ چون
byteبرای کاربران آردوینو طراحی شده (خواناتر است)، اماunsigned charاز استاندارد زبان C++ آمده است. هر دو یکی هستند — مثل اینکه یک چیز را هم «سیب» و هم «میوه» صدا کنید!
unsigned char brightness = 150; // روشنایی LED (0 تا 255)
unsigned char sensorValue = 0; // مقدار سنسور
unsigned char red = 255; // مولفه قرمز در رنگ RGB
تابع analogWrite() فقط اعداد ۰ تا ۲۵۵ را میپذیرد. پس استفاده از unsigned char کاملاً منطقی است:
unsigned char ledPin = 9;
unsigned char brightness = 200;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
analogWrite(ledPin, brightness); // brightness باید بین 0 تا 255 باشد
}
هر دو یکسان هستند، اما: — اگر کد شما برای آموزش یا پروژههای فارسیزبان است، از byte استفاده کنید — چون خواناتر و سادهتر است.
— اگر کد شما باید با کتابخانههای استاندارد C++ سازگار باشد، unsigned char گزینهی بهتری است.
در پروژههای شخصی، هر کدام را که دوست دارید انتخاب کنید — اما در یک پروژه، از یکی از آنها استفاده کنید تا کد یکدست باشد.
وقتی با سنسورهای دیجیتال (مثل سنسورهای I2C یا UART) کار میکنید، اغلب دادهها به صورت بایتهای خام دریافت میشوند. در این موارد، unsigned char یا byte گزینهی طبیعی برای ذخیرهی هر بایت است:
unsigned char receivedData = Wire.read(); // خواندن یک بایت از سنسور I2C
unsigned char = ۱ بایت، فقط ۰ تا ۲۵۵byte است — فقط نام متفاوتی دارداین مطلب بر اساس مستندات رسمی Arduino از بخش unsigned char – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم