इस DIY इलेक्ट्रॉनिक D20 डाई के साथ स्टाइल में रोल करें

इस DIY इलेक्ट्रॉनिक D20 डाई के साथ स्टाइल में रोल करें

अपने अगले टेबलटॉप रोल-प्ले गेम के लिए कुछ अनोखा चाहते हैं? महत्वपूर्ण हिट और मिस के लिए कस्टम ग्राफिक्स वाले इलेक्ट्रॉनिक D20 के बारे में क्या? आज मैं आपको दिखाऊंगा कि कैसे एक Arduino और कुछ सरल भागों के साथ अपना खुद का निर्माण करें।





यदि आपने पहले कभी Arduino का उपयोग नहीं किया है, तो चिंता न करें, हमारे पास a गेटिंग स्टार्टेड गाइड .





बिल्ड प्लान

यह एक साधारण परियोजना है। एक Arduino OLED डिस्प्ले चलाएगा, और एक बटन डाई को रोल करेगा। क्रिटिकल हिट या क्रिटिकल मिस रोल के लिए कस्टम ग्राफिक्स दिखाई देंगे। आप कोड को D8, D10, या D12 के रूप में आसानी से संशोधित कर सकते हैं।





जिसकी आपको जरूरत है

  • 1 एक्स अरुडिनो
  • 1 एक्स 0.96 ' I2C OLED डिस्प्ले
  • 1 एक्स पुश बटन
  • 1 एक्स 10k? अवरोध
  • 1 एक्स ब्रेडबोर्ड
  • मिश्रित हुक अप तार
  • यहां पूरा कोड, यदि आप लिखित निर्देशों के माध्यम से सभी तरह से पालन नहीं करना चाहते हैं।

वे मुख्य भाग हैं जिनकी आपको अपना D20 बनाने की आवश्यकता है। आप इसे एक केस में स्थापित करना चाह सकते हैं (नीचे चर्चा की गई है) और सर्किट को अधिक स्थायी स्थिति में मिलाप कर सकते हैं। यहां वे अतिरिक्त भाग दिए गए हैं जिनकी आपको आवश्यकता होगी:

ये OLED डिस्प्ले बहुत ही शानदार हैं। वे आमतौर पर सफेद, नीले, पीले या तीनों के मिश्रण में खरीदे जा सकते हैं। मैंने अपने मामले से मेल खाने के लिए नीले रंग में एक खरीदा है। सुनिश्चित करें कि आपको एक मिलता है I2C के बजाय मॉडल एसपीआई .



लगभग कोई भी Arduino उपयुक्त होगा। मैंने एक नैनो को चुना है, क्योंकि वे मामले में फिट होने के लिए काफी छोटे हैं। Arduino मॉडल के बारे में अधिक जानकारी के लिए हमारी खरीदारी मार्गदर्शिका देखें।

सर्किट

यहां वह सर्किट है जिसकी आपको आवश्यकता है:





जुडिये वीसीसी तथा जीएनडी OLED डिस्प्ले पर Arduino के लिए +5वी तथा ज़मीन . जुडिये एनालॉग 4 Arduino पर लेबल किए गए पिन पर एसडीए . जुडिये एनालॉग 5 तक एससीएल पिन इन पिनों में I2C बस का उपयोग करके डिस्प्ले को चलाने के लिए आवश्यक सर्किटरी होती है। सटीक पिन मॉडल के अनुसार अलग-अलग होंगे, लेकिन A4 और A5 का उपयोग नैनो और ऊनो पर किया जाता है। नियन्त्रण वायर लाइब्रेरी प्रलेखन अपने मॉडल के लिए यदि आप ऊनो या नैनो का उपयोग नहीं कर रहे हैं।

बैटरी को जमीन से कनेक्ट करें और वाइन पिन यह वोल्टेज के लिए खड़ा है, और विभिन्न डीसी वोल्टेज को स्वीकार करता है - लेकिन पहले अपने विशिष्ट मॉडल की जांच करें, और यह कभी-कभी थोड़ा भिन्न हो सकता है।





बटन को इससे कनेक्ट करें डिजिटल पिन 2 . ध्यान दें कि कैसे 10k ? रोकनेवाला जमीन से जुड़ा है। यह बहुत महत्वपूर्ण है! इसे पुल डाउन रेसिस्टर के रूप में जाना जाता है, और यह 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 सेटअप

डिस्प्ले को चलाने के लिए आपको दो लाइब्रेरी स्थापित करने की आवश्यकता है। डाउनलोड करें एडफ्रूट_एसएसडी१३०६ और एडफ्रूट-जीएफएक्स [अब उपलब्ध नहीं] जीथब से पुस्तकालय, और उन्हें अपने पुस्तकालय फ़ोल्डर में सहेजें। यदि आप सुनिश्चित नहीं हैं कि आप लाइब्रेरी फ़ोल्डर कहां हैं, तो मेरे रेट्रो गेमिंग ट्यूटोरियल को पढ़ें, जहां मैं इसी डिस्प्ले को और अधिक विस्तार से कॉन्फ़िगर करता हूं।

अपने Arduino IDE को पुनरारंभ करें और से एक परीक्षण स्केच अपलोड करें फ़ाइल > उदाहरण मेन्यू। चुनते हैं एडफ्रूट SSD1306 और फिर ssd1306_128x64_i2c . इस कोड को अपलोड करें (इसमें कुछ समय लगेगा), और आपको डिस्प्ले पर बहुत सारे आकार और पैटर्न दिखाई देंगे:

अगर कुछ नहीं होता है, तो अपने कनेक्शन दोबारा जांचें। यदि जाँच के बाद भी यह काम नहीं करता है, तो आपको नमूना कोड को संशोधित करने की आवश्यकता होगी।

गुमनाम रूप से किसी के ईमेल को स्पैम कैसे करें

इस लाइन को बदलें ( . की शुरुआत में) सेट अप समारोह):

display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

इसके लिए:

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

यह लाइब्रेरी को आपके द्वारा उपयोग किए जा रहे डिस्प्ले के बारे में विशिष्ट विवरण बताता है। अब आपको बिल्ड के साथ जारी रखने के लिए पूरी तरह तैयार होना चाहिए।

मामला

यदि आप इसे ब्रेडबोर्ड पर बना रहे हैं, या इसे बॉक्स में नहीं रखना चाहते हैं, तो आप इस चरण को छोड़ सकते हैं।

मैंने इस बॉक्स को डिज़ाइन किया और 3D प्रिंट किया। फ़ाइलें प्राप्त करें thingiverse . यदि आपके पास 3D प्रिंटर नहीं है तो चिंता न करें -- ऑनलाइन सेवाएं 3डी हब तथा शेपवे ऑनलाइन प्रिंटिंग सेवाएं प्रदान करें।

आप इस बॉक्स को लकड़ी से, या प्लास्टिक खरीदकर आसानी से बना सकते हैं प्रोजेक्ट बॉक्स .

ढक्कन एक साधारण पुश फिट डिज़ाइन है, और इसमें हार्डवेयर के लिए कुछ कटआउट शामिल हैं:

कोड

अब जब सब कुछ तैयार है, तो कोड का समय आ गया है। यहां बताया गया है कि यह कैसे काम करेगा स्यूडोकोड :

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 .

डाउनलोड करें सच यादृच्छिक पुस्तकालय द्वारा सरलीच जीथब पर। इसे अपने पुस्तकालय फ़ोल्डर में जोड़ें और आईडीई को पुनरारंभ करें।

अब एक नई फाइल बनाएं और अपना प्रारंभिक कोड सेट करें (या सिर्फ 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 होम नेटवर्क फ़ाइल शेयरिंग
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 डिस्प्ले के लिए लिखे गए हैं। इसका उपयोग करने का सबसे आसान तरीका है PicturetoC_Hex ऑनलाइन उपकरण। यहां आवश्यक सेटिंग्स हैं:

विंडोज 7 पर ब्लूटूथ कैसे स्थापित करें

अपनी छवि अपलोड करें, और कोड प्रारूप को सेट करें हेक्स: 0x . सेट के लिए इस्तेमाल होता है प्रति सभी ड्रा छवि फ़ंक्शन के लिए ब्लैक/व्हाइट . अन्य सभी विकल्पों को डिफ़ॉल्ट के रूप में छोड़ दें। जरूरत पड़ने पर आप यहां छवि का आकार बदल सकते हैं। दबाएँ सी स्ट्रिंग प्राप्त करें और आपको छवि डेटा दिखाई देना चाहिए:

आपको एक मिनट में इस जेनरेट किए गए डेटा की आवश्यकता होगी। नामक दो फ़ंक्शन बनाएं ड्राविस्फोट तथा खोपड़ी खींचना (या आपके संस्करण के लिए उपयुक्त नाम)। यहाँ कोड है:

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
}

यदि आप मेरे द्वारा उपयोग की गई छवियों का उपयोग करना चाहते हैं, तो आगे बढ़ें और कोड को कॉपी करें। यदि आप अपनी खुद की छवियों का उपयोग करना चाहते हैं जो आपने पहले बनाई थी, तो बाइट कोड को कॉपी करें आईएमस्कु तथा आईएमएक्सपी सरणी आवश्यकता के रूप में।

यहां बताया गया है कि वे छवियां प्रदर्शन पर कैसी दिखती हैं:

उस कोड का सबसे महत्वपूर्ण हिस्सा यह पंक्ति है:

static const unsigned char PROGMEM imSku[]

यह Arduino को आपकी छवियों को EEPROM में संग्रहीत करने के लिए कहता है ( ईईपीरोम क्या है? ) इसके RAM के बजाय ( राम के लिए त्वरित गाइड ) इतना सरल होने का कारण; Arduino में सीमित RAM है, और छवियों को संग्रहीत करने के लिए इसका उपयोग करने से आपके कोड को निष्पादित करने के लिए कोई शेष नहीं रह सकता है

अपना मुख्य संशोधित करें अगर एक या 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
}

और यहां बताया गया है कि वे नए रोल इस तरह दिखते हैं:

कोड पक्ष के लिए यह सब कुछ है (यदि आपने वह सब छोड़ दिया है तो गिटहब से कोड प्राप्त करें)। आप इसे आसानी से D12, D8, इत्यादि के रूप में संशोधित कर सकते हैं।

आखिरी सभा

अब जब बाकी सब कुछ खत्म हो गया है, तो सब कुछ बॉक्स करने का समय आ गया है। डिस्प्ले को चालू करें, सुनिश्चित करें कि बोल्ट को अधिक कसने के लिए नहीं। यह शायद सबसे कठिन हिस्सा है। मैंने ऐसा करते हुए एक डिस्प्ले को क्रैक किया, ताकि आप कुछ प्लास्टिक वाशर का उपयोग करना चाहें। मैंने कुछ वर्गों को काट दिया प्लास्टिकार्ड :

छोटे नट और बोल्ट कनेक्ट करने में मुश्किल हो सकते हैं। युक्ति: शुरू में नट्स को बैठने के लिए स्क्रूड्राइवर के अंत में ब्लू-टैक के एक छोटे टुकड़े का उपयोग करें:

बटन को स्क्रू करें, बैटरी कनेक्ट करें और ढक्कन बंद करें। सावधान रहें कि किसी भी तार को न फँसाएँ, या उन्हें बहुत कसकर बाँधें, जिससे संभवतः शॉर्ट हो जाए। आपके अनुगामी लीड की लंबाई के आधार पर, आपको कुछ इंसुलेशन के साथ उजागर कनेक्शनों की रक्षा करने की आवश्यकता हो सकती है (एक सीरियल बॉक्स अच्छी तरह से काम करता है):

यहाँ यह अंदर जैसा दिखता है:

और यहाँ तैयार उत्पाद है:

अब आपको इलेक्ट्रॉनिक D20 का गर्वित स्वामी होना चाहिए!

आपने क्या संशोधन किए? क्या आपने छवियों को बदल दिया? हमें टिप्पणियों में बताएं, हमें यह देखना अच्छा लगेगा कि आपने क्या किया!

साझा करना साझा करना कलरव ईमेल एनिमेटिंग स्पीच के लिए एक शुरुआती गाइड

एनिमेटिंग भाषण एक चुनौती हो सकती है। यदि आप अपने प्रोजेक्ट में संवाद जोड़ना शुरू करने के लिए तैयार हैं, तो हम आपके लिए प्रक्रिया को तोड़ देंगे।

आगे पढ़िए
संबंधित विषय
  • DIY
  • अरुडिनो
  • विशेष प्रकार के बोर्ड या पट्टे के खेल जैसे शतरंज, साँप सीढ़ी आदि
  • इलेक्ट्रानिक्स
लेखक के बारे में जो कोबर्न(136 लेख प्रकाशित)

जो ब्रिटेन के लिंकन विश्वविद्यालय से कंप्यूटर विज्ञान में स्नातक हैं। वह एक पेशेवर सॉफ्टवेयर डेवलपर है, और जब वह ड्रोन नहीं उड़ा रहा है या संगीत नहीं लिख रहा है, तो उसे अक्सर तस्वीरें लेते या वीडियो बनाते हुए पाया जा सकता है।

जो कोबर्न . की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें
श्रेणी Diy