ዝርዝር ሁኔታ:

አርዱዲኖን በመጠቀም የ DIY ጨዋታ ኮንሶል 4 ደረጃዎች
አርዱዲኖን በመጠቀም የ DIY ጨዋታ ኮንሶል 4 ደረጃዎች

ቪዲዮ: አርዱዲኖን በመጠቀም የ DIY ጨዋታ ኮንሶል 4 ደረጃዎች

ቪዲዮ: አርዱዲኖን በመጠቀም የ DIY ጨዋታ ኮንሶል 4 ደረጃዎች
ቪዲዮ: የአርዱዪኖ ሶፍትዌርን እንዴት ማውረድ እና መጫን እንደሚቻል 2024, ህዳር
Anonim
Image
Image

በዚህ መማሪያ ውስጥ አርዱዲኖ ናኖን በመጠቀም እንዴት የጨዋታ ኮንሶል ማድረግ እንደሚችሉ አሳያችኋለሁ። ስለዚህ በእሱ ላይ ዝርዝር ቪዲዮ ማየት ከፈለጉ በ youtube ጣቢያዬ ላይ ይመልከቱት

አቅርቦቶች

ከዚህ አገናኞች ከገዙ ተጨማሪ ፕሮጀክቶችን እንድሰጥዎ ይረዳኛል

1) ARDUINO NANO2) OLED ማሳያ 3) PUSH BUTTONS4) ሽቦዎች

ደረጃ 1 - ሁሉንም አካላት መሸጥ

ይደሰቱ !!!
ይደሰቱ !!!

ስለዚህ ፣ ሁሉንም አካላት ካገኙ በኋላ በዚህ የወረዳ ሥዕላዊ መግለጫ ላይ እንደሚታየው ሁሉንም አካላት መሸጥ አለብዎት

ደረጃ 2 - ሁሉንም ነገሮች በቦታዎች ያዘጋጁ

ከሽያጭ በኋላ ሁሉም ነገር ጥሩ መልክ እንዲኖረው ሁሉንም እንደዚህ ያሉትን ክፍሎች ያቀናጃል

ደረጃ 3 - ፕሮግራም ማውጣት

ስለዚህ በመጨረሻ ሁሉንም ደረጃዎች በትክክል ከተከተሉ በኋላ ከዚህ በታች ያለውን ኮድ ወደ አርዱዲኖ ለመስቀል ጊዜው ነው

#ያካትቱ

#አካትት #አካትት #አካትት #አካትት // # #መግለፅ OLED_RESET 4 Adafruit_SSD1306 ማሳያ (OLED_RESET); const int c = 261; const int d = 294; const int e = 329; const int f = 349; const int g = 391; const int gS = 415; const int a = 440; const int aS = 455; const int b = 466; const int cH = 523; const int cSH = 554; const int dH = 587; const int dSH = 622; const int eH = 659; const int fH = 698; const int fSH = 740; const int gH = 784; const int gSH = 830; const int aH = 880; const ያልተፈረመ ቻር PROGMEM dioda16 = {0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x1C ፣ 0x00 ፣ 0x3F ፣ 0xF0 ፣ 0x3C ፣ 0x00 ፣ 0x3C ፣ 0x00 ፣ 0xFF ፣ 0x00 ፣ 0x7F ፣ 0xFF ፣ 0x7F ፣ 0xFX ፣ 0xFX ፣ 0x00 ፣ 0x3C ፣ 0x00 ፣ 0x1F ፣ 0xF0 ፣ 0x1C ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00}; const ያልተፈረመ ቻር PROGMEM ማዕበል = {0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x7F ፣ 0xFE ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x07 ፣ 0x80 ፣ 0x01 ፣ 0xE0 ፣ 0x00 ፣ 0x00 ፣ 0x0C ፣ 0x00 ፣ 0x00 ፣ 0x20 ፣ 0x00 ፣ 0x00 ፣ 0x18 ፣ 0x00 ፣ 0x00 ፣ 0x18 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x04 ፣ 0x00 ፣ 0x00 ፣ 0x20 ፣ 0x00 ፣ 0x00 ፣ 0x04 ፣ 0x00 ፣ 0x00 ፣ 0x20 ፣ 0x00 ፣ 0x00 ፣ 0x04 ፣ 0x00 ፣ 0x00 ፣ 0x60 ፣ 0x00 ፣ 0x00 ፣ 0x02 ፣ 0x00 ፣ 0x00 ፣ 0x0 ፣ 0x0 ፣ 0x00 ፣ 0x00 ፣ 0x40 ፣ 0x00 ፣ 0x00 ፣ 0x01 ፣ 0x00 ፣ 0x00 ፣ 0x40 ፣ 0x00 ፣ 0x00 ፣ 0x01 ፣ 0x00 ፣ 0x00 ፣ 0x40 ፣ 0x00 ፣ 0x00 ፣ 0x01 ፣ 0x00 ፣ 0x00 ፣ 0x7F ፣ 0xE0 ፣ 0x00 ፣ 0x00 ፣ 0x7F ፣ 0xFF ፣ 0xFF ፣ 0xFF ፣ 0x00 ፣ 0x00 ፣ 0x7F ፣ 0xFF ፣ 0xFF ፣ 0xFF ፣ 0x00 ፣ 0x00 ፣ 0xD7 ፣ 0xFF ፣ 0xFF ፣ 0xE1 ፣ 0x00 ፣ 0x01 ፣ 0xBX ፣ 0xBX ፣ 0xBF ፣ 0xFX ፣ 0xBF ፣ 0xFF ፣ 0xBF ፣ 0xF1 ፣ 0xCF ፣ 0xFA ፣ 0x80 ፣ 0x01 ፣ 0x3F ፣ 0xC2 ፣ 0x37 ፣ 0xF7 ፣ 0x80 ፣ 0x01 ፣ 0xEF ፣ 0x9C ፣ 0x01 ፣ 0xE7 ፣ 0xC0 ፣ 0x01 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0, 0x0, ፣ 0xC0 ፣ 0x03 ፣ 0x06 ፣ 0x80 ፣ 0x01 ፣ 0xFF ፣ 0x80 ፣ 0x01 ፣ 0xFF ፣ 0x80 ፣ 0x01 ፣ 0xF8 ፣ 0x00 ፣ 0x00 ፣ 0x1D ፣ 0xC0 ፣ 0x03 ፣ 0x70 ፣ 0x00 ፣ 0x80 ፣ 0x0C ፣ 0x60 ፣ 0x05 ፣ 0xB0 ፣ 0x07 ፣ 0xF0 ፣ 0x08 ፣ 0x90 ፣ 0x09 ፣ 0x10 ፣ 0x1F ፣ 0xF8 ፣ 0x09 ፣ 0x0 ፣ 0x0 ፣ 0x0 ፣ 0x0 0xF0 ፣ 0x0F ፣ 0xC0 ፣ 0xFC ፣ 0x0F ፣ 0x07 ፣ 0x90 ፣ 0x0D ፣ 0x43 ፣ 0xC0 ፣ 0x03 ፣ 0x07 ፣ 0x90 ፣ 0x05 ፣ 0x64 ፣ 0x00 ፣ 0x00 ፣ 0xCF ፣ 0x10 ፣ 0x07 ፣ 0x0 ፣ 0x0 0x01 ፣ 0x80 ፣ 0x00 ፣ 0x00 ፣ 0x10 ፣ 0x20 ፣ 0x01 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x0E ፣ 0x40 ፣ 0x01 ፣ 0x80 ፣ 0x07 ፣ 0xF0 ፣ 0x01 ፣ 0x80 ፣ 0x00 ፣ 0x80 ፣ 0x07 ፣ 0xC 0x80 ፣ 0x0B ፣ 0xE8 ፣ 0x00 ፣ 0x80 ፣ 0x00 ፣ 0x87 ፣ 0x97 ፣ 0xE9 ፣ 0xE0 ፣ 0x80 ፣ 0x00 ፣ 0x87 ፣ 0xDF ፣ 0xEF ፣ 0xA0 ፣ 0x80 ፣ 0x00 ፣ 0x4B ፣ 0xFF ፣ 0xF ፣ 0xF ፣ 0xF 0xDF ፣ 0xFB ፣ 0xA3 ፣ 0x00 ፣ 0x00 ፣ 0x24 ፣ 0x97 ፣ 0xE8 ፣ 0x24 ፣ 0x00 ፣ 0x00 ፣ 0x1E ፣ 0x1F ፣ 0xC0 ፣ 0x2C ፣ 0x00 ፣ 0x00 ፣ 0x07 ፣ 0xF8 ፣ 0x1F ፣ 0x0 ፣ 0x0 ፣ 0x0 0xF8 ፣ 0x00 ፣ 0x00}; ባዶነት ማዋቀር () {pinMode (3 ፣ INPUT_PULLUP) ፤ pinMode (12 ፣ INPUT_PULLUP); pinMode (11 ፣ INPUT_PULLUP); display.begin (SSD1306_SWITCHCAPVCC ፣ 0x3C); display.display (); display.clearDisplay (); display.setTextSize (0); display.drawBitmap (6 ፣ 11 ፣ አውሎ ነፋስ ፣ 48 ፣ 48 ፣ 1); display.setFont (& FreeSans9pt7b); display.setTextColor (ነጭ); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("vs"); display.setCursor (0, 0); ተንሳፋፊ voltaza = readVcc ()/1000; display.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65 ፣ 39) ፤ display.println ("ሞት"); display.setFont (); display.setCursor (65 ፣ 42) ፤ display.println ("ኮከብ"); display.setTextSize (0); display.setCursor (65 ፣ 55) ፤ display.println ("በ VRAJ"); display.setCursor (65 ፣ 20) ፤ display.display (); display.setFont (); ቢፕ (ሀ ፣ 500); ቢፕ (ሀ ፣ 500); ቢፕ (ሀ ፣ 500); ቢፕ (ረ ፣ 350); ቢፕ (cH ፣ 150); ቢፕ (ሀ ፣ 500); ቢፕ (ረ ፣ 350); ቢፕ (cH ፣ 150); ቢፕ (ሀ ፣ 650); መዘግየት (500); መዘግየት (500); } int metx = 0; int mety = 0; int postoji = 0; int nep = 8; int smjer = 0; int go = 0; int rx = 95; int ry = 0; int rx2 = 95; int ry2 = 0; int rx3 = 95; int ry3 = 0; int bodovi = 0; int brzina = 3; // የጥይት int bkugle = 1; int najmanja = 600; int najveca = 1200; int promjer = 10; int rx4 = 95; int ry4 = 0; int zivoti = 5; int poc = 0; int ispaljeno = 0; int nivo = 1; int centar = 95; ያልተፈረመ ረጅም pocetno = 0; ያልተፈረመ ረጅም odabrano = 0; ያልተፈረመ ረጅም trenutno = 0; ያልተፈረመ ረጅም nivovrije = 0; int poz = 30; ባዶነት loop () {ከሆነ (go == 0) {display.clearDisplay (); display.drawPixel (50, 30, 1); display.drawPixel (30, 17, 1); display.drawPixel (60, 18, 1); display.drawPixel (55, 16, 1); display.drawPixel (25, 43, 1); display.drawPixel (100, 43, 1); display.drawPixel (117, 52, 1); display.drawPixel (14, 49, 1); display.drawPixel (24, 24, 1); display.drawPixel (78, 36, 1); display.drawPixel (80, 57, 1); display.drawPixel (107, 11, 1); display.drawPixel (150, 11, 1); display.drawPixel (5, 5, 1); display.drawPixel (8, 7, 1); display.drawPixel (70, 12, 1); display.drawPixel (10, 56, 1); display.drawPixel (70, 25, 1); ከሆነ (poc == 0) {pocetno = millis (); odabrano = የዘፈቀደ (400 ፣ 1200); ፖክ = 1; } trenutno = millis (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; nivo = nivo+1; brzina = brzina+1; // brizna neprijateljevog metka if (nivo % 2 == 0) {bkugle = bkugle+1; promjer = promjer-1; } najmanja = najmanja-50; najveca = najveca-50; } ከሆነ ((odabrano+pocetno) 0) {display.drawCircle (rx, ry, 2, 1); rx = rx-brzina;} ከሆነ (ispaljeno> 1) {display.drawCircle (rx2, ry2, 1, 1); rx2 = rx2-brzina;} ከሆነ (ispaljeno> 2) {display.drawCircle (rx3, ry3, 4, 1); rx3 = rx3-brzina;} ከሆነ (ispaljeno> 3) {display.drawCircle (rx4, ry4, 2, 1); rx4 = rx4-brzina;} ከሆነ (digitalRead (12) == 0 && poz> = 2) {poz = poz-2;} ከሆነ (digitalRead (11) == 0 && poz128) postoji = 0; ከሆነ (smjer == 0) {nep = nep+bkugle;} ሌላ {nep = nep-bkugle;} ከሆነ (nep> = (64-promjer)) smjer = 1; ከሆነ (nep = nep-promjer && mety (centar-promjer) && metx = pozicija-8 && ry <= pozicija+8) ከሆነ (rx4) {rx = 95; ry = -50; ድምጽ (9, 100, 100); zivoti = zivoti-1; } ከሆነ (ry2> = pozicija-8 && ry2 <= pozicija+8) ከሆነ (rx24) {rx2 = -50; ry2 = -50; ድምጽ (9, 100, 100); zivoti = zivoti-1; } ከሆነ (ry3> = pozicija-8 && ry3 <= pozicija+8) ከሆነ (rx34) {rx3 = -50; ry3 = -50; ድምጽ (9, 100, 100); zivoti = zivoti-1; } ከሆነ (ry4> = pozicija-8 && ry4 <= pozicija+8) ከሆነ (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; ድምጽ (9, 100, 100); zivoti = zivoti-1; } ከሆነ (rx4 <1) {ispaljeno = 0; rx4 = 200;} ከሆነ (zivoti == 0) go = 1; } ከሆነ (ሂድ == 1) {ከሆነ (zivoti == 0) {ቶን (9, 200, 300); መዘግየት (300); ድምጽ (9, 250, 200); መዘግየት (200); ድምጽ (9, 300, 300); መዘግየት (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (ነጭ); display.setCursor (7, 10); display.println ("GAME over!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("ነጥብ:"); display.setCursor (44, 30); display.println (ቦዶቪ); display.setCursor (7, 40); display.println ("ደረጃ:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("ጊዜ (ዎች):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); ከሆነ (digitalRead (3) == 0) {tone (9, 280, 300); መዘግየት (300); ድምጽ (9, 250, 200); መዘግየት (200); ድምጽ (9, 370, 300); መዘግየት (300); ponovo (); }}} ባዶ ponovo () {metx = 0; ሜቲ = 0; ፖስትጂ = 0; ኔፕ = 8; smjer = 0; ሂድ = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; ቦዶቪ = 0; brzina = 3; // brizna neprijateljevog metka bkugle = 1; najmanja = 600; najveca = 1200; promjer = 12; rx4 = 95; ry4 = 0; zivoti = 5; ፖክ = 0; ispaljeno = 0; ኒቮ = 1; pocetno = 0; odabrano = 0; trenutno = 0; nivovrije = 0; } long readVcc () {// Read 1.1V reference from AVcc // ማጣቀሻውን ወደ ቪሲሲ እና ልኬቱን ወደ ውስጣዊ 1.1V ማጣቀሻ #ከተገለጸ (_ AVR_ATmega32U4_) || የተገለጸ (_ AVR_ATmega1280_) || የተገለጸ (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #ኤሊፍ ተገለጸ (_AVR_ATtiny24_) || የተገለጸ (_ AVR_ATtiny44_) || የተገለጸ (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #ኤሊፍ ተገለጸ (_AVR_ATtiny25_) || የተገለጸ (_ AVR_ATtiny45_) || የተገለጸ (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif መዘግየት (2); // Vref ADCSRA እስኪፈታ ይጠብቁ | = _BV (ADSC); // ልወጣ ይጀምሩ (bit_is_set (ADCSRA ፣ ADSC)); // መለካት uint8_t ዝቅተኛ = ADCL; // መጀመሪያ ADCL ን ማንበብ አለበት - ከዚያ ይዘጋል ADCH uint8_t high = ADCH; // ሁለቱንም ረጅም ውጤት ይከፍታል = (ከፍተኛ << 8) | ዝቅተኛ; ውጤት = 1125300L / ውጤት; // ቪሲሲን ያስሉ (በ mV ውስጥ); 1125300 = 1.1*1023*1000 የመመለሻ ውጤት; // ቪሲሲ በሚሊቪልቶች} ባዶ ድምጽ (int note, int ቆይታ) {// በድምፅ ቃና (9 ፣ ማስታወሻ ፣ ቆይታ) ላይ ድምጽ ያጫውቱ ፤ መዘግየት (ቆይታ); noTone (9); መዘግየት (50); }

ደረጃ 4: ይደሰቱ !

እንኳን ደስ አለዎት? እርስዎ ከወደዱት በመጨረሻ ለዩቲዩብ ጣቢያዬ ደንበኝነት ይመዝገቡ

የሚመከር: