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

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

arduino-basic-tutorial-part-thirteen-random-number-digispark
نوشته شده توسط پریسا پوربلورچیان

از نامش مشخص است. اعداد تصادفی، غیرعمدی که با فراخوانی تابع Random Numbers در برنامه وارد می‌شود. در آموزش بخش چهاردم آردوینو توابع Random Numbers را با هم بررسی خواهیم کرد. در ادامه با مرجع تخصصی آردوینو به زیان فارسی، دیجی اسپارک همراه باشید.


random()


تابع تصادفی random اعداد شبه تصادفی در برنامه تولید می‌کند.  نوع داده دیتا در تابع تصادفی long است.تابع random() در برنامه‌نویسی آردوینو (Arduino) یک تابع تولید اعداد تصادفی (رندم) است که از آن برای ایجاد اعداد تصادفی در برنامه‌های خود می‌توانید استفاده کنید. این تابع تصادفی اعداد صحیح بین ۰ و ۶۵,۵۳۵ (که حداکثر مقدار unsigned int در Arduino است) تولید می‌کند.

 

  • random(maxVal): این متد یک عدد تصادفی بین ۰ و maxVal – 1 تولید می‌کند. به عبارت دیگر، حداکثر عدد تصادفی تولید شده برابر با maxVal – 1 خواهد بود.
  • int randomNumber = random(10); // یک عدد تصادفی بین ۰ و ۹ تولید می‌شود.

 

  • random(minVal, maxVal): این متد یک عدد تصادفی بین minVal و maxVal – 1 تولید می‌کند.
  • int randomNumber = random(5, 10); // یک عدد تصادفی بین ۵ و ۹ تولید می‌شود.

 

 

 روش فراخوانی تابع تصادفی

 

random(max)
random(min, max)

 

پارامترهای تابع تصادفی

min مینیمم = کمترین مقدار تابع اعداد تصادفی

max ماکزیمم = بیشترین مقدار تابع اعداد تصادفی

 

نمونه کد آردوینو Random Numbers

برای تست تابع random نمونه کد آردوینو زیر را در نرم افزار Arduino IDE وارد کنید.

long randomnumber;  // تعریف یک متغیر با اسم دلخواه از نوع داده long

void setup() {
  Serial.begin(9600); // انتخاب بادریت ۹۶۰۰
  random(analogRead(0)); // دریافت اعداد تصادفی از analogread
}

void loop() {
  randomnumber = random(300); // انتخاب بازه ی اعداد تصادفی
  Serial.println(randomnumber); //نمایش اعداد تصادفی
  delay(1000); // نمایش اعداد تصادفی هر یک ثانیه یک بار
}


 

 

در این کد یک متغیر با اسم دلخواه randomnumber برای نمایش اعداد تصادفی ایجاد و نوع داده را long انتخاب می‌کنیم. چرا long? بالاتر گفته شده است که برای فراخوانی تابع اعداد تصادفی نوع داده بایستی long باشد. برای دریافت مقادیر از پایه analogread در آردوینو استفاده می‌شود. به صورت پیش فرض مقادیر از صفر آغاز می‌شود. از سریال مانیتور برای نمایش مقادیر تصادفی استفاده شده است که از بادریت ۹۶۰۰ استفاده شده است. در حلقه ی برنامه از تابع random برای مشخص کردن ماکزیمم عدد دریافتی تصادفی در برنامه استفاده می‌کنیم. سپس اعداد هر یک ثانیه یک بار در سریال مانیتور نمایش داده می‌شود.

 

 


Randomseed()


همانند تابع random است با این تفاوت که میتوانیم دامنه اعداد تصادفی را در برنامه مشخص کنیم. تابع randomSeed() در برنامه‌نویسی آردوینو (Arduino) برای تنظیم seed تولید اعداد تصادفی توسط تابع random() به منظور تولید اعداد تصادفی پیش‌پیش‌فرضی (pseudo-random numbers) مورد استفاده قرار می‌گیرد.

  • randomSeed(seed);

 

در این مثال، randomSeed(analogRead(0)) seed تابع random() را با استفاده از مقدار خوانده شده از پین آنالوگ ۰ (که ممکن است با تغییرات در ولتاژ ورودی تغییر کند) تنظیم می‌کند. این کار باعث می‌شود هر بار که برنامه اجرا می‌شود، توالی متفاوتی از اعداد تصادفی تولید شود.

 

 

روش فراخوانی تابع RandomSeed

randomSeed(seed)

 

پارامترهای تابع تصادفی

Seed =  یک عدد برای ساخت دامنه اعداد تصادفی

 

نمونه کد آردوینو RandomSeed Numbers

برای تست تابع randomSeed نمونه کد آردوینو زیر را در نرم افزار Arduino IDE وارد کنید.

long randomnumber;  // تعریف یک متغیر با اسم دلخواه از نوع داده long

void setup() {
  Serial.begin(9600); // انتخاب بادریت ۹۶۰۰
  randomSeed(analogRead(0)); // دریافت اعداد تصادفی از analogread
}

void loop() {
  randomnumber = random(300); // انتخاب بازه ی اعداد تصادفی
  Serial.println(randomnumber); //نمایش اعداد تصادفی
  delay(1000); // نمایش اعداد تصادفی هر یک ثانیه یک بار
}


 

 

 


تفاوت random , randomseed


اگر از تابع random برای دریافت اعداد تصادفی در آردوینو استفاده کنیم، با هر بار ریست آردوینو مقادیر تصادفی در برنامه تکرار می‌شود. در صورت استفاده از تابع RandomSeed در صورت ریست مقادیر تصادفی غیرتکراری در برنامه ایجاد می‌شود.  به عنوان مثال در کد زیر ۵ عدد تصادفی با random در برنامه ایجاد می‌کنیم.

void setup(){
  Serial.begin(9600);
  for(int i=0; i<5; i++){

    Serial.print(random(1, 101));
    Serial.print(" ");
  }

  Serial.println(" ");
}

void loop(){
  
}

 

 

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

 

 

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

void setup(){
  randomSeed(analogRead(A0));
  Serial.begin(9600);
  for(int i=0; i<5; i++){

    Serial.print(random(1, 101));
    Serial.print(" ");
  }

  Serial.println(" ");
}

void loop(){
  
}

 

 

سریال مانیتور را باز کنید. ۵ عدد به صورت تصادفی نمایش داده می‌شود. تکته ی مهم اینجاست! با ریست آردوینو اعداد تصادفی جدید تولید می‌شود که توسط تابع randomseed تولید شده است و از پایه آنالوگ A0 استفاده می‌شود.

 


وسایل مورد نیاز


آردوینو 

همین!

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

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

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

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

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

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

۲۶ دیدگاه