لعبة نرد باستخدام الاردوينو

مبتدئ

image_pdf

الكود البرمجي

#define LED1 10 
#define LED2 9 
#define LED3 7 
#define LED4 8  
#define BUTTON 6

int buttonState;
long ran;
int time = 2000;

void setup ()
{
  pinMode (LED1, OUTPUT);
  pinMode (LED2, OUTPUT);
  pinMode (LED3, OUTPUT);
  pinMode (LED4, OUTPUT);
  pinMode (BUTTON, INPUT);
  randomSeed(analogRead(0));
}

void loop()
{
  buttonState = digitalRead(BUTTON);
  if (buttonState == HIGH){
    ran = random(1, 7);
    if (ran == 1){
      digitalWrite (LED4, HIGH);
      delay (time);
    }
    if (ran == 2){
      digitalWrite (LED1, HIGH);
      delay (time);
    }
    if (ran == 3){
      digitalWrite (LED3, HIGH);
      digitalWrite (LED4, HIGH);
      delay (time);
    }
    if (ran == 4){
      digitalWrite (LED1, HIGH);
      digitalWrite (LED3, HIGH);
      delay (time);
    }
    if (ran == 5){
      digitalWrite (LED1, HIGH);
      digitalWrite (LED3, HIGH);
      digitalWrite (LED4, HIGH);
      delay (time);
   }
   if (ran == 6){
      digitalWrite (LED1, HIGH);
      digitalWrite (LED2, HIGH);
      digitalWrite (LED3, HIGH);
      delay (time);
   }
  }
  digitalWrite (LED1, LOW);
  digitalWrite (LED2, LOW);
  digitalWrite (LED3, LOW);
  digitalWrite (LED4, LOW);
}

شرح الكود :

في البداية نقوم بتسمية منافذ الاردوينو المستخدمة في المشروع وتعريف عدد من المتغيرات التي سيتم استخدامها بالكود لاحقا.

#define LED1 10
#define LED2 9
#define LED3 7
#define LED4 8
#define BUTTON 6

int buttonState;
long ran;
int time = 2000;

 سيتم استخدام المتغير buttonState لتسجيل حالة المفتاح إذا كان مضغوطا أو لا. والمتغير ran لتسجيل رقم يتم توليده عشوائيا بين رقم 1 و 6 . والمتغير time لتسجيل مدة التأخير الزمني الذي تحتفظ به الـ LEDs بالإضاءة قبل ان تنطفئ.

بعد ذلك في الدالة ()setup، نقوم بضبط الـ LEDs كمخرج والمفتاح كمدخل.

void setup () { 
    pinMode (LED1, OUTPUT);  
    pinMode (LED2, OUTPUT); 
    pinMode (LED3, OUTPUT); 
    pinMode (LED4, OUTPUT); 
    pinMode (BUTTON, INPUT); 

    randomSeed(analogRead(0)); 
}

لاحقا سيتم استخدام دالة random لتوليد الأرقام العشوائية، ولكن هذه الدالة تحتاج إلى ما سيمى بالـ seed وهو عبارة عن رقم تستخدمه الدالة random في حساباتها لتوليد الرقم العشوائي.

randomSeed(analogRead(0));

وأخيرا، في الدالة ()loop نقوم بقراءة حالة المفتاح، إذا كان مضغوط نستخدم الدالة (random (1,7 للحصول على رقم عشوائي بين 1و 6. ثم نقوم بإضاءة الـ LEDs اعتمادا على هذا الرقم العشوائي. يتم إضاءة مجموعة الـ LEDs بشكل معين كما لو كان نردا حقيقيا ثم ننتظر لمدة ثانيتين ونطفئ الـ LEDs لإنتظار ضغطة جديدة على المفتاح ليتم عرض رقم جديد.

void loop()
{
  buttonState = digitalRead(BUTTON);
  if (buttonState == HIGH){
    ran = random(1, 7);
    if (ran == 1){
      digitalWrite (LED4, HIGH);
      delay (time);
    }
    if (ran == 2){
      digitalWrite (LED1, HIGH);
      delay (time);
    }
    if (ran == 3){
      digitalWrite (LED3, HIGH);
      digitalWrite (LED4, HIGH);
      delay (time);
    }
    if (ran == 4){
      digitalWrite (LED1, HIGH);
      digitalWrite (LED3, HIGH);
      delay (time);
    }
    if (ran == 5){
      digitalWrite (LED1, HIGH);
      digitalWrite (LED3, HIGH);
      digitalWrite (LED4, HIGH);
      delay (time);
   }
   if (ran == 6){
      digitalWrite (LED1, HIGH);
      digitalWrite (LED2, HIGH);
      digitalWrite (LED3, HIGH);
      delay (time);
   }
  }
  digitalWrite (LED1, LOW);
  digitalWrite (LED2, LOW);
  digitalWrite (LED3, LOW);
  digitalWrite (LED4, LOW);
}
X
تم إضافة المنتج إلى السلة بنجاح