ఈ DIY ఎలక్ట్రానిక్ D20 డైతో స్టైల్‌లో రోల్ చేయండి

ఈ DIY ఎలక్ట్రానిక్ D20 డైతో స్టైల్‌లో రోల్ చేయండి

మీ తదుపరి టేబుల్‌టాప్ రోల్-ప్లే గేమ్ కోసం కొంచెం ప్రత్యేకంగా ఏదైనా కావాలా? క్లిష్టమైన హిట్‌లు మరియు మిస్‌ల కోసం కస్టమ్ గ్రాఫిక్స్‌తో ఎలక్ట్రానిక్ D20 ఎలా ఉంటుంది? ఆర్డునో మరియు కొన్ని సాధారణ భాగాలతో మీ స్వంతంగా ఎలా నిర్మించాలో ఈ రోజు నేను మీకు చూపుతాను.





మీరు ఇంతకు ముందు ఆర్డునోను ఉపయోగించకపోతే చింతించకండి, మాకు ఒక ఉంది ప్రారంభించడానికి గైడ్ .





బిల్డ్ ప్లాన్

ఇది ఒక సాధారణ ప్రాజెక్ట్. ఒక Arduino ఒక OLED డిస్‌ప్లేను డ్రైవ్ చేస్తుంది మరియు ఒక బటన్ డైని రోల్ చేస్తుంది. క్రిటికల్ హిట్ లేదా క్రిటికల్ మిస్ రోల్స్ కోసం కస్టమ్ గ్రాఫిక్స్ చూపుతాయి. మీరు కోడ్‌ను సులభంగా D8, D10 లేదా D12 గా సవరించవచ్చు.





నీకు కావాల్సింది ఏంటి

  • 1 x ఆర్డునో
  • 1 x 0.96 ' I2C OLED డిస్‌ప్లే
  • 1 x పుష్ బటన్
  • 1 x 10 కే? నిరోధకం
  • 1 x బ్రెడ్‌బోర్డ్
  • వైర్లను హుక్ అప్ చేయండి
  • పూర్తి కోడ్ ఇక్కడ, మీరు వ్రాతపూర్వక సూచనల ద్వారా అన్ని విధాలుగా అనుసరించకూడదనుకుంటే.

మీరు మీ స్వంత D20 ని నిర్మించాల్సిన ప్రధాన భాగాలు అవి. మీరు దానిని ఒక కేస్‌లో ఇన్‌స్టాల్ చేయాలనుకోవచ్చు (క్రింద చర్చించబడింది) మరియు సర్క్యూట్‌ను మరింత శాశ్వత స్థితికి టంకం చేయండి. మీరు దీన్ని చేయాల్సిన అదనపు భాగాలు ఇక్కడ ఉన్నాయి:

ఈ OLED డిస్‌ప్లేలు చాలా బాగున్నాయి. వాటిని సాధారణంగా తెలుపు, నీలం, పసుపు లేదా మూడింటి మిశ్రమంలో కొనుగోలు చేయవచ్చు. నా కేసుకి సరిపోయేలా నేను నీలం రంగులో ఒకదాన్ని కొనుగోలు చేసాను. మీరు ఒకదాన్ని పొందారని నిర్ధారించుకోండి I2C బదులుగా మోడల్ SPI .



దాదాపు ఏదైనా Arduino అనుకూలంగా ఉంటుంది. నేను ఒక నానోను ఎంచుకున్నాను, అవి కేస్‌కి సరిపోయేంత చిన్నవి. ఆర్డునో మోడళ్లపై మరింత సమాచారం కోసం మా కొనుగోలు గైడ్‌ని చూడండి.

సర్క్యూట్

మీకు అవసరమైన సర్క్యూట్ ఇక్కడ ఉంది:





కనెక్ట్ చేయండి VCC మరియు GND OLED డిస్‌ప్లేలో Arduino కి +5 వి మరియు గ్రౌండ్ . కనెక్ట్ చేయండి అనలాగ్ 4 Arduino పై పిన్ లేబుల్ చేయబడింది SDA . కనెక్ట్ చేయండి అనలాగ్ 5 కు SCL పిన్. ఈ పిన్‌లలో I2C బస్సును ఉపయోగించి డిస్‌ప్లేను నడపడానికి అవసరమైన సర్క్యూట్రీ ఉంటుంది. మోడల్ ద్వారా ఖచ్చితమైన పిన్‌లు మారుతూ ఉంటాయి, అయితే A4 మరియు A5 నానో మరియు యునోలో ఉపయోగించబడతాయి. సరిచూడు వైర్ లైబ్రరీ డాక్యుమెంటేషన్ మీరు యునో లేదా నానోను ఉపయోగించకపోతే మీ మోడల్ కోసం.

బ్యాటరీని గ్రౌండ్ మరియు దానికి కనెక్ట్ చేయండి వైన్ పిన్. ఇది వోల్టేజ్‌ని సూచిస్తుంది మరియు వివిధ డిసి వోల్టేజీలను అంగీకరిస్తుంది - అయితే ముందుగా మీ నిర్దిష్ట మోడల్‌ని తనిఖీ చేయండి మరియు కొన్నిసార్లు ఇది కొద్దిగా మారవచ్చు.





బటన్‌ను దీనికి కనెక్ట్ చేయండి డిజిటల్ పిన్ 2 . 10k ఎలా ఉందో గమనించండి? నిరోధకం భూమికి అనుసంధానించబడి ఉంది. ఇది చాలా ముఖ్యం! దీనిని పుల్ డౌన్ రెసిస్టర్ అని పిలుస్తారు మరియు ఇది ఆర్డునో నకిలీ డేటా లేదా జోక్యాన్ని బటన్ ప్రెస్‌గా గుర్తించకుండా నిరోధిస్తుంది. ఇది బోర్డుని రక్షించడానికి కూడా ఉపయోగపడుతుంది. ఈ నిరోధకం ఉపయోగించకపోతే, +5V నేరుగా భూమిలోకి వెళ్తుంది. దీనిని ఏ అంటారు చనిపోయిన పొట్టి మరియు ఒక ఆర్డునోను చంపడానికి సులభమైన మార్గం.

మీరు ఈ సర్క్యూట్‌ను టంకం చేస్తుంటే, మీ కనెక్షన్‌లను హీట్ ష్రింక్ ట్యూబ్‌తో రక్షించండి:

మీరు దానిని ఎక్కువగా వేడి చేయకుండా చూసుకోండి మరియు సర్క్యూట్ పనిచేస్తుందని మీకు ఖచ్చితంగా తెలిశాక మాత్రమే చేయండి. మీరు మీ కేబుల్‌లను జంటలుగా తిప్పాలని కూడా అనుకోవచ్చు. ఇది వాటిని చక్కగా ఉంచుతుంది మరియు అనవసరమైన ఒత్తిడి నుండి వారిని రక్షించడంలో సహాయపడుతుంది:

బటన్ టెస్ట్

ఇప్పుడు మీరు సర్క్యూట్‌ను నిర్మించారు, ఈ పరీక్ష కోడ్‌ని అప్‌లోడ్ చేయండి (నుండి సరైన బోర్డు మరియు పోర్ట్‌ను ఎంచుకున్నారని నిర్ధారించుకోండి ఉపకరణాలు> బోర్డు మరియు టూల్స్> పోర్ట్ మెనులు):

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);
}
}

అప్‌లోడ్ చేసిన తర్వాత, ఆర్డునోను USB ద్వారా కనెక్ట్ చేయండి మరియు సీరియల్ మానిటర్‌ను తెరవండి ( ఎగువ కుడి> సీరియల్ మానిటర్ ). మీరు పదాలను చూడాలి ఇది పనిచేస్తుంది మీరు బటన్‌ను నొక్కిన ప్రతిసారీ కనిపిస్తుంది.

ఏమీ జరగకపోతే, వెళ్లి మీ సర్క్యూట్‌ను రెండుసార్లు తనిఖీ చేయండి.

OLED సెటప్

డిస్‌ప్లేను నడపడానికి మీరు రెండు లైబ్రరీలను ఇన్‌స్టాల్ చేయాలి. డౌన్‌లోడ్ చేయండి Adafruit_SSD1306 మరియు Adafruit-GFX [ఇకపై అందుబాటులో లేదు] Github నుండి లైబ్రరీలు మరియు వాటిని మీ లైబ్రరీ ఫోల్డర్‌లో సేవ్ చేయండి. మీ లైబ్రరీ ఫోల్డర్‌లు ఎక్కడ ఉన్నాయో మీకు తెలియకపోతే, నా రెట్రో గేమింగ్ ట్యుటోరియల్ చదవండి, ఇక్కడ నేను అదే డిస్‌ప్లేను మరింత వివరంగా కాన్ఫిగర్ చేస్తాను.

మీ Arduino IDE ని పునartప్రారంభించండి మరియు నుండి పరీక్ష స్కెచ్‌ను అప్‌లోడ్ చేయండి ఫైల్> ఉదాహరణలు మెను. ఎంచుకోండి అడాఫ్రూట్ SSD1306 ఆపై ssd1306_128x64_i2c . ఈ కోడ్‌ను అప్‌లోడ్ చేయండి (దీనికి కొంత సమయం పడుతుంది), మరియు మీరు డిస్‌ప్లేలో చాలా ఆకారాలు మరియు నమూనాలను చూడాలి:

ఏమీ జరగకపోతే, మీ కనెక్షన్‌లను రెండుసార్లు తనిఖీ చేయండి. తనిఖీ చేసిన తర్వాత, అది ఇంకా పనిచేయకపోతే, మీరు నమూనా కోడ్‌ని సవరించాల్సి ఉంటుంది.

గూగుల్ డ్రైవ్‌ను మరొక డ్రైవ్‌కు ఎలా తరలించాలి

ఈ పంక్తిని మార్చండి (ప్రారంభంలో ఏర్పాటు ఫంక్షన్):

display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

దీనికి:

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

ఇది మీరు ఉపయోగిస్తున్న డిస్‌ప్లే గురించి లైబ్రరీ నిర్దిష్ట వివరాలను తెలియజేస్తుంది. బిల్డ్‌తో కొనసాగడానికి మీరు ఇప్పుడు అన్నింటికీ సిద్ధంగా ఉండాలి.

కేసు

మీరు దీనిని బ్రెడ్‌బోర్డ్‌పై నిర్మిస్తుంటే, లేదా దాన్ని బాక్స్ చేయడానికి ఇష్టపడకపోతే, మీరు ఈ దశను దాటవేయవచ్చు.

నేను ఈ బాక్స్‌ని డిజైన్ చేసి 3 డి ప్రింట్ చేసాను. ఫైళ్లను ఆన్ చేయండి థింగైవర్స్ . మీకు 3 డి ప్రింటర్ లేకపోతే చింతించకండి - ఆన్‌లైన్ సేవలు 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

ఇది సరిగ్గా పనిచేయడానికి, ఒక యాదృచ్ఛిక సంఖ్యను రూపొందించాలి - ఇది డై యొక్క రోల్. ఆర్డునోలో యాదృచ్ఛిక సంఖ్య జనరేటర్ ఉంది యాదృచ్ఛికంగా , కానీ దానిని ఉపయోగించకూడదు. ప్రాథమిక యాదృచ్ఛిక పనులకు ఇది సరిపోతుంది, అయితే ఇది ఎలక్ట్రానిక్ డై కోసం యాదృచ్ఛికంగా సరిపోదు. కారణాలు కొంత క్లిష్టంగా ఉంటాయి, కానీ మీకు ఆసక్తి ఉంటే మీరు మరింత చదవవచ్చు boallen.com .

డౌన్‌లోడ్ చేయండి TrueRandom ద్వారా లైబ్రరీ సర్లీచ్ గితుబ్ మీద. దీన్ని మీ లైబ్రరీ ఫోల్డర్‌కు జోడించి, 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 మధ్య యాదృచ్ఛిక సంఖ్య తెరపై చూపబడుతుంది:

ఇది బాగా పనిచేస్తుంది, కానీ ఇది కొంచెం బోరింగ్. దాన్ని మెరుగుపరుద్దాం. రెండు కొత్త పద్ధతులను సృష్టించండి, డ్రాడై మరియు eraseDie :

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

ఇవి స్క్రీన్ మధ్యలో డైని డ్రా చేస్తాయి. మీరు దీనిని మరింత క్లిష్టతరం చేయాలనుకోవచ్చు, బహుశా D20, లేదా D12 మరియు మొదలైనవి గీయడం ద్వారా, కానీ ప్రాథమికంగా ఆరు వైపుల డైని గీయడం సులభం. ఇక్కడ ప్రాథమిక ఉపయోగం:

drawDie();

తరువాత, యాదృచ్ఛిక సంఖ్యను గీయడానికి మీ ప్రధాన లూప్‌ను సవరించండి, పెద్దది మరియు మధ్యలో మాత్రమే. టెక్స్ట్ పరిమాణం మరియు కర్సర్‌ని దీనికి మార్చండి:

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

ఇది ఇప్పుడు మరింత మెరుగ్గా కనిపిస్తుంది:

తొమ్మిది కంటే పెద్ద సంఖ్యలతో మాత్రమే సమస్య ఉంది:

దీని కోసం పరిష్కారం సులభం. 10 లేదా అంతకంటే ఎక్కువ సంఖ్యల కంటే 10 కంటే తక్కువ సంఖ్యలు కర్సర్‌ని వేరే స్థానానికి సెట్ చేస్తాయి. ఈ పంక్తిని భర్తీ చేయండి:

gpu డ్రైవర్‌లను అన్‌ఇన్‌స్టాల్ చేయడం మరియు మళ్లీ ఇన్‌స్టాల్ చేయడం ఎలా
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 ఆన్‌లైన్ సాధనం. అవసరమైన సెట్టింగ్‌లు ఇక్కడ ఉన్నాయి:

అమెజాన్ ప్యాకేజీ పంపిణీ చేయబడింది కానీ అక్కడ లేదు

మీ చిత్రాన్ని అప్‌లోడ్ చేయండి మరియు కోడ్ ఫార్మాట్‌ను దీనికి సెట్ చేయండి HEX: 0x . సెట్ కొరకు వాడబడినది కు అన్ని డ్రా ఇమేజ్ ఫంక్షన్ కోసం బ్లాక్/వైట్ . అన్ని ఇతర ఎంపికలను డిఫాల్ట్‌లుగా వదిలివేయండి. మీకు అవసరమైతే మీరు చిత్రాన్ని ఇక్కడ పునizeపరిమాణం చేయవచ్చు. నొక్కండి సి స్ట్రింగ్ పొందండి మరియు ఇమేజ్ డేటా కనిపించడాన్ని మీరు చూడాలి:

ఒక నిమిషంలో మీకు ఈ జనరేటెడ్ డేటా అవసరం. అనే రెండు ఫంక్షన్లను సృష్టించండి డ్రా ఎక్స్‌ప్లోషన్ మరియు డ్రా స్కుల్ (లేదా మీ వెర్షన్‌కు తగిన పేరు). కోడ్ ఇక్కడ ఉంది:

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[]

ఇది మీ చిత్రాలను EEPROM లో నిల్వ చేయడానికి Arduino కి చెబుతుంది ( EEPROM అంటే ఏమిటి? ) దాని 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
}

మరియు ఆ కొత్త రోల్స్ ఎలా ఉంటాయో ఇక్కడ ఉంది:

కోడ్ సైడ్ కోసం అంతే (మీరు అన్నింటినీ దాటవేస్తే GitHub నుండి కోడ్‌ను పట్టుకోండి). మీరు దీన్ని సులభంగా D12, D8 మరియు మొదలైనవిగా సవరించవచ్చు.

తుది అసెంబ్లీ

ఇప్పుడు మిగతావన్నీ పూర్తయ్యాయి, ప్రతిదీ బాక్స్ చేయడానికి సమయం ఆసన్నమైంది. డిస్‌ప్లేను బోల్ట్ చేయండి, బోల్ట్‌లను ఎక్కువగా బిగించకుండా చూసుకోండి. ఇది బహుశా చాలా కష్టమైన భాగం. నేను డిస్‌ప్లేను క్రాక్ చేసాను, కాబట్టి మీరు కొన్ని ప్లాస్టిక్ వాషర్‌లను ఉపయోగించాలనుకోవచ్చు. నేను కొన్ని చతురస్రాలను కత్తిరించాను ప్లాస్టిక్‌కార్డ్ :

చిన్న గింజలు మరియు బోల్ట్‌లు కనెక్ట్ చేయడానికి గమ్మత్తైనవి. చిట్కా: ప్రారంభంలో గింజలను కూర్చోవడానికి స్క్రూడ్రైవర్ చివరన చిన్న బ్లూ-టాక్ ముక్కను ఉపయోగించండి:

బటన్‌ని స్క్రూ చేయండి, బ్యాటరీని కనెక్ట్ చేయండి మరియు మూత మూసివేయండి. ఏ వైర్లను ట్రాప్ చేయకుండా జాగ్రత్త వహించండి, లేదా వాటిని చాలా గట్టిగా కట్టండి, బహుశా చిన్నది కావచ్చు. మీ ట్రెయిలింగ్ లీడ్స్ యొక్క పొడవును బట్టి, మీరు కొన్ని ఇన్సులేషన్‌తో బహిర్గత కనెక్షన్‌లను రక్షించుకోవలసి ఉంటుంది (సీరియల్ బాక్స్ బాగా పనిచేస్తుంది):

ఇది లోపల ఎలా ఉంటుందో ఇక్కడ ఉంది:

మరియు ఇక్కడ పూర్తయిన ఉత్పత్తి:

మీరు ఇప్పుడు ఎలక్ట్రానిక్ డి 20 గర్వించదగిన యజమానిగా ఉండాలి!

మీరు ఎలాంటి సవరణలు చేసారు? మీరు చిత్రాలను మార్చారా? వ్యాఖ్యలలో మాకు తెలియజేయండి, మీరు ఏమి చేశారో చూడటానికి మేము ఇష్టపడతాము!

షేర్ చేయండి షేర్ చేయండి ట్వీట్ ఇమెయిల్ యానిమేటింగ్ స్పీచ్ కోసం బిగినర్స్ గైడ్

ప్రసంగాన్ని యానిమేట్ చేయడం ఒక సవాలుగా ఉంటుంది. మీరు మీ ప్రాజెక్ట్‌కి సంభాషణను జోడించడానికి సిద్ధంగా ఉంటే, మేము మీ కోసం ప్రక్రియను విచ్ఛిన్నం చేస్తాము.

తదుపరి చదవండి
సంబంధిత అంశాలు
  • DIY
  • ఆర్డునో
  • కూర్ఛొని ఆడే ఆట, చదరంగం
  • ఎలక్ట్రానిక్స్
రచయిత గురుంచి జో కోబర్న్(136 కథనాలు ప్రచురించబడ్డాయి)

జో UK లోని లింకన్ విశ్వవిద్యాలయం నుండి కంప్యూటర్ సైన్స్‌లో గ్రాడ్యుయేట్. అతను ఒక ప్రొఫెషనల్ సాఫ్ట్‌వేర్ డెవలపర్, మరియు అతను డ్రోన్‌లను ఎగురవేయనప్పుడు లేదా సంగీతం వ్రాయనప్పుడు, అతను తరచుగా ఫోటోలు తీయడం లేదా వీడియోలను ఉత్పత్తి చేయడం చూడవచ్చు.

జో కోబర్న్ నుండి మరిన్ని

మా వార్తాలేఖకు సభ్యత్వాన్ని పొందండి

టెక్ చిట్కాలు, సమీక్షలు, ఉచిత ఈబుక్‌లు మరియు ప్రత్యేకమైన డీల్స్ కోసం మా వార్తాలేఖలో చేరండి!

సభ్యత్వం పొందడానికి ఇక్కడ క్లిక్ చేయండి
వర్గం Diy