
در آردوینو، نوع دادهی String (با حرف بزرگ S) یک کلاس پیشرفته است که به شما امکان میدهد راحتتر با رشتههای متنی (مثل "سلام"، "دما: 25C") کار کنید.
برخلاف رشتههای سنتی C (که آرایهای از char هستند)، String عملیاتی مثل جمع کردن، مقایسه، جستجو و تغییر متن را بسیار ساده میکند.
مثال ساده:
String message = "درجه حرارت: ";
message += "25C";
Serial.println(message); // خروجی: درجه حرارت: 25C
در آردوینو دو مفهوم متفاوت وجود دارد: — String (با S بزرگ): یک کلاس هوشمند که توسط آردوینو فراهم شده است.
— char* یا char[] (گاهی به اشتباه "string" گفته میشود): رشتههای سنتی C که آرایهای از کاراکترها هستند.
تفاوت اصلی: — String راحتتر است، اما حافظهی بیشتری مصرف میکند و ممکن است باعث خرابی برنامه در پروژههای طولانیمدت شود.
— رشتههای char کارآمدتر هستند، اما نیاز به کدنویسی دقیقتر دارند.
// تعریف
String name = "آردوینو";
String version;
// ترکیب (concatenation)
version = "نسخه " + String(1) + "." + String(8);
// طول رشته
int len = name.length(); // len = 7
// مقایسه
if (name == "آردوینو") {
Serial.println("نام صحیح است.");
}
// جستجو
int pos = version.indexOf("1"); // pos = 5
در این مثال، یک پیام شامل دما و رطوبت ساخته میشود:
float temperature = 23.5;
float humidity = 60.0;
String displayMessage = "دمای هوا: ";
displayMessage += String(temperature, 1); // 1 رقم اعشار
displayMessage += "°C | رطوبت: ";
displayMessage += String(humidity, 0);
displayMessage += "%";
// فرض کنید تابعی برای نمایش وجود دارد
// lcd.print(displayMessage);
Serial.println(displayMessage);
هر بار که یک String را تغییر میدهید (مثلاً با +=)، آردوینو یک کپی جدید از کل رشته در حافظه میسازد.
در آردوینو Uno فقط ۲ کیلوبایت RAM وجود دارد. اگر از String در حلقهی loop() استفاده کنید، ممکن است پس از چند دقیقه، RAM پر شود و برنامه ریست شود یا رفتار عجیبی داشته باشد.
راهکار ایمن: — از String فقط در setup() یا برای پیامهای کوتاه و موقت استفاده کنید.
— در پروژههای حساس یا بلادرنگ، از رشتههای char و توابعی مثل sprintf() استفاده کنید.
اگر مستقیماً عدد را به String اضافه کنید، ممکن است نتیجه غیرمنتظره باشد:
int x = 25;
String s = "عدد: " + x; // ❌ اشتباه! x به عنوان آدرس تفسیر میشود
در عوض، همیشه عدد را ابتدا به String تبدیل کنید:
String s = "عدد: " + String(x); // ✅ درست
loop() بدون مدیریت حافظهاین مطلب بر اساس مستندات رسمی Arduino از بخش String – Language Reference تهیه شده است، با توضیحات سادهشده، مثالهای کاربردی و نکات طلایی منحصربهفرد برای جامعه فارسیزبان.
برچسب های مهم