لف بأسلوب مع قالب D20 الإلكتروني هذا

لف بأسلوب مع قالب D20 الإلكتروني هذا

هل تريد شيئًا فريدًا من نوعه في لعبة لعب الأدوار القادمة على الطاولة؟ ماذا عن D20 الإلكترونية مع رسومات مخصصة للنجاحات والأخطاء الحرجة؟ سأوضح لك اليوم كيف تصنع بنفسك باستخدام Arduino وبعض الأجزاء البسيطة.





لا تقلق إذا لم تستخدم Arduino من قبل ، فلدينا دليل البداية .





بناء خطة

هذا مشروع بسيط. سيقود Arduino شاشة OLED ، وسيقوم زر بلف الموت. ستظهر الرسومات المخصصة للضربة الحرجة أو الضربات الحرجة. يمكنك بسهولة تعديل الرمز ليكون D8 أو D10 أو D12.





ماذا تحتاج

  • 1 × اردوينو
  • 1 × 0.96 بوصة شاشة I2C OLED
  • 1 × زر ضغط
  • 1 × 10 كيلو؟ المقاوم
  • 1 × اللوح
  • أسلاك توصيل متنوعة
  • الكود الكامل هنا ، إذا كنت لا ترغب في اتباع التعليمات المكتوبة بالكامل.

هذه هي الأجزاء الأساسية التي تحتاجها لبناء D20 الخاص بك. قد ترغب في تثبيته في حالة (تمت مناقشتها أدناه) ولحام الدائرة في حالة أكثر ديمومة. فيما يلي الأجزاء الإضافية التي ستحتاج إليها للقيام بذلك:

شاشات OLED هذه رائعة جدًا. يمكن شراؤها عادة باللون الأبيض أو الأزرق أو الأصفر أو مزيج من الثلاثة. لقد اشتريت واحدة باللون الأزرق لتتناسب مع حالتي. تأكد من حصولك على I2C نموذج بدلا من SPI .



سيكون أي اردوينو مناسبًا تقريبًا. لقد اخترت نانو ، لأنها صغيرة بما يكفي لتناسب القضية. تحقق من دليل الشراء الخاص بنا للحصول على مزيد من المعلومات حول طرازات Arduino.

الدائرة

إليك الدائرة التي تحتاجها:





الاتصال VCC و GND على شاشة OLED إلى Arduino + 5 فولت و أرض . الاتصال التناظرية 4 على اردوينو إلى الدبوس المسمى SDA . الاتصال التناظرية 5 الى SCL دبوس. تحتوي هذه المسامير على الدوائر اللازمة لتشغيل الشاشة باستخدام ناقل I2C. ستختلف المسامير الدقيقة حسب الطراز ، ولكن يتم استخدام A4 و A5 في Nano و Uno. افحص ال توثيق مكتبة الأسلاك لطرازك إذا كنت لا تستخدم Uno أو Nano.

قم بتوصيل البطارية بالأرضي و خمر دبوس. يشير هذا إلى الجهد الكهربي الداخلي ، ويقبل مجموعة متنوعة من الفولتية المختلفة للتيار المستمر - ولكن تحقق من الطراز المحدد أولاً ، ويمكن أن يختلف قليلاً في بعض الأحيان.





قم بتوصيل الزر بـ دبوس رقمي 2 . لاحظ كيف أن 10 كيلو؟ المقاوم متصل بالأرض. هذا مهم جدا! يُعرف هذا باسم المقاوم المنسدل ، ويمنع Arduino من اكتشاف البيانات الزائفة أو التداخل عند الضغط على الزر. كما أنه يعمل على حماية السبورة. إذا لم يتم استخدام هذا المقاوم ، فسيذهب + 5V مباشرة إلى الأرض. هذا هو المعروف باسم قصيرة ميتة وهي طريقة سهلة لقتل Arduino.

إذا كنت تقوم بلحام هذه الدائرة ، فقم بحماية اتصالاتك بأنابيب الانكماش الحراري:

تأكد من عدم تسخينه كثيرًا ، وافعل ذلك فقط بمجرد التأكد من عمل الدائرة. قد ترغب أيضًا في لف الكابلات إلى أزواج. هذا يبقيهم أنيقين ويساعد على حمايتهم من الإجهاد غير المبرر:

اختبار الزر

الآن بعد أن قمت ببناء الدائرة ، قم بتحميل رمز الاختبار هذا (تأكد من تحديد اللوحة والمنفذ الصحيحين من ملف أدوات> لوحة و أدوات> منفذ القوائم):

const int buttonPin = 2; // the number of the button pin
void setup() {
pinMode(buttonPin, INPUT); // setup button
Serial.begin(9600); // setup serial
}
void loop(){
if(digitalRead(buttonPin) == HIGH) {
Serial.print('It Works');
delay(250);
}
}

بمجرد التحميل ، حافظ على Arduino متصلاً عبر USB وافتح الشاشة التسلسلية ( أعلى اليمين> جهاز العرض التسلسلي ). يجب أن ترى الكلمات إنها تعمل تظهر في كل مرة تضغط فيها على الزر.

إذا لم يحدث شيء ، اذهب وتحقق مرة أخرى من دائرتك.

إعداد OLED

تحتاج إلى تثبيت مكتبتين لتشغيل العرض. تحميل Adafruit_SSD1306 ومكتبات Adafruit-GFX [لم يعد متاحًا] من Github ، واحفظها في مجلد مكتبتك. إذا لم تكن متأكدًا من مكان وجود مجلدات المكتبة ، فانتقل إلى قراءة البرنامج التعليمي للألعاب الرجعية ، حيث أقوم بتهيئة نفس الشاشة بمزيد من التفاصيل.

أعد تشغيل Arduino IDE وقم بتحميل رسم اختبار من ملف ملف> أمثلة قائمة. يختار Adafruit SSD1306 وثم ssd1306_128x64_i2c . قم بتحميل هذا الرمز (سيستغرق بعض الوقت) ، وسترى الكثير من الأشكال والأنماط على الشاشة:

إذا لم يحدث شيء ، تحقق مرة أخرى من اتصالاتك. إذا لم تنجح بعد التحقق ، فستحتاج إلى تعديل نموذج التعليمات البرمجية.

تشغيل windows xp على windows 10

قم بتغيير هذا الخط (في بداية ملف اقامة وظيفة):

display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

الى هذا:

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

هذا يخبر المكتبة بتفاصيل محددة عن العرض الذي تستخدمه. يجب أن تكون الآن جاهزًا للاستمرار في الإنشاء.

القضية

إذا كنت تبني هذا على لوح تجارب ، أو لا ترغب في وضعه في صندوق ، فيمكنك تخطي هذه الخطوة.

لقد صممت وطبع هذا الصندوق ثلاثي الأبعاد. احصل على الملفات الشيء . لا تقلق إذا لم يكن لديك طابعة ثلاثية الأبعاد - خدمات عبر الإنترنت 3D Hubs و أشكال تقديم خدمات الطباعة عبر الإنترنت.

يمكنك بسهولة صنع هذا الصندوق من الخشب ، أو عن طريق شراء البلاستيك صندوق المشروع .

الغطاء عبارة عن تصميم بسيط ومناسب للدفع ، ويحتوي على عدد قليل من القواطع للأجهزة:

الرمز

الآن بعد أن أصبح كل شيء جاهزًا ، حان وقت الكود. إليك كيف ستعمل كود مزيف :

if button is pressed
generate random number
if random number is 20
show graphic
else if random number is 1
show graphic
else
show number

لكي يعمل هذا بشكل صحيح ، يجب إنشاء رقم عشوائي - هذه هي لفة النرد. Arduino لديه مولد أرقام عشوائي يسمى عشوائي ، لكن لا ينبغي استخدامها. في حين أنه جيد بما يكفي للمهام العشوائية الأساسية ، إلا أنه ليس عشوائيًا بما يكفي لموت إلكتروني. الأسباب التي تجعلها معقدة نوعًا ما ، ولكن يمكنك قراءة المزيد إذا كنت مهتمًا بها boallen.com .

تحميل صحيح مكتبة سيرليك على جيثب. أضف هذا إلى مجلد المكتبة وأعد تشغيل IDE.

الآن قم بإنشاء ملف جديد وقم بإعداد الكود الأولي الخاص بك (أو فقط احصل على الكود النهائي من GitHub):

#include
#include
#include
#include
#include
Adafruit_SSD1306 display(4);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // setup the OLED
pinMode(buttonPin, INPUT); // setup button
}
void loop() {

}

يقوم هذا الرمز بتكوين OLED ، ويتضمن جميع المكتبات التي تحتاجها للتواصل معها ، جنبًا إلى جنب مع مكتبة الأرقام العشوائية الجديدة. أضف الآن هذا إلى الحلقة الرئيسية:

if(digitalRead(buttonPin) == HIGH) {
delay(15);
if(digitalRead(buttonPin) == HIGH) {
display.fillScreen(BLACK); // erase the whole display
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0, 0);
display.println(TrueRandom.random(1, 21)); // print random number
display.display(); // write to display
delay(100);
}
}

هذا أساسي تمامًا في الوقت الحالي ، لكنه يعمل D20. عند الضغط على الزر ، يظهر رقم عشوائي بين واحد و 20 على الشاشة:

هذا يعمل بشكل جيد ، لكنه ممل بعض الشيء. لنجعلها أفضل. إنشاء طريقتين جديدتين ، رسم و محو :

void drawDie() {
display.drawRect(32, 0, 64, 64, WHITE);
}

هذه سترسم نردًا في منتصف الشاشة. قد ترغب في جعل هذا الأمر أكثر تعقيدًا ، ربما عن طريق رسم D20 أو D12 وما إلى ذلك ، ولكن من الأسهل رسم نرد أساسي سداسي الجوانب. إليك الاستخدام الأساسي:

drawDie();

بعد ذلك ، قم بتعديل الحلقة الرئيسية الخاصة بك لرسم رقم عشوائي ، أكبر فقط وفي المنتصف. قم بتغيير حجم النص والمؤشر إلى هذا:

display.setTextColor(WHITE);
display.setCursor(57, 21);

يبدو أفضل بكثير الآن:

المشكلة الوحيدة هي مع الأعداد الأكبر من تسعة:

إصلاح هذا بسيط. أي أرقام أقل من 10 سوف يتم ضبط المؤشر على موضع مختلف عن تلك الأرقام 10 أو أكبر. استبدل هذا الخط:

لماذا اتصالي بطيء جدا
display.setCursor(57, 21);

مع هذا:

int roll = TrueRandom.random(1, 21); // store the random number
if (roll <10) {
// single character number
display.setCursor(57, 21);
}
else {
// dual character number
display.setCursor(47, 21);
}

هذا ما يبدو عليه الآن:

كل ما تبقى الآن هو الصور عندما تقوم بفشل أو ضربة حاسمة. هناك بضع خطوات متضمنة ، لكنها عملية بسيطة بدرجة كافية.

ابحث عن الصورة المناسبة التي تريد استخدامها (كلما كانت الصورة أبسط كان ذلك أفضل لأن الشاشة ذات لون واحد فقط). ها هي الصور التي استخدمتها:

حقوق الصورة: publicdomainvectors.org

يجب تحويل أي صورة ترغب في استخدامها إلى مصفوفة HEX. هذا تمثيل للصورة في شكل كود. هناك العديد من الأدوات المتاحة للقيام بذلك ، وبعضها مكتوب خصيصًا لشاشات OLED. أسهل طريقة هي استخدام الصورة C_Hex أداة عبر الإنترنت. فيما يلي الإعدادات المطلوبة:

كيفية تسجيل الخروج من الفيسبوك على الانستغرام

قم بتحميل صورتك ، واضبط تنسيق الرمز على الهيكس: 0x . يضع يستعمل ل إلى أسود / أبيض لجميع وظائف رسم الصورة . اترك كل الخيارات الأخرى كإعدادات افتراضية. يمكنك تغيير حجم الصورة هنا إذا كنت بحاجة إلى ذلك. صحافة احصل على سلسلة C ويجب أن تشاهد بيانات الصورة تظهر:

ستحتاج إلى هذه البيانات التي تم إنشاؤها في دقيقة واحدة. إنشاء وظيفتين تسمى انفجار و رسم الجمجمة (أو اسم مناسب لإصدارك). ها هو الكود:

void drawExplosion() {
// store image in EEPROM
static const unsigned char PROGMEM imExp[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x78,0x7f,0xff,0xc0,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xf0,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xfb,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x07,0xff,0xff,0xf9,0xff,0xd8,0x00,0x00,0x00,0x3f,0xff,0xf0,0x0f,0x00,0x00,0x00,0x00,0x1f,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x01,0xbf,0xff,0xff,0xff,0x30,0x00,0x00,0x00,0x13,0xf7,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
display.drawBitmap(0, 0, imExp, 64, 62, 1); // draw mushroom cloud
}
void drawSkull() {
// store image in EEPROM
static const unsigned char PROGMEM imSku[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x78,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0xfc,0x00,0x07,0xf8,0x00,0x00,0x00,0x00,0xfe,0x00,0x07,0xf8,0x00,0x00,0x00,0x01,0xfe,0x00,0x07,0xfc,0x00,0x00,0x00,0x01,0xfe,0x00,0x07,0xfe,0x00,0x3f,0xc0,0x03,0xfe,0x00,0x01,0xff,0x81,0xff,0xfc,0x07,0xec,0x00,0x00,0x3f,0xc7,0xff,0xff,0x1f,0xc0,0x00,0x00,0x0f,0xcf,0xff,0xff,0xdf,0x00,0x00,0x00,0x07,0xbf,0xff,0xff,0xee,0x00,0x00,0x00,0x01,0x7f,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1e,0x3f,0xff,0x3f,0xc7,0x80,0x00,0x00,0x1e,0x0c,0x0f,0x00,0x07,0x80,0x00,0x00,0x1e,0x00,0x0f,0x00,0x0f,0x80,0x00,0x00,0x1e,0x00,0x19,0x80,0x0f,0x00,0x00,0x00,0x0f,0x00,0x19,0x80,0x0f,0x00,0x00,0x00,0x0d,0x00,0x30,0xc0,0x1f,0x00,0x00,0x00,0x05,0x80,0x70,0xc0,0x1e,0x00,0x00,0x00,0x05,0xf0,0xe0,0xe0,0x36,0x00,0x00,0x00,0x01,0xff,0xe0,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xc4,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xcc,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xcc,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0x9e,0x7f,0xf0,0x00,0x00,0x00,0x00,0xff,0xfe,0x7f,0xc0,0x00,0x00,0x00,0x00,0x01,0xff,0xf8,0x1c,0x00,0x00,0x00,0x03,0xe0,0x3f,0x01,0xbf,0x00,0x00,0x00,0x07,0xa6,0x40,0x09,0x9f,0x80,0x00,0x00,0x1f,0x27,0x5a,0x39,0x9f,0xf8,0x00,0x01,0xff,0x27,0xdb,0x39,0x0f,0xfc,0x00,0x03,0xfe,0x31,0x7f,0x39,0x07,0xfc,0x00,0x03,0xfc,0x10,0x1a,0x02,0x03,0xf8,0x00,0x03,0xf8,0x10,0x00,0x02,0x01,0xf0,0x00,0x01,0xf8,0x10,0x00,0x02,0x01,0xe0,0x00,0x00,0x78,0x10,0x00,0x02,0x00,0xe0,0x00,0x00,0x70,0x30,0x00,0x02,0x00,0x00,0x00,0x00,0x30,0x20,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,0x73,0x55,0x63,0x00,0x00,0x00,0x00,0x00,0xf9,0x55,0x4f,0x00,0x00,0x00,0x00,0x00,0x7f,0x14,0x1f,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0xfe,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
display.drawBitmap(0, 0, imSku, 60, 64, 1); // draw skull cloud
}

إذا كنت ترغب في استخدام الصور التي استخدمتها ، فابدأ وانسخ الكود. إذا كنت تريد استخدام صورك الخاصة التي أنشأتها سابقًا ، فقم بنسخ رمز البايت في ملف imSku و imExp المصفوفات كما هو مطلوب.

إليك ما تبدو عليه هذه الصور على الشاشة:

أهم جزء من هذا الرمز هو هذا السطر:

static const unsigned char PROGMEM imSku[]

هذا يخبر Arduino بتخزين صورك في EEPROM ( ما هو إيبروم؟ ) بدلاً من ذاكرة الوصول العشوائي ( دليل سريع لذاكرة الوصول العشوائي ). السبب في ذلك بسيط. يحتوي Arduino على ذاكرة وصول عشوائي محدودة ، واستخدامه لتخزين الصور قد لا يترك أي شيء متبقي لتنفيذ التعليمات البرمجية الخاصة بك

قم بتعديل ملف لو بيان لإظهار هذه الرسومات الجديدة عند دحرجة واحدة أو 20. لاحظ سطور الكود لإظهار الرقم الملفوف بجانب الصور أيضًا:

if(roll == 20) {
drawExplosion();
display.setCursor(80, 21);
display.println('20');
}
else if(roll == 1) {
display.setCursor(24, 21);
display.println('1');
drawSkull();
}
else if (roll <10) {
// single character number
display.setCursor(57, 21);
display.println(roll); // write the roll
drawDie(); // draw the outline
}
else {
// dual character number
display.setCursor(47, 21);
display.println(roll); // write the roll
drawDie(); // draw the outline
}

وإليك ما تبدو عليه هذه القوائم الجديدة:

هذا كل شيء من جانب الكود (اذهب للحصول على الكود من GitHub إذا تخطيت كل ذلك). يمكنك بسهولة تعديل هذا ليكون D12 و D8 وما إلى ذلك.

التجميع النهائي

الآن بعد أن انتهى كل شيء آخر ، حان الوقت لتعبئة كل شيء. قم بتثبيت الشاشة ، مع التأكد من عدم إحكام ربط المسامير بشكل مفرط. ربما يكون هذا هو الجزء الأصعب. لقد كسرت شاشة أثناء القيام بذلك ، لذلك قد ترغب في استخدام بعض الغسالات البلاستيكية. لقد قطعت بعض المربعات من بلاستيكارد :

قد يصعب توصيل الصواميل والمسامير الصغيرة. نصيحة: استخدم قطعة صغيرة من Blu-Tack في نهاية مفك البراغي لتثبيت الصواميل في البداية:

قم بلف الزر ، قم بتوصيل البطارية وأغلق الغطاء. احرص على عدم حبس أي أسلاك ، أو ربطها بإحكام شديد ، مما قد يتسبب في حدوث قصر. اعتمادًا على طول العملاء المتوقعين ، قد تحتاج إلى حماية الوصلات المكشوفة ببعض العزل (يعمل الصندوق التسلسلي جيدًا):

إليك ما يبدو من الداخل:

وها هو المنتج النهائي:

يجب أن تكون الآن المالك الفخور لـ D20 الإلكترونية!

ما هي التعديلات التي قمت بها؟ هل قمت بتغيير الصور؟ أخبرنا في التعليقات ، نود أن نرى ما فعلته!

يشارك يشارك سقسقة بريد الالكتروني دليل المبتدئين لتحريك الكلام

يمكن أن يمثل تنشيط الكلام تحديًا. إذا كنت مستعدًا لبدء إضافة حوار إلى مشروعك ، فسنقوم بتفصيل العملية نيابةً عنك.

اقرأ التالي
مواضيع ذات صلة
  • افعلها بنفسك
  • اردوينو
  • لعبة اللوحة
  • إلكترونيات
نبذة عن الكاتب جو كوبيرن(تم نشر 136 مقالاً)

تخرج جو في علوم الكمبيوتر من جامعة لينكولن بالمملكة المتحدة. إنه مطور برامج محترف ، وعندما لا يطير بطائرات بدون طيار أو يكتب الموسيقى ، يمكن العثور عليه في كثير من الأحيان يلتقط الصور أو ينتج مقاطع فيديو.

المزيد من Joe Coburn

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك