آردوینو آموزش آردوینو

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

arduino-basic-tutorial-part-three data in arduino programming
نوشته شده توسط پریسا پوربلورچیان

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

 


معرفی انواع داده


در برنامه‌نویسی C++، نوع داده یا data type به شیوه‌ای که داده‌ها در حافظه نگهداری می‌شوند و انجام عملیات مختلف بر روی آن‌ها تعیین می‌کند، مشخص می‌شود. نوع داده تعیین می‌کند که چه نوع مقادیر می‌تواند در یک متغیر یا شیء نگهداری شود و چه عملیات‌هایی بر روی آن انجام شود. C++ دارای یک مجموعه گسترده‌ای از نوع‌های داده از جمله اعداد صحیح (integers)، اعداد حقیقی (floating-point)، رشته‌ها (strings)، بولین (booleans) و غیره است. همچنین، C++ اجازه می‌دهد تا نوع‌های داده سفارشی با استفاده از struct یا class تعریف شوند که به برنامه‌نویس این امکان را می‌دهد تا نوع‌های داده خود را با ویژگی‌ها و عملکردهای دلخواه تعریف کند.

در C++، می‌توانید از نوع‌های داده پیش‌فرض استفاده کنید یا نوع‌های داده سفارشی خود را تعریف کنید.نوع داده int برای اعداد صحیح استفاده می‌شود.نوع داده double برای اعداد حقیقی از جمله اعداد اعشاری استفاده می‌شود.نوع داده bool برای مقادیر منطقی مانند صحیح و غلط استفاده می‌شود.نوع داده char برای نمایش کاراکترها استفاده می‌شود.نوع داده string برای نمایش رشته‌های متنی استفاده می‌شود.

 

 

 

داده Data، بخش اصلی یک برنامه نویسی است. تمامی دیتاهای دریافتی از سنسورها زمانی معنا پیدا می‌کند که نوع داده مشخص شده باشد. در طول برنامه نویسی داده ماهیت خودش را حفظ کرده و امکان تغییر وجود ندارد. شش داده ی اصلی که با آن ها مداوم در ارتباط هستیم، به صورت زیر است. به ضورت کلی دیتا تایپ همان نوع دیتا است که رنج دیتا، سایز حاففظه مورد نیاز برای دیتا، نوع عملکردی که بتوان بر روی آن دیتا انجام داد را مشخص می‌کند.

 

  •  char
  • int
  • float
  • double
  • void
  • bool
  1.  داده char برای ذخیره‌ی داده های کاراکتری مانند a,b,c,d,e,f,g,h استفاده می‌شود.
  2. داده int برای ذخیره‌ی اعداد صحیح مانند ۱,۲,۳,۴,۵ …. استفاده می‌شود.
  3. داده float برای ذخیره‌ی اعداد اعشاری مانند ۱٫۲, ۲٫۳, ۲٫۹۸, ۳٫۹۸ استفاده می‌شود.
  4. داده double برای ذخیره اعداد اعشاری بزرگتر از float استفاده می‌شود.
  5. داده bool برای ذخیره مقادیر منطقی مانند True, False استفاده می‌شود.

چه زمانی از علامت ها استفاده کنیم؟

استفاده از signed, unsigned, long,short داده های جدیدی را برای ما تولید می‌کند.

  • از signed, short, long, unsigned برای int می‌توانید استفاده کنید.
  • از signed, unsigned برای char می‌توانید استفاده کنید.
  • از long برای double می‌توانید استفاده کنید.

 


فراخوانی داده void


از void منحصرا برای استفاده در function می‌باشد. در زبان برنامه‌نویسی C++، دیتا تایپ void به معنای عدم بازگشت مقدار از یک تابع (توابع) استفاده می‌شود. این به این معنی است که تابع با void به عنوان نوع بازگشتی نمی‌تواند مقداری به خروجی برگرداند. این نوع از توابع به عنوان توابع “بدون بازگشت” (void functions) شناخته می‌شوند و برای انجام عملیات‌هایی که نیاز به بازگشت مقدار ندارند، مورد استفاده قرار می‌گیرند. در مثال بالا، تابع printHello از نوع void است، بنابراین نمی‌تواند مقداری به عنوان خروجی بازگرداند و فقط یک پیام را به خروجی چاپ می‌کند. توابع void برای انجام عملیات‌هایی که فقط نیاز به انجام یک عملیات و نه بازگشت مقدار دارند، مورد استفاده قرار می‌گیرند.

 

Void Loop ( ) {
   // rest of the code
}

 

void setup()
{
    Serial.begin(9600);
}
void loop()

 

 


فراخوانی دیتا تایپ داده Boolean


داده Boolean دو ارزش را در خود نگهداری می‌کند. True, False، هر متغیر بولین یک بایت حافظه را اشغال می کند. در C++، داده boolean (بولین) به منظور نمایش مقادیر منطقی یعنی صحیح (true) و غلط (false) استفاده می‌شود. این نوع داده تنها دو مقدار ممکن دارد: true و false، و برای انجام عملیات منطقی مانند عملیات شرطی (conditional) و کنترل جریان برنامه (flow control) بسیار مفید است.برای تعریف متغیرهای بولین در C++، می‌توانید از کلمه‌کلیدی bool استفاده کنید. به عنوان مثال:

bool isTrue = true;
bool isFalse = false;

boolean val = false ; // 
boolean state = true ; //

 

مثال با کد آردوینو Arduino به شرح زیر است:

 

int LEDpin = 5;       
int switchPin = 13;   

boolean running = false;

void setup()
{
  pinMode(LEDpin, OUTPUT);
  pinMode(switchPin, INPUT);
  digitalWrite(switchPin, HIGH);      // فعال کردن مقاومت پول آپ
}

void loop()
{
  if (digitalRead(switchPin) == LOW)
  { 
    delay(100);                       
    running = !running;                // toggle running variable
    digitalWrite(LEDpin, running);       
  }
}

 

 

 


فراخوانی دیتا تایپ داده char


روش فراخوانی داده char که برای ذخیره ی داده های کاراکتری است، به صورت زیر است. داده char هشت بیتی و بازه قابل قبول – ۱۲۷ تا ۱۲۷ است.دیتا تایپ char در C++ برای نمایش یک کاراکتر (حرف یا عدد یک رقمی) استفاده می‌شود. این دیتا تایپ از یک بایت حافظه تشکیل شده و برای ذخیره کاراکترها از جمله حروف الفبا، اعداد، نمادها و حتی کاراکترهای خاص مانند ‘\n’ برای تعیین علائم ویژه استفاده می‌شود.برای تعریف متغیرهای دیتا تایپ char در C++، می‌توانید از کلمه‌کلیدی char استفاده کنید. به عنوان مثال:

char myChar = ‘A’; // تعریف یک متغیر char با مقدار ‘A’

’Char parisa = ‘a ;
Char parisa = 100 ;

 

 


فراخوانی دیتا تایپ داده int


از این داده برای اعداد استفاده می‌شود. این داده ۱۶ یا ۳۲ بیتی است و بازه قابل قبول -۳۲۷۶۷ تا ۳۲۷۶۷ است.دیتا تایپ int در C++ برای نمایش اعداد صحیح (integer) استفاده می‌شود. این دیتا تایپ از یک مقدار عدد صحیح به صورت دودویی در حافظه استفاده می‌کند و اعداد مثبت و منفی را نمایش می‌دهد.برای تعریف متغیرهای دیتا تایپ int در C++، می‌توانید از کلمه‌کلیدی int استفاده کنید. به عنوان مثال:

int myInteger = 42; // تعریف یک متغیر int با مقدار ۴۲

در این مثال، متغیر myInteger یک عدد صحیح با مقدار ۴۲ را نمایش می‌دهد.در C++، اندازه دقیق دیتا تایپ int بستگی به سیستم مورد استفاده دارد، اما ۴ بایت (۳۲ بیت) است. این به این معناست که می‌توانید اعداد صحیح در محدوده -۲,۱۴۷,۴۸۳,۶۴۸ تا ۲,۱۴۷,۴۸۳,۶۴۷ (برای int با علامت) یا ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵ (برای unsigned int) را در یک متغیر int ذخیره کنید، بسته به اینکه آیا می‌خواهید مقادیر منفی را نمایش دهید یا خیر.از دیتا تایپ int برای انجام عملیات ریاضی معمولی مانند افزایش، کاهش، جمع، تفریق و ضرب استفاده می‌شود، و این دیتا تایپ بسیار پرکاربرد در برنامه‌نویسی C++ و سایر زبان‌های برنامه‌نویسی است.

int parisa = 123;

 

 

 

نمونه برنامه برای تست داده int

int countplus = 0;            //ساخت یک متغیر برحسب داده int

void setup() {
  Serial.begin(9600);       //استفاده از سریال مانیتور برای نمایش اعداد
}

void loop() {
  countplus++;                //متغیر افزایشی برای شمارش اعداد
  Serial.println(countplus);  // نمایش مقادیر متغیر در سریال مانیتور
  delay(1000);
}

 

 

 

 

 


فراخوانی دیتا تایپ داده float


بیشتری کاربرد این داده، برای نمایش اعداد اعشاری است. این داده ۳۲ بیتی است و بازه قابل قبول به صورت ۷ رقم دقت ( ارقام بعد از اعشار) به صورت تقریبی ۱۰-۳۸ تا ۱۰۳۸ است.دیتا تایپ float در C++ برای نمایش اعداد حقیقی با اعداد اعشاری (floating-point numbers) استفاده می‌شود. این دیتا تایپ برای ذخیره کردن اعدادی که شامل اعشار هستند و یا بزرگتر از حداکثر مقدار دیتا تایپ int هستند مناسب است.برای فراخوانی یک متغیر با دیتا تایپ float در C++، شما از کلمه‌کلیدی float استفاده می‌کنید. به عنوان مثال:

float myFloat = 3.14; // تعریف یک متغیر float با مقدار ۳٫۱۴

در این مثال، متغیر myFloat یک عدد حقیقی (floating-point number) با مقدار ۳٫۱۴ را نمایش می‌دهد.در دیتا تایپ float، عدد ممکن است دارای اعشار باشد و دقت ممکن است در مقایسه با دیتا تایپهای دقیقتر مانند double کمتر باشد. اندازه این دیتا تایپ ۴ بایت است. می‌توانید عملیاتهای ریاضی مانند جمع، تفریق، ضرب و تقسیم را بر روی متغیرهای دیتا تایپ float انجام دهید.

 

flaot parisa = 5.5789

 

 

تست برنامه با داده flaot

float countplus = 2.36;           //ساخت متغیر بر واحد داده float

void setup() {
  Serial.begin(9600);       //استفاده از سریال مانیتور برای نمایش اعداد
}

void loop() {
  countplus++;                //متغیر افزایشی برای شمارش اعداد
  Serial.println(countplus);  // نمایش مقادیر متغیر در سریال مانیتور
  delay(1000);
}

 

 

 


فراخوانی دیتا تایپ داده double


داده double برای ذخیره اعداد اعشاری بزرگتر از float استفاده می‌شود. داده double 64 بیتی و بازه قابل قبول ۱۵ رقم دقت ( تقریبا ۱۰-۳۰۸ تا ۱۰۳۰۸ ) است.دیتا تایپ double در C++ همچنان برای نمایش اعداد حقیقی با اعداد اعشاری (floating-point numbers) استفاده می‌شود، اما دقت بیشتری نسبت به float دارد. این دیتا تایپ برای ذخیره کردن اعدادی که نیاز به دقت بیشتری دارند یا مقادیر اعشاری دقیق‌تری را نمایش می‌دهند مناسب است.برای فراخوانی یک متغیر با دیتا تایپ double در C++، شما از کلمه‌کلیدی double استفاده می‌کنید. به عنوان مثال:

double myDouble = 3.14159265359; // تعریف یک متغیر double با مقدار عدد پی (π) تا ۱۰ رقم اعشار

در این مثال، متغیر myDouble یک عدد حقیقی (floating-point number) با مقدار تقریبی عدد پی (π) تا ۱۰ رقم اعشار را نمایش می‌دهد.در دیتا تایپ double، دقت بیشتری نسبت به float وجود دارد و اندازه این دیتا تایپ معمولاً ۸ بایت (۶۴ بیت) است. بنابراین، می‌توانید اعداد با دقت بیشتری را ذخیره کرده و عملیات‌های ریاضی با دقت بالاتری انجام دهید.

 

double parisa = 45.665;

 


فراخوانی دیتا تایپ داده long


از این داده برای ذخیره سازی اعداد در بازه ی گسترده تری استفاده می‌شود.  این داده ۳۲ بیتی و بازه قابل قبول بین -۲۱۴۷۴۸۳۶۴۷ تا ۲۱۴۷۴۸۳۶۴۷ است.دیتا تایپ long در C++ برای نمایش اعداد صحیح با اندازه‌ای بزرگتر از int استفاده می‌شود. این دیتا تایپ معمولاً از ۴ بایت (۳۲ بیت) برای نمایش اعداد صحیح استفاده می‌کند، اما اندازه آن ممکن است بستگی به سیستم مورد استفاده داشته باشد.برای تعریف متغیرهای دیتا تایپ long در C++، شما از کلمه‌کلیدی long استفاده می‌کنید. به عنوان مثال:

long myLong = 1234567890L; // تعریف یک متغیر long با مقدار ۱۲۳۴۵۶۷۸۹۰

در این مثال، متغیر myLong یک عدد صحیح با مقدار ۱۲۳۴۵۶۷۸۹۰ را نمایش می‌دهد. توجه داشته باشید که ما پسوند L را به عدد اضافه کرده‌ایم تا به کامپایلر نشان دهیم که این مقدار به عنوان یک long تشخیص داده شود.در مقابل، اگر شما نیاز به نمایش اعداد صحیح بسیار بزرگتر دارید که خارج از محدوده long قرار دارند، می‌توانید از دیتا تایپ long long استفاده کنید. در C++11 و نسخه‌های بعدی، شما می‌توانید از long long استفاده کنید که اندازه آن حدود ۸ بایت (۶۴ بیت) است.

long long myVeryLong = 1234567890123456789LL; // تعریف یک متغیر long long با مقدار بسیار بزرگ

long speedOfLight_km_s = 300000L;

 

 

 


فراخوانی دیتا تایپ داده unsigned long


همانند long برای ذخیره ی اعداد در بازه ی بیشتر از long استفاده می‌شود و اعداد منفی را شامل نمی‌شود. بازه قابل قبول تا +۴,۲۹۴,۹۶۷,۲۹۵ است.

unsigned long time;

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("Time: ");
  time = millis();
  //prints time since program started
  Serial.println(time);
  // wait a second so as not to send massive amounts of data
  delay(1000);
}

 

 


منظور از signed و unsigned چیست


در زبان‌های برنامه‌نویسی مانند C++، signed و unsigned نشان‌دهنده نوع اعداد صحیح (integer) هستند و به تعیین محدوده مقادیری که یک متغیر می‌تواند نگه دارد اشاره دارند.

  • signed (با علامت): این مفهوم نشان‌دهنده این است که یک متغیر می‌تواند مقادیر مثبت، منفی و صفر را نگه دارد. به عبارت دیگر، می‌تواند اعداد مثبت، منفی و صفر را نمایش دهد. برای متغیرهای دیتا تایپ‌های int و long و غیره، به صورت پیش‌فرض signed هستند. به عنوان مثال:

signed int myInt = -5; // myInt می‌تواند مقدار منفی نگه دارد

  • unsigned (بدون علامت): این مفهوم نشان‌دهنده این است که یک متغیر تنها می‌تواند مقادیر مثبت و صفر را نگه دارد. به عبارت دیگر، اعداد منفی را نمی‌تواند نمایش دهد. متغیرهای unsigned بیشتر در مواردی مورد استفاده قرار می‌گیرند که مقادیر منهایی معنی ندارند و اعداد مثبت به تنهایی کافی هستند. به عنوان مثال:

unsigned int myUnsignedInt = 10; // myUnsignedInt تنها مقدار مثبت ۱۰ را نگه می‌دارد

مهمترین نکته در استفاده از signed و unsigned این است که باید با دقت از آنها استفاده کنید تا مشکلات برنامه‌نویسی ناشی از ترانهایت (overflow) یا تفسیر مختلف مقادیر را جلوگیری کنید. همچنین، اگر مقداری به عنوان unsigned تعریف شود و شما از آن برای اعداد منفی استفاده کنید، ممکن است نتایج غیرمنتظره‌ای به دست آورید. بنابراین، در انتخاب بین signed و unsigned، باید محدوده مقادیر مورد نیاز برنامه‌ی خود را در نظر بگیرید.

 


فراخوانی دیتا تایپ داده Byte


از داده بایت برای ذخیره اعداد بین ۰ تا ۲۵۵ استفاده می‌شود.در C++، دیتا تایپ مستقل با نام “byte” وجود ندارد. برخی زبان‌های برنامه‌نویسی مانند Java دارای دیتا تایپ “byte” هستند که برای نمایش بایت‌ها (۸ بیت اطلاعات) استفاده می‌شود. اما در C++، بایت‌ها به طور معمول با استفاده از دیتا تایپ‌های معمولی مانند char (که ۸ بیت است) نمایش داده می‌شوند.اگر نیاز به نمایش بایت‌ها در C++ دارید، می‌توانید از دیتا تایپ char یا unsigned char استفاده کنید. به عنوان مثال:

char myByte = ‘A’; // تعریف یک متغیر به عنوان یک بایت با مقدار ‘A’
unsigned char myByte = 255; // تعریف یک متغیر به عنوان یک بایت بدون علامت با مقدار ۲۵۵
در این مثال‌ها، ما از char و unsigned char برای نمایش بایت‌ها استفاده کرده‌ایم. char به طور پیش‌فرض با علامت است، در حالی که unsigned char بدون علامت است و می‌تواند مقادیر از ۰ تا ۲۵۵ را نگه دارد. اگر به نمایش بایت‌ها با مقادیر منفی نیاز دارید، char را می‌توانید با signed char جایگزین کنید، اما توجه داشته باشید که مقادیر منفی در این صورت نمایش داده خواهند شد.

 

 


بررسی جدول انواع داده و مقادیر قابل قبول


در جدول زیر با انواع داده، اندازه به بیت و بازه قابل قبول هر داده آشنا خواهید شد.

 


جمع بندی


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

 

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۹ دیدگاه