نحن جميعًا على دراية بالنرد وغالبًا ما نلعب لعبة LUDO أو SANP SIDI (Snake & Ladders) باستخدام النرد. النرد هو صندوق صلب من النوع المربع يحتوي على 6 أرقام مختلفة من جميع جوانبه. نرمي النرد على سطح للحصول على رقم عشوائي أثناء لعب الألعاب. في هذا المشروع ، حاولنا نسخه باستخدام نرد رقمي باستخدام لوحة اردوينو أونو. بدلاً من رمي النرد ، نحتاج هنا إلى الضغط على زر للحصول على رقم عشوائي بين 0 إلى 6.
المكونات المطلوبة
- اردوينو UNO
- عرض سبعة أجزاء (الأنود المشترك)
- أزرار الضغط
- توصيل الأسلاك
- لوح الخبز
- 1 كيلو المقاوم
- مزود الطاقة
مخطط الدائرة وشرحها
كما هو موضح في دائرة النرد الرقمية أعلاه ، يتم استخدام اردوينو للتحكم في العملية بأكملها. يتم استخدام زري ضغط في الدائرة - أحدهما لبدء النرد والآخر لإعادة ضبط النرد. يقوم Arduino بقراءة هذين الزرين وإجراء العملية. يتم استخدام عرض سبعة أجزاء لعرض نتيجة النرد.
يقوم Arduino بتنفيذ وظيفة rand () بشكل مستمر ويخزن قيمتها في متغير مؤقت. عند الضغط على زر النرد ، يتم حساب القيمة المخزنة وعرضها على سبعة أجزاء باستخدام الطريقة المناسبة (انظر جزء البرمجة من المقالة)
هنا في دائرة النرد هذه ، يتم استخدام شاشة عرض الأنود السبعة الشائعة لعرض أرقام النرد ، والتي ترتبط مباشرة بأرقام دبوس اردوينو الرقمية 6 ، 5 ، 4 ، 3 ، 2 ، 1 ، 0. ودبوس الأنود المشترك المكون من سبعة أجزاء هو متصل بمقاوم +5 فولت 220 أوم. كما تم توصيل زري ضغط هما زر النرد وزر إعادة الضبط المتصلين بالمسمار الرقمي 14 (A0) و 15 (A1) فيما يتعلق بالأرض.
شرح الكود
يلعب جزء البرمجة في هذا المشروع دورًا مهمًا للغاية في عرض رقم نرد رقمي عشوائي على عرض سبعة مقاطع. لا يحتوي Arduino على أي مكتبة لعرض سبعة أجزاء. لذلك قمنا بإنشاء كود كامل دون استخدام أي مكتبة.
بادئ ذي بدء ، نختار دبوسًا رقميًا لعرض سبعة أجزاء.
دبوس int = {6،5،4،3،2،1،0} ؛
بعد ذلك قمنا بإنشاء مجموعة من 6 أرقام من النرد وهي 1 و 2 و 3 و 4 و 5 و 6.
رقم الحرف = {0x02، 0x79، 0x24، 0x30، 0x19، 0x12} ؛
الآن قدمنا توجيهًا لاستخدام دبوس اردوينو كإخراج.
إعداد باطل () {لـ (int i = 0؛ i <7؛ i ++) pinMode (pin، OUTPUT)؛ pinMode (النرد ، الإدخال) ؛ pinMode (إعادة تعيين ، الإدخال) ؛ digitalWrite (النرد ، عالية) ؛ digitalWrite (إعادة تعيين ، عالية) ؛
نرسل رمزًا لعرض الصفر على عرض سبعة أجزاء بشكل افتراضي.
درجة الحرارة int = 0x40 ؛ لـ (int i = 0 ؛ i <7 ؛ i ++) {int temp1 = temp & 0x01 ؛ digitalWrite (دبوس ، temp1) ؛ temp = temp >> 1 ؛ }
الآن نقوم بتشغيل الدالة rand () للحصول على رقم عشوائي.
int temp = rand () ؛
وعندما نضغط على برنامج زر النرد ، قم أولاً بتعيين هذا الرقم العشوائي ثم أرسل الرقم إلى عرض الأجزاء السبعة باستخدام عامل bit wise.
إذا (digitalRead (النرد) == 0) {int k = temp٪ 6 ؛ درجة الحرارة = رقم ؛ انتظر()؛ لـ (int i = 0 ؛ i <7 ؛ i ++) {int temp1 = temp & 0x01 ؛ digitalWrite (دبوس ، temp1) ؛ temp = temp >> 1 ؛ } تأخير (200)؛ }
ونفس الشيء بالنسبة لزر إعادة الضبط.
في هذا البرنامج نرسل بت واحد في كل مرة. نحن هنا نطبق حلقة for والتي تعمل 7 مرات لإرسال البيانات إلى كل جزء واحدًا تلو الآخر.