تابع String() در آردوینو — آموزش جامع تبدیل داده‌ها و کار حرفه‌ای با رشته‌ها  
آردوینو ایران | آموزش تخصصی آردوینو به فارسی

آردوینو ایران | آموزش تخصصی آردوینو به فارسی

آردوینو ایران — مرجع تخصصی آموزش آردوینو به فارسی! دوره‌های کاربردی، پروژه‌محور و گام‌به‌گام برای مبتدی‌ها تا پیشرفته‌ها: از راه‌اندازی اولین LED تا ساخت ربات، IoT و سیستم‌های هوشمند خانه. یادگیری عملی، کدنویسی ساده، پشتیبانی فنی و دسترسی مادام‌العمر به محتوا — فقط برای عاشقان الکترونیک و برنامه‌نویسی سخت‌افزاری.

اشتراک در خبرنامه

جهت عضویت در خبرنامه لطفا ایمیل خود را ثبت نمائید

Captcha

آمار بازدید

  • بازدید امروز : 4
  • بازدید دیروز : 41
  • بازدید کل : 14612

تابع String() در آردوینو — آموزش جامع تبدیل داده‌ها و کار حرفه‌ای با رشته‌ها


تابع String() در آردوینو — آموزش جامع تبدیل داده‌ها و کار حرفه‌ای با رشته‌ها

تابع String() در آردوینو — آموزش جامع تبدیل داده‌ها و کار حرفه‌ای با رشته‌ها

تابع String() چیست؟

در آردوینو، String() یک تابع سازنده (constructor) است که انواع داده‌های مختلف — از جمله اعداد صحیح، اعشاری، کاراکترها و آرایه‌های بایتی — را به یک شیء از نوع String تبدیل می‌کند.
این تابع به شما امکان می‌دهد به راحتی داده‌های غیرمتنی را به متن تبدیل کرده و با آن‌ها کار کنید — مثلاً برای نمایش روی سریال مانیتور یا نمایشگر.

چرا به String() نیاز داریم؟

آردوینو نمی‌تواند مستقیماً یک عدد را به یک رشته متصل کند. بدون تبدیل، کد زیر ممکن است خطا بدهد یا رفتار غیرمنتظره‌ای داشته باشد:

int value = 42;
String msg = "عدد: " + value;  // ❌ خطرناک!

راه درست:

String msg = "عدد: " + String(value);  // ✅ ایمن

فرم‌های مختلف تابع String()

۱. تبدیل عدد صحیح (با انتخاب مبنا)

int n = 255;
String s1 = String(n);        // "255" (مبنای 10)
String s2 = String(n, HEX);   // "ff"
String s3 = String(n, BIN);   // "11111111"
String s4 = String(n, OCT);   // "377"

۲. تبدیل عدد اعشاری (با کنترل اعشار)

float t = 23.456;
String s = String(t, 2);  // "23.46" — فقط 2 رقم اعشار

۳. تبدیل کد ASCII به کاراکتر

int code = 72;
String s = String(code, BYTE);  // "H"

۴. تبدیل آرایه char (رشته سنتی C)

char text[] = "آردوینو";
String s = String(text);  // "آردوینو"

مثال کاربردی: ساخت پیام پویا از سنسور

float temp = 23.456;
int humidity = 60;

String log = "دمای هوا: ";
log += String(temp, 1);   // "23.5"
log += "°C | رطوبت: ";
log += String(humidity);  // "60"
log += "%";

Serial.println(log);
// خروجی: دمای هوا: 23.5°C | رطوبت: 60%

توابع کامل کلاس String در آردوینو

پس از ساخت یک شیء String، می‌توانید از توابع زیر استفاده کنید. هر کدام با مثال و خروجی واقعی آورده شده است:

1. charAt(n)

کاراکتر در موقعیت n را برمی‌گرداند (از ۰ شروع می‌شود).

String s = "سلام";
char c = s.charAt(1);  // c = ل

2. compareTo(other)

رشته را با رشتهٔ دیگر مقایسه می‌کند. اگر برابر باشد → ۰، اگر کوچکتر باشد → عدد منفی، اگر بزرگتر باشد → عدد مثبت.

String a = "آب";
int r = a.compareTo("آب");  // r = 0

3. concat(value)

مقدار داده‌شده را به انتهای رشته اضافه می‌کند.

String s = "Hello";
s.concat(" World");  // s = "Hello World"

4. c_str()

اشاره‌گر به رشتهٔ سنتی C (const char*) برمی‌گرداند.

String s = "test";
const char* p = s.c_str();  // p اشاره به "test" دارد

5. endsWith(substring)

بررسی می‌کند آیا رشته با زیررشته پایان می‌یابد.

String s = "data.txt";
bool b = s.endsWith(".txt");  // b = true

6. equals(other)

بررسی می‌کند آیا دو رشته کاملاً برابرند (حساس به بزرگ/کوچکی).

String a = "Arduino";
bool b = a.equals("arduino");  // b = false

7. equalsIgnoreCase(other)

برابری را بدون در نظر گرفتن حروف بزرگ/کوچک بررسی می‌کند.

String a = "Arduino";
bool b = a.equalsIgnoreCase("ARDUINO");  // b = true

8. getBytes(buf, len)

رشته را به آرایه‌ای از بایت‌ها کپی می‌کند.

String s = "AB";
byte buf[3];
s.getBytes(buf, 3);  // buf = {65, 66, 0}

9. indexOf(substring)

موقعیت اولین occurrence زیررشته را برمی‌گرداند.

String s = "hello";
int i = s.indexOf("l");  // i = 2

10. indexOf(substring, from)

جستجو از موقعیت from شروع می‌شود.

String s = "hello";
int i = s.indexOf("l", 3);  // i = 3

11. lastIndexOf(substring)

موقعیت آخرین occurrence زیررشته را برمی‌گرداند.

String s = "hello";
int i = s.lastIndexOf("l");  // i = 3

12. length()

تعداد کاراکترهای رشته را برمی‌گرداند.

String s = "سلام";
int n = s.length();  // n = 4

13. remove(index)

تمام کاراکترها از موقعیت index به بعد را حذف می‌کند.

String s = "Arduino";
s.remove(4);  // s = "Ardu"

14. remove(index, count)

count کاراکتر از موقعیت index حذف می‌شوند.

String s = "Arduino";
s.remove(2, 3);  // s = "Ario"

15. replace(old, new)

تمام occurrenceهای old را با new جایگزین می‌کند.

String s = "I like cats";
s.replace("cats", "dogs");  // s = "I like dogs"

16. reserve(size)

فضای حافظهٔ اولیه برای رشته رزرو می‌کند (بهینه‌سازی).

String s;
s.reserve(50);  // فضای 50 بایتی رزرو شد

17. setCharAt(index, c)

کاراکتر در موقعیت index را تغییر می‌دهد.

String s = "Hello";
s.setCharAt(0, J);  // s = "Jello"

18. startsWith(substring)

بررسی می‌کند آیا رشته با زیررشته شروع می‌شود.

String s = "HTTP/1.1";
bool b = s.startsWith("HTTP");  // b = true

19. substring(from)

زیررشته از موقعیت from تا انتها.

String s = "Arduino";
String r = s.substring(3);  // r = "uino"

20. substring(from, to)

زیررشته از from تا قبل از to.

String s = "Arduino";
String r = s.substring(2, 5);  // r = "dui"

21. toCharArray(buf, len)

رشته را در آرایه‌ای از char کپی می‌کند.

String s = "Hi";
char buf[3];
s.toCharArray(buf, 3);  // buf = {H,i,�}

22. toDouble()

رشته را به عدد اعشاری تبدیل می‌کند.

String s = "3.14";
double d = s.toDouble();  // d = 3.14

23. toInt()

رشته را به عدد صحیح تبدیل می‌کند.

String s = "123";
int n = s.toInt();  // n = 123

24. toLowerCase()

تمام حروف را به کوچک تبدیل می‌کند.

String s = "Hello";
s.toLowerCase();  // s = "hello"

25. toUpperCase()

تمام حروف را به بزرگ تبدیل می‌کند.

String s = "Hello";
s.toUpperCase();  // s = "HELLO"

26. trim()

فاصله‌های ابتدایی و انتهایی را حذف می‌کند.

String s = "  Hello  ";
s.trim();  // s = "Hello"

عملگرهای پشتیبانی‌شده برای String

1. = (تخصیص)

String a = "Hi";  // a = "Hi"

2. + (الحاق)

String a = "Hello" + " World";  // a = "Hello World"

3. += (الحاق و تخصیص)

String a = "Hi";
a += " there";  // a = "Hi there"

4. == (برابری)

String a = "A";
bool b = (a == "A");  // b = true

5. != (نابرابری)

String a = "A";
bool b = (a != "B");  // b = true

6. <, >, <=, >= (مقایسهٔ واژگانی)

بر اساس کدهای ASCII کار می‌کنند. برای فارسی ممکن است رفتار غیرمنتظره داشته باشند.

String a = "Apple";
bool b = (a < "Banana");  // b = true

7. [] (دسترسی به کاراکتر با اندیس)

String s = "ABC";
char c = s[1];  // c = B

نکته طلایی ۱: String در حلقه‌ها RAM را مصرف می‌کند!

هر بار که یک String ایجاد یا تغییر می‌کند، حافظهٔ جدیدی در RAM اختصاص داده می‌شود. در آردوینو Uno (فقط ۲ کیلوبایت RAM)، این کار در loop() می‌تواند پس از چند دقیقه باعث ریست شدن برد شود.
راهکار: در پروژه‌های بلادرنگ، از char و sprintf() استفاده کنید.

نکته طلایی ۲: String(عدد, BYTE) جادویی برای کاراکترهاست!

اگر یک عدد بین ۰–۲۵۵ دارید که نمایندهٔ یک کاراکتر است (مثلاً از سنسور سریال)، با String(code, BYTE) مستقیماً آن را به کاراکتر تبدیل کنید — بدون نیاز به آرایه‌های پیچیده.

جمع‌بندی

تابع String() و کلاس String ابزارهایی قدرتمند برای کار با متن در آردوینو هستند، اما: — در پروژه‌های آموزشی و کوتاه عالی عمل می‌کنند.
— در سیستم‌های بلادرنگ یا صنعتی، با احتیاط استفاده شوند.
— همیشه از توابعی مثل trim()، toInt() و substring() برای پردازش ورودی استفاده کنید.

منبع رسمی

این مطلب بر اساس مستندات رسمی Arduino از بخش String() – Language Reference تهیه شده است، با توضیحات ساده‌شده، مثال‌های کاربردی و نکات طلایی منحصربه‌فرد برای جامعه فارسی‌زبان.

  انتشار : ۱۲ مهر ۱۴۰۴               تعداد بازدید : 301

برچسب های مهم

دیدگاه های کاربران (0)

http://kia-ir.ir

تمام حقوق مادی و معنوی این وب سایت متعلق به "آردوینو ایران | آموزش تخصصی آردوینو به فارسی" می باشد

فید خبر خوان    نقشه سایت    تماس با ما