Roll în stil cu acest DIY Electronic D20 Die

Roll în stil cu acest DIY Electronic D20 Die / DIY

Vrei ceva un pic unic pentru următorul joc de jocuri de rol? Ce zici de un D20 electronic cu grafica personalizata pentru hit-uri si pierderi critice? Astăzi vă voi arăta cum să vă construiți propriul cu un Arduino și câteva părți simple.

Nu vă faceți griji dacă nu ați folosit niciodată un Arduino înainte de a avea un ghid de început Început cu Arduino: Un ghid pentru începători Arduino: un ghid pentru începători Arduino este o platformă open-source de prototipuri electronice, bazată pe un sistem flexibil, să utilizeze hardware și software. Este destinat artiștilor, designerilor, pasionaților și tuturor celor interesați să creeze obiecte sau medii interactive. Citeste mai mult .

Construiți un plan

Acesta este un proiect simplu. Un Arduino va conduce un afișaj OLED, iar un buton va roti moara. Grafica personalizată se va afișa pentru curenții critici care au lovit sau critic critic. Puteți modifica cu ușurință codul pentru a fi D8, D10 sau D12.

De ce ai nevoie

  • 1 x Arduino
  • Afișaj OLED de 1 x 0.96 "O2C
  • 1 x Buton de apăsare
  • 1 x 10k? rezistor
  • 1 x Breadboard
  • Asortați firele de legătură
  • Codul complet aici, dacă nu doriți să urmați tot parcursul instrucțiunilor scrise.

Acestea sunt părțile principale de care aveți nevoie pentru a vă construi propriul D20. Poate doriți să-l instalați într-un caz (discutat mai jos) și să lipiți circuitul într-o stare mai permanentă. Iată părțile suplimentare pe care trebuie să le faceți:

  • 4 x șuruburi M2 x 10 mm (0,4 inch)
  • 4 x piulițe M2
  • Șaibe de 4 x 7 mm (0,28 inchi)
  • Acumulator de 9V (sau o alternativă adecvată)
  • Tuburi asortate termocontractabile

Aceste display-uri OLED sunt foarte cool. Ele pot fi de obicei achiziționate în alb, albastru, galben sau un amestec al celor trei. Am cumpărat unul în albastru, pentru a-mi potrivi cazul. Asigurați-vă că ați primit un I2C în loc de SPI.

Aproape orice Arduino va fi potrivit. Am ales un Nano, deoarece sunt suficient de mici pentru a se încadra în acest caz. Verificați ghidul nostru de cumpărare Arduino Ghid de cumpărare: Care ar trebui să obțineți comitetul? Arduino Ghidul de cumpărare: care ar trebui să obțineți? Există atât de multe feluri de plăci de arduino, acolo vei fi iertat că ești confuz. Care ar trebui să cumpărați pentru proiectul dvs.? Să ne ajute, cu acest ghid de cumpărare Arduino! Citiți mai multe pentru mai multe informații despre modelele Arduino.

Circuitul

Iată circuitul de care aveți nevoie:

Conectați VCC și GND pe afișajul OLED către Arduino +5V și sol. Conectați analog 4 pe Arduino la pinul etichetat SDA. Conectați analog 5 la SCL PIN-ul. Acești pini conțin circuitele necesare pentru a acționa afișajul utilizând magistrala I2C. Pinii exacti vor varia în funcție de model, dar A4 și A5 sunt utilizați pe Nano și Uno. Verificați documentația bibliotecii Wire pentru modelul dvs. dacă nu utilizați un Uno sau Nano.

Conectați bateria la masă și la VIN PIN-ul. Aceasta înseamnă tensiune în și acceptă o varietate de tensiuni DC diferite - verificați mai întâi modelul dvs. specific și uneori poate varia ușor.

Conectați butonul la pinul 2 digital. Observați cum este 10k? rezistor este conectat la sol. Este foarte important! Aceasta este cunoscută sub numele de rezistență de tragere și împiedică detectarea de date false sau interferențe de către Arduino prin apăsarea unui buton. De asemenea, servește pentru a proteja bordul. Dacă acest rezistor nu a fost folosit, + 5V ar merge direct în sol. Aceasta este cunoscută sub numele de a mort scurt și este o modalitate ușoară de a ucide un Arduino.

Dacă lipiți acest circuit, protejați conexiunile cu tuburi termocontractabile:

Asigurați-vă că nu-l încălziți prea mult și faceți acest lucru numai după ce sunteți sigur că circuitul funcționează. De asemenea, puteți dori să răsuciți cablurile în perechi. Acest lucru îi păstrează curat și îi ajută să-i protejeze de stresul nejustificat:

Buton Test

Acum că ați construit circuitul, încărcați acest cod de test (asigurați-vă că selectați placa și portul corect din Instrumente> Consiliul și Instrumente> Port meniuri):

const int buttonPin = 2; // numărul butonului PIN void setup () pinMode (butonPin, INPUT); // butonul de configurare Serial.begin (9600); // setare serial void loop () if (digitalRead (butonPin) == HIGH) Serial.print ("Funcționează"); întârziere (250); 

Odată încărcat, țineți arduinul conectat prin USB și deschideți monitorul serial (Sus dreapta> Monitor serial). Ar trebui să vedeți cuvintele Functioneaza apare de fiecare dată când apăsați butonul.

Dacă nu se întâmplă nimic, du-te și verificați dublu circuitul.

Configurarea OLED

Trebuie să instalați două biblioteci pentru a conduce afișajul. Descărcați bibliotecile Adafruit_SSD1306 și Adafruit-GFX [Nu mai sunt disponibile] de la Github și salvați-le în folderul dvs. de bibliotecă. Dacă nu sunteți sigur în cazul în care aveți foldere de bibliotecă, citiți-mi retro joc de jocuri de noroc Arduino Retro Gaming Cu un OLED Afișare Arduino Retro Gaming Cu un OLED Afișat Ai întrebat vreodată cât de mult este nevoie pentru a scrie propriile jocuri retro? Cât de ușor este Pong să cod pentru Arduino? Citiți mai multe, unde configurez același afișaj în detaliu.

Reporniți IDE-ul Arduino și încărcați o schiță de test din Fișier> Exemple meniul. Selectați Adafruit SSD1306 și apoi ssd1306_128x64_i2c. Încărcați acest cod (va dura ceva timp) și ar trebui să vedeți pe ecran o mulțime de forme și modele:

Dacă nu se întâmplă nimic, verificați conexiunile. Dacă, după verificare, tot nu va funcționa, va trebui să modificați codul eșantionului.

Schimbați această linie (la începutul înființat funcţie):

display.begin (SSD1306_SWITCHCAPVCC, 0x3D);

La acest:

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

Acest lucru indică detaliilor specifice ale bibliotecii cu privire la afișajul pe care îl utilizați. Acum ar trebui să fiți pregătit să continuați cu construirea.

Cazul

Dacă construiți acest lucru pe un breadboard, sau nu doriți să îl puneți în cutie, puteți trece peste acest pas.

Am proiectat și imprimat 3D această cutie. Ia fișierele pe Thingiverse. Nu vă faceți griji dacă nu aveți o imprimantă 3D - servicii online 3D Hubs și Shapeways oferă servicii de imprimare online.

Puteți face cu ușurință această cutie din lemn sau achiziționați o cutie de plastic din plastic.

Capacul este un design simplu de fixare și conține câteva decupaje pentru hardware:

Codul

Acum că totul este gata, este timpul pentru cod. Iată cum va funcționa în Pseudocode:

dacă butonul este apăsat genera numărul aleatoriu dacă numărul aleatoriu este 20 arată grafic altfel dacă numărul aleatoriu este 1 arată grafic altfel arată numărul

Pentru ca aceasta să funcționeze corect, trebuie generat un număr aleatoriu - acesta este rolul morții. Arduino are un generator de numere aleatoare numit întâmplător, dar nu ar trebui să o folosească. În timp ce este suficient de bun pentru sarcinile de bază aleatorii, nu este suficient de aleator pentru o moarte electronică. Motivele pentru care sunt oarecum complicate, dar puteți citi mai mult dacă sunteți interesat de boallen.com.

Descărcați biblioteca TrueRandom de către sirleech pe Github. Adăugați acest lucru în folderul dvs. de bibliotecă și reporniți IDE-ul.

Acum creați un fișier nou și configurați codul inițial (sau apucați codul finalizat de la GitHub):

#include  #include  #include  #include  #include  Afișajul Adafruit_SSD1306 (4); void setup () display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // configurați pinul OLED (butonPIN, INPUT); // butonul de configurare void loop () 

Acest cod configurează OLED și include toate bibliotecile de care aveți nevoie pentru a comunica cu acesta, împreună cu noua dvs. bibliotecă de numere aleatoare. Acum adaugati aceasta la bucla principala:

dacă (digitalRead (buttonPin) == HIGH) (întârziere (15); dacă (digitalRead (buttonPin) == HIGH) display.fillScreen (BLACK); // ștergeți întregul afișaj.setTextColor (WHITE); display.setTextSize (2); display.setCursor (0, 0); display.println (TrueRandom.random (1, 21)); // tipăriți numărul aleatoriu display.display (); // scrie la întârzierea afișării (100); 

Acest lucru este destul de fundamental la minut, dar este un lucru D20. Ori de câte ori este apăsat butonul, pe ecran se afișează un număr aleatoriu între unu și 20:

Acest lucru funcționează bine, dar este puțin plictisitor. Să facem mai bine. Creați două metode noi, drawDie și eraseDie:

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

Acestea vor atrage un mormânt în mijlocul ecranului. S-ar putea să doriți să faceți acest lucru mai complicat, probabil prin desenarea unui D20 sau a unui D12 și așa mai departe, dar este mai simplu să trageți o moarte de bază pe șase fețe. Iată utilizarea de bază:

drawDie ();

Apoi, modificați bucla principală pentru a desena numărul aleatoriu, numai mai mare și în mijloc. Modificați mărimea textului și cursorul la acesta:

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

Arată mult mai bine acum:

Singura problemă este cu numere mai mari de nouă:

Remedierea pentru acest lucru este simplă. Orice număr mai mic de 10 va avea cursorul setat într-o poziție diferită de cele de 10 sau mai mari. Înlocuiți această linie:

display.setCursor (57, 21);

Cu asta:

int roll = TrueRandom.random (1, 21); / / păstrează numărul aleatoriu dacă (roll < 10)  // single character number display.setCursor(57, 21);  else  // dual character number display.setCursor(47, 21); 

Iată cum arată acum:

Tot ce a mai rămas acum este pentru imagini atunci când faceți o lovitură critică sau o dorință. Există câțiva pași implicați, dar este un proces destul de simplu.

Găsiți o imagine potrivită pe care doriți să o utilizați (cu atât este mai simplă, cu atât mai bine este afișarea unei singure culori). Iată imaginile pe care le-am folosit:

Image Credit: publicdomainvectors.org

Orice imagine pe care doriți să o utilizați va trebui să fie convertită într-o matrice HEX. Aceasta este o reprezentare a imaginii în formă de cod. Există multe instrumente disponibile pentru a face acest lucru, iar altele sunt scrise special pentru afișajele OLED. Cea mai ușoară cale este să utilizați instrumentul online PicturetoC_Hex. Iată setările necesare:

Încărcați imaginea și configurați formatul codului HEX: 0x. A stabilit Folosit pentru la Negru / Alb pentru funcția de tragere a tuturor imaginilor. Lăsați toate celelalte opțiuni ca valori implicite. Puteți redimensiona imaginea aici dacă doriți. presa Obțineți String C și ar trebui să vedeți că apar datele de imagine:

Veți avea nevoie de aceste date generate într-un minut. Creați două funcții numite drawExplosion și drawSkull (sau un nume potrivit pentru versiunea dvs.). Iată codul:

void drawExplosion () // stocarea imaginii în 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); // trage norul de ciuperci void drawSkull () // stochează imaginea în 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); // trageți nori de craniu

Dacă doriți să utilizați imaginile pe care le-am folosit, continuați și copiați codul. Dacă doriți să utilizați propriile imagini pe care le-ați generat mai devreme, copiați codul de octet în imSku și IMEXP după cum este necesar.

Iata cum arata acele imagini pe ecran:

Cea mai importantă parte a codului este următoarea:

static const nesemnate char PROGMEM imSku []

Acest lucru spune Arduino de a stoca imaginile în EEPROM (ce este EEPROM? Cum să utilizați Arduino EEPROM pentru a salva date între ciclurile de alimentare Cum să utilizați Arduino EEPROM pentru a salva date între ciclurile de alimentare Știați că Arduino poate stoca date atunci când este oprit ? Eu vorbesc despre EEPROM, asa ca ma alaturati cum ti-am arata cum sa citeasca si sa scrie la ea. Citeste mai mult) in loc de RAM sale (ghid rapid la RAM Un ghid rapid si murdar de RAM: Ce trebuie sa stii A Ghid rapid și murdar pentru RAM: Ce trebuie să știți RAM este o componentă esențială a fiecărui computer, dar poate fi confuz să înțelegeți dacă nu sunteți un guru tech.În acest post, îl împărțim în ușor de utilizat, înțelegeți termenii. Citește mai mult). Motivul pentru aceasta este simplu; Arduino are o memorie RAM limitată, iar utilizarea tuturor pentru stocarea imaginilor nu poate lăsa restul pentru ca codul dvs. să fie executat

Modificați-vă principalul dacă declarație pentru a afișa aceste grafice noi atunci când unul sau 20 este rulat. Rețineți liniile de cod pentru a afișa numărul rulat alături de imagini:

dacă (rolă == 20) drawExplosion (); display.setCursor (80, 21); display.println ( "20");  altfel dacă (rolă == 1) display.setCursor (24, 21); display.println ( "1"); drawSkull ();  altfel dacă (rolă < 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 

Și iată ce arată acele roluri noi:

Asta e totul pentru partea de cod (du-te apuca codul de la GitHub dacă ai sărit peste tot). Puteți modifica cu ușurință acest lucru pentru a fi un D12, D8 și așa mai departe.

Asamblarea finala

Acum că totul este terminat, e timpul să punem totul în mișcare. Înșurubați afișajul, asigurându-vă că nu strângeți prea mult șuruburile. Aceasta este probabil cea mai dificilă parte. Am rupt un afișaj care a făcut acest lucru, așa că ați putea dori să utilizați niște șaibe din plastic. Am tăiat niște pătrate din plasticard:

Piulițele și șuruburile mici pot fi dificil de conectat. Bacsis: Utilizați o bucată mică de Blu-Tack pe capătul unei șurubelnițe pentru așezați inițial piulițele:

Înșurubați butonul, conectați bateria și închideți capacul. Aveți grijă să nu prindeți niciun cablu, sau să-l legați prea strâns, putând cauza un scurtcircuit. În funcție de lungimea conductorilor de tracțiune, poate fi necesar să protejați conexiunile expuse cu o anumită izolație (o cutie de serie funcționează bine):

Iată cum arată în interior:

Iată produsul finit:

Acum ar trebui să fii proprietarul mândru al unui D20 electronic!

Ce modificări ați făcut? Ați schimbat imaginile? Spuneți-ne în comentariile dvs., ne-ar plăcea să vedem ce ați făcut!

Explorați mai multe despre: Arduino, Game Board, Electronics.