🎲 تاس دیجیتال با آردوینو

پروژه‌ای کوچک که یک مفهوم مهم را یاد می‌دهد: عدد تصادفی در کامپیوتر واقعاً تصادفی نیست.

مشکل random

اگر فقط random(1, 7) بنویسی، آردوینو هر بار که روشن می‌شود دقیقاً همان دنباله‌ی اعداد را تولید می‌کند. تاست همیشه یک نتیجه‌ی تکراری می‌دهد.

راه‌حل: randomSeed

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

void setup() {
  randomSeed(analogRead(A0));   // A0 را به هیچ‌جا وصل نکن
}

کد کامل

const int button = 2, buzzer = 8;
const int leds[] = {3, 4, 5, 6, 7, 9};   // شش LED

void showNumber(int n) {
  for (int i = 0; i < 6; i++) {
    digitalWrite(leds[i], i < n ? HIGH : LOW);
  }
}

void setup() {
  randomSeed(analogRead(A0));
  for (int i = 0; i < 6; i++) pinMode(leds[i], OUTPUT);
  pinMode(button, INPUT_PULLUP);
  pinMode(buzzer, OUTPUT);
}

void loop() {
  if (digitalRead(button) == LOW) {
    // افکت چرخیدن تاس
    for (int i = 0; i < 12; i++) {
      showNumber(random(1, 7));
      tone(buzzer, 1200, 30);
      delay(60 + i * 12);        // کم‌کم آهسته‌تر
    }
    showNumber(random(1, 7));     // نتیجه‌ی نهایی
    delay(300);
  }
}

نکته‌ی random

random(1, 7) عددی بین ۱ تا ۶ می‌دهد — حد بالا هیچ‌وقت شامل نمی‌شود. این یکی از رایج‌ترین اشتباه‌هاست.

افکت چرخش چرا مهم است؟

بدون آن، تاس بی‌روح است. تأخیری که کم‌کم زیاد می‌شود، حس «چرخیدن و ایستادن» تاس واقعی را می‌سازد. یک تغییر کوچک در کد، تفاوت بزرگ در حس پروژه.

تاس دیجیتالت را بساز 🎲

مقاله‌های دیگر

🤖

آردوینو چیست؟ راهنمای کامل برای شروع از صفر

بهترین شبیه‌ساز مدار آنلاین فارسی — چرا شبیه‌ساز، و چرا روبومیکر؟

💡

ساده‌ترین پروژه الکترونیک برای بچه‌ها: روشن‌کردن یک LED