تولید اعداد تصادفی در دستگاههای محاسباتی بسیار مهم است که به آنها کمک میکند تا وظایف را به صورت تصادفی انجام دهند. کاربردهای تولید اعداد تصادفی را می توان در به هم زدن فایل های صوتی در یک پخش کننده صوتی، تقریباً در همه انواع بازی های دیجیتال، تولید رمز عبور و غیره یافت. الگوریتم های زیادی وجود دارند که می توانند اعداد تصادفی را تولید کنند. الگوریتم های تولید اعداد تصادفی با الگوریتم های دیگر به شیوه ای جالب تفاوت دارند. آنها در واقع یک عدد تصادفی از سخت افزار مانند نویز پین های غیر متصل را می خوانند و سپس برخی از محاسبات را روی آن اعمال می کنند تا عددی را در محدوده مشخصی تولید کنند.
این پروژه خاص نحوه تولید یک عدد تصادفی با کمک برد آردوینو را توضیح می دهد. آردوینو یک پلتفرم نمونه سازی آسان است که به دلیل سادگی، توانایی و همچنین به دلیل کمک های موجود از اینترنت، هم در بین علاقه مندان و هم متخصصان محبوب است. برد آردوینو اساساً یک برد مبتنی بر AVR است که شامل تمام سخت افزارهای مورد نیاز برای عملکرد صحیح میکروکنترلر است و همچنین با بوت لودر آردوینو فلش می شود . همه بردهای آردوینو با آردوینو IDE سازگار هستند که به کامپایل کد و برنامه ریزی برد کمک می کند.
مرحله 1: توضیحات
این پروژه خاص از برد آردوینو پرو مینی استفاده می کند که اندازه بسیار کوچکی دارد و می تواند با کانکتورهای سازگار با برد نان متصل شود. این برد دارای کنترلر ATMEGA128 یا ATMEGA328 در داخل آن است که با فرکانس کریستالی 8 مگاهرتز یا 16 مگاهرتز کار می کند. برد آردوینو پرو مینی دارای پین های دیجیتالی است که به صورت 2، 3، 4 تا 13 مشخص شده اند. در برد آردوینو، برخی از پین های دیجیتال را می توان به عنوان پایه های خروجی آنالوگ پیکربندی کرد و همچنین پایه های ورودی آنالوگ اختصاصی نیز وجود دارد که می توان از آنها برای ولتاژ استفاده کرد. کاربردهای سنجش
(تصاویر بالا را بررسی کنید)
از آنجایی که برد arduino pro-mini مداری برای اتصال آن با پورت سریال یا پورت USB رایانه شخصی ندارد، برای اتصال آن به رایانه شخصی به یک برد تبدیل USB به TTL خارجی نیاز است. این سخت افزار به برنامه نویسی برد آردوینو کمک می کند و همچنین به ارتباط سریال با پورت USB کامپیوتر کمک می کند.
برای درک پایه ای از آردوینو، می توانید به این پروژه بروید و نحوه شروع کار با آردوینو را بررسی کنید و تمام مواردی را که در آنجا بحث شده است امتحان کنید. برد پرو مینی آردوینو دارای 8 پین ورودی آنالوگ است که به صورت A0، A1 تا A7 مشخص شده اند. آنها در واقع کانال های ورودی به ADC داخلی ATMEGA328 هستند که می توانند مقدار آنالوگ را بخوانند و آنها را به معادل دیجیتال تبدیل کنند. در کاربردهای معمولی سنجش ولتاژ آنالوگ، پین ورودی آنالوگ مورد نیاز به ولتاژی متصل می شود که باید خوانده شود. وضعیتی را فرض کنید که در آن پین آنالوگ بدون اتصال رها شده است. ولتاژ در پین تعریف نشده است و از این رو هنگام خواندن با استفاده از ADC، خروجی دیجیتال نیز یک مقدار تصادفی تعریف نشده خواهد بود. این روش اساسی است که توسط آن یک عدد تصادفی به دست می آید.
اولین عدد تصادفی به دست آمده از سخت افزار "دانه تصادفی" نامیده می شود. سپس این بذر تصادفی روی الگوریتمهایی به نام الگوریتم تولید اعداد تصادفی اعمال میشود که میتواند یک عدد تصادفی را در محدوده مشخصی تولید کند. توابع داخلی در Arduino IDE وجود دارد که به تولید اعداد تصادفی کمک می کند. این پروژه خاص از دو تابع به نام های randomSeed() و random() استفاده می کند و جزئیات تابع در زیر مورد بحث قرار می گیرد.
randomSeed()
randomSeed() مولد اعداد شبه تصادفی را مقداردهی اولیه می کند و باعث می شود که از یک نقطه دلخواه در دنباله تصادفی خود شروع شود. این تابع یک پارامتر دارد که تصمیم میگیرد تولید اعداد تصادفی از کدام نقطه دنباله شروع شود. برای مقداردهی اولیه مولد اعداد شبه تصادفی با یک دنباله جدید در هر بار، مقدار ارائه شده به عنوان پارامتر نیز باید متفاوت باشد.
این کد خاص یک مقدار تصادفی را از پایه ورودی آنالوگ A0 می خواند که بدون اتصال رها می شود تا هر بار که کد اجرا می شود می تواند مجموعه ای از اعداد تصادفی متفاوت تولید کند.
تصادفی()
تابع random() برای تولید اعداد شبه تصادفی که در محدوده مشخصی قرار می گیرد استفاده می شود. تابع همیشه پس از فراخوانی تابع randomSeed() فراخوانی می شود. این تابع دو پارامتر دارد که اولی کمترین مقدار مورد نیاز و دومی بزرگترین مقدار مورد نیاز است.
کد
کد نوشته شده برای این پروژه، مولد اعداد شبه تصادفی را با مقدار تصادفی خوانده شده از پایه ورودی آنالوگ A0 مقداردهی اولیه می کند و از تابع randomSeed() استفاده می کند. تابع مورد استفاده برای خواندن مقدار از A0 تابع analogRead() است که قبلا در پروژه های قبلی در مورد نحوه استفاده از ورودی آنالوگ و خروجی آنالوگ برد آردوینو ، نحوه استفاده از آردوینو برای نمایش مقادیر سنسور ، نحوه ساخت نمایشگر سنسور پویا بحث شده است. با استفاده از آردوینو ، نحوه ذخیره مقادیر سنسور در EEPROM آردوینو.