پرش به محتوا

آموزش متغییر ها آردوینو – enum (نوع شمارشی)

enum یکی از انواع داده است که امکان مشخص کردن مجموعه‌ای از ثابت‌ها با نام‌های مختلف در زبان برنامه‌نویسی آردوینو (C++) را فراهم کرده‌ است. زمانی که قصد داریم از بین مجموعه مقدارهای موجود، یک مقدار را انتخاب کنیم از Enum یا enumeration استفاده‌ می‌کنیم. د‌ر این مطلب آموزشی خواهیم گفت که enum چیست؟ و چه کاربردی دارد. علاوه بر آن ابزار typedef برای متغییر enum در آردوینو (C++) مورد بررسی قرار گرفته‌ است.
آموزش متغییر ها آردوینو

Enum چیست؟

قبل از اینکه‌ برنامه‌ نویسی در آردوینو را شروع کنیم، بهتر است یک تصویر کلی از مفهوم داده‌ های متغییر enum داشته‌ باشیم. ‌در این بخش سعی کرده‌ایم با ارائه مثال های مختلف و توضیح در مورد آنها مفهوم داده‌های enum را به شکل دقیق بررسی کنیم.

قبل از یادگیری انواع متغییر، با آموزش توابع آردوینو به‌ شروع کد نویسی مسلط شوید!

مثال: تصور کنید میخواهیم در برنامه‌مان از “Department” استفاده‌ کنیم و به کمک آن اطلاعات رشته‌ دانش‌آموزان و کارکنان یا اعضای هیئت‌علمی را وارد کنیم. در‌ صورتی که از کد برای این کار استفاده‌ کنیم در زمان صرفه جویی خواهیم کرد.

آردوینو متغییر enum

در برنامه نویسی این امکان را داریم که به هرکدام از کاراکترها و عبارات بالا کد اختصاص دهیم و در برنامه از این کدها استفاده‌ کنیم.

د‌ر‌ تصویر بالا، به جای اینکه از رشته‌ استفاده‌ کنیم، برای هرمورد عدد در نظر گرفته‌ایم تا کدنویسی به شکل بهینه‌ و سریع انجام شود. به همین صورت برای سایر داده‌ها نیز عدد در نظر گرفته‌ شده‌ است:

آردوینو متغییر enum

گزینه های قرار گرفته‌ در منوی فایل به‌ صورت زیر خواهد بود:

‘0’ ‌به‌ معنی New , ‘1’ به‌ معنی Open , ‘2’ به‌ معنی Save , ‘3’ به‌ معنی Close

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

کاربرد داده های Enum

استفاده‌ از داده‌های متغییر Enum در برنامه‌نویسی آردوینو به عنوان روشی کاربردی و مفید جهت تعریف و ایجاد ثابت های صحیح و متغیرهای مختلف شناخته‌ میشود. از این ابزار در مواردی مثل ایجاد منو های مختلف یا مد های عملکردی استفاده‌ میشود. چون در این موارد لازم است کاربر به شکل ساده‌ اما دقیق مد و منو های دلخواه‌ خود را انتخاب کند.

‌Enum‌ این امکان را فراهم کرده‌ است که بتوانید با سرعت زیاد اطلاعات ثابت و عناصر دلخواه خود را برای متغیر یا منوی موردنظرتان تعریف کنید.

ساختار تعریف متغییر Enum

برای تعریف enum در آردوینو (C++) باید از کلمه کلیدی enum به همراه عناصر جدا شده با کاما استفاده‌ کنید.

قاعده نوشتاری متغییر enum در قالب نمونه کد آردوینو (C++) زیر نوشته میشود.

				
					enum name_of_enum {
    Element1,
    Element2,
    Element3,
    Element4,
    Element5
};
				
			

در ابتدا با استفاده از دستور enum و نام اختصاص داده شده به آن متغیر موردنظرمان را تعریف می‌کنیم. ‌در‌‌ ادامه عناصر اختصاص داده شده به آن را مشخص می‌کنیم. د‌‌‌ر تصویر بالا Element1، Element2، Element3، Element4 و Element5 داده‌های مورد نظر ما هستند.

مثال آردوینو برای متغییر enum: تصور کنید برای طراحی منو سفارش یک بستنی طیف کوچکی از طعم های بستنی را پوشش داده‌ اید. مشتریان شما در این محدوده میتوانند طعم مورد نظرشان را انتخاب کنند.

				
					enum ice_cream {
    vanilla,
    chocolate,
    butterscotch,
    strawberry,
    mango,
    oreo
};
				
			

با استفاده از کدهای بالا عناصر و مقادیری که مورد نیاز است را مشخص کرده‌ ایم. این مقادیر از 0 شروع میشوند، به این صورت که وانیل 1، شکلات 2 و… . همچنین مقادیری که به صورت پیشفرض تعریف شده اند را میتوان تغییر داد. به کمک این مثال Enum چیست؟ را بهتر میتوانید درک کنید. 

نحوه فراخوانی متغییر enum

برای فراخوانی یک داده enum، لازم است نام enumeration به همراه متغیر آن را بنویسیم. در این مثال i متغیر enum است:

				
					enum ice_cream {
    vanilla,
    chocolate,
    butterscotch,
    strawberry,
    mango,
    oreo
};

ice_cream i;
				
			

مثال آردوینو برای متغییر enum:

				
					enum captain {
    Avi,
    Sid,
    Robby,
    Sami,
    Jake
};

void setup() {
    Serial.begin(115200);

    captain cap = Avi;
    
    if(cap == Avi) {
        Serial.print("Our captain is Avi and it's value is: ");
        Serial.println(Avi);
    }
}
void loop() {
    //empty
}
				
			

‌در این مثال آردوینو ابتدا یک متغییر enum تعریف کرده‌ و سپس نام بازیکنان را به عنوان عنصرهای این متغییر مشخص کرده‌ایم. در‌ میان عناصر این متغییر باید یک بازیکن را به عنوان کاپیتان تیم مشخص کنیم. به همین خاطر یک متغییر enum دیگر با نام cap تعریف کرده‌ایم.

د‌ر حلقه تنظیمات برنامه مقدار متغییر enum را مشخص کرده‌ایم و Avi را برابر با Cap قرار داده‌ایم. د‌ر‌ ادامه‌ با یک حلقه شرطی نام بازیکن را چک می‌کنیم. ‌در‌ صورتی که شرط برقرار باشد، پس از اجرا شدن دستورات حلقه در سریال مانیتور آردوینو نام بازیکن و مقدار عددی یعنی 0 آن چاپ می شود.

حالا به مثال زیر توجه‌ کنید:

				
					enum supercars {
    Venom_F5 = 301,
    Veryon   = 268,
    Valkyrie = 240,
    Roadster = 250
};

supercars speed1;
supercars speed2;
    
void setup() {
    Serial.begin(115200);

    speed1 = Valkyrie;
    speed2 = Roadster;
    
    if(speed1 < speed2) {
        Serial.print("Its a win for Roadster with the speed of ");
        Serial.println(speed2);
    } else {
        Serial.print("Its a win for Valkyrie with the speed of ");
        Serial.println(speed1);
    }
}
void loop() {
    //empty
}
				
			

د‌ر‌‌ مثال آردوینو بالا یک متغییر enum تعریف کرده‌ایم و سرعت ماشین های مختلف را به عنوان عناصر متغییر تعریف کرده‌ایم. ‌‌د‌ر ادامه دو عنصر Valkyrie (با سرعت 240) و Roadster (با سرعت 250) را به متغیرهای speed1 و speed2 که متغییر نوع شمارشی enum هستند اختصاص داده‌ایم.

حالا میتوانیم با یک حلقه شرطی سرعت این دو ماشین را مقایسه کنیم و ماشین با سرعت بالاتر را به عنوان برنده در سریال مانیتور چاپ کنیم.

تعریف متغییر به صورت typedef enum

عملکرد دستور typedef به صورتی است که شما برای هر نوع متغییر یک نام اختصاصی مشخص میکنید، در تعریف متغییر enum نیز، ما یک متغییر جدید با مجموعه عناصر دلخواه به کامپایلر آردوینو اضافه میکنیم. برای استفاده از یک نوع متغییر شمارشی با عنوانین متفاوت اصولی تر است متغییر enum را همراه با typedef تعریف کنید.

مثال قبل را با ساختار typedef enum برسی میکنیم.

				
					typedef enum supercars_t {
  Venom_F5 = 301,
  Veryon   = 268,
  Valkyrie = 240,
  Roadster = 250
}supercars;

supercars speed1;
supercars speed2;

void setup() {
  Serial.begin(115200);

  speed1 = Valkyrie;
  speed2 = Roadster;

  if (speed1 < speed2) {
    Serial.print("Its a win for Roadster with the speed of ");
    Serial.println(speed2);
  } else {
    Serial.print("Its a win for Valkyrie with the speed of ");
    Serial.println(speed1);
  }
}
void loop() {
  //empty
}
				
			

در این آموزش به مفهوم enum چیست؟ پرداختیم و برای درک بهتر این موضوع چندین مثال را برسی کردیم. امیدواریم این مطلب آموزشی مورد توجه شما قرار گرفته‌ باشد. از اینکه تا انتهای این مطلب آموزشی با ما همراه بودید از شما متشکریم.

اشتراک گذاری این نوشته

دانشجوی رشته مکاترونیک صنعتی هستم و در زمینه اتوماسیون و توسعه صنعت فعالیت میکنم. سعی میکنم تجربیات و خورده دانشی که از الکترونیک دارم را با شما به اشتراک بگذارم.

شاید این مطالب براتون جذاب باشه!

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تماس با ما

عضویت

عضو سایت هستید؟ برای ورود کلیک کنید

ورود به حساب کاربری