DIY spēļu konsole, izmantojot Arduino: 4 soļi
DIY spēļu konsole, izmantojot Arduino: 4 soļi
Anonim
Image
Image

Šajā apmācībā es jums parādīšu, kā jūs varat izveidot spēļu konsoli, izmantojot Arduino nano. Tātad, ja vēlaties tajā redzēt detalizētu video, pārbaudiet to manā YouTube kanālā

Piegādes

Ja jūs pērkat no šīm saitēm, tas man palīdzēs jums sniegt vairāk projektu

1) ARDUINO NANO2) OLED DISPLAY3) PUSH BUTTONS4) WIRES

1. solis: visu sastāvdaļu lodēšana

Izbaudi!!!
Izbaudi!!!

Tātad, pēc visu komponentu iegūšanas jums ir jālodē visas sastāvdaļas, kā parādīts šajā shēmā

2. solis: sakārtojiet visas lietas vietās

Pēc visu lodēšanas sakārtojiet visas šādas sastāvdaļas, lai tas iegūtu jauku izskatu

3. solis: programmēšana

Tātad, beidzot, pareizi izpildot visas darbības, ir pienācis laiks augšupielādēt zemāk esošo kodu Arduino

#iekļaut

#include #include #include #include // #include #define OLED_RESET 4 Adafruit_SSD1306 displejs (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 unsigned char PROGMEM dioda16 = {0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0xF3, 0xFF, 0xFx, 0xF3, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; const unsigned char PROGMEM storm = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF0, 0xF0, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x06, 0x00, 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, 0xD0, 0x0x, 0x0x 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x26, 0x0 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0xA0, 0xA0 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0x0x 0xF8, 0x00, 0x00}; void setup () {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, vētra, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (BALTS); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("pret"); display.setCursor (0, 0); pludiņš voltaza = readVcc ()/1000; displejs.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println ("Nāve"); display.setFont (); display.setCursor (65, 42); display.println ("zvaigzne"); display.setTextSize (0); display.setCursor (65, 55); display.println ("by VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); pīkstiens (a, 500); pīkstiens (a, 500); pīkstiens (a, 500); pīkstiens (f, 350); pīkstiens (cH, 150); pīkstiens (a, 500); pīkstiens (f, 350); pīkstiens (cH, 150); pīkstiens (a, 650); kavēšanās (500); kavēšanās (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; // lodes ātrums 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; neparakstīts garais pocetno = 0; neparakstīts garš odabrano = 0; neparakstīts garais trenutno = 0; neparakstīts garš nivovrije = 0; int poz = 30; void loop () {if (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); ja (poc == 0) {pocetno = millis (); odabrano = nejaušs (400, 1200); poc = 1; } trenutno = milis (); // 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; } if ((odabrano+pocetno) 0) {display.drawCircle (rx, ry, 2, 1); rx = rx-brzina;} if (ispaljeno> 1) {display.drawCircle (rx2, ry2, 1, 1); rx2 = rx2-brzina;} if (ispaljeno> 2) {display.drawCircle (rx3, ry3, 4, 1); rx3 = rx3-brzina;} if (ispaljeno> 3) {display.drawCircle (rx4, ry4, 2, 1); rx4 = rx4-brzina;} ja (digitalRead (12) == 0 && poz> = 2) {poz = poz-2;} if (digitalRead (11) == 0 && poz128) postoji = 0; ja (smjer == 0) {nep = nep+bkugle;} else {nep = nep-bkugle;} if (nep> = (64-promjer)) smjer = 1; ja (nep = nep-promjer && mety (centar-promjer) && metx = pozicija-8 && ry <= pozicija+8) if (rx4) {rx = 95; ry = -50; tonis (9, 100, 100); zivoti = zivoti-1; } ja (ry2> = pozicija-8 && ry2 <= pozicija+8) ja (rx24) {rx2 = -50; ry2 = -50; tonis (9, 100, 100); zivoti = zivoti-1; } ja (ry3> = pozicija-8 && ry3 <= pozicija+8) ja (rx34) {rx3 = -50; ry3 = -50; tonis (9, 100, 100); zivoti = zivoti-1; } ja (ry4> = pozicija-8 && ry4 <= pozicija+8) ja (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; tonis (9, 100, 100); zivoti = zivoti-1; } ja (rx4 <1) {ispaljeno = 0; rx4 = 200;} if (zivoti == 0) go = 1; } ja (iet == 1) {ja (zivoti == 0) {tonis (9, 200, 300); kavēšanās (300); tonis (9, 250, 200); kavēšanās (200); tonis (9, 300, 300); kavēšanās (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (BALTS); display.setCursor (7, 10); display.println ("SPĒLES PĀRBAUDE!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("score:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("līmenis:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("laiks (-i):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); ja (digitalRead (3) == 0) {tonis (9, 280, 300); kavēšanās (300); tonis (9, 250, 200); kavēšanās (200); tonis (9, 370, 300); kavēšanās (300); ponovo (); }}} anulēts ponovo () {metx = 0; metijs = 0; postoji = 0; nep = 8; smjer = 0; iet = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; bodovi = 0; brzina = 3; // brizna neprijateljevog metka bkugle = 1; najmanja = 600; najveca = 1200; promjer = 12; rx4 = 95; ry4 = 0; zivoti = 5; poc = 0; ispaljeno = 0; nivo = 1; pocetno = 0; odabrano = 0; trenutno = 0; nivovrije = 0; } long readVcc () {// Lasiet 1.1V atsauci pret AVcc // iestatiet atsauci uz Vcc un mērījumu uz iekšējo 1.1V atsauci #ja definēts (_ AVR_ATmega32U4_) || definēts (_ AVR_ATmega1280_) || definēts (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif definēts (_AVR_ATtiny24_) || definēts (_ AVR_ATtiny44_) || definēts (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif definēts (_AVR_ATtiny25_) || definēts (_ AVR_ATtiny45_) || definēts (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif aizture (2); // Pagaidiet, kamēr Vref nokārtos ADCSRA | = _BV (ADSC); // Sākt konvertēšanu, kamēr (bit_is_set (ADCSRA, ADSC)); // mērot uint8_t zemu = ADCL; // vispirms jāizlasa ADCL - tas pēc tam bloķē ADCH uint8_t high = ADCH; // atbloķē abus garo rezultātu = (augsts << 8) | zems; rezultāts = 1125300L / rezultāts; // Aprēķināt Vcc (mV); 1125300 = 1,1*1023*1000 atgriešanās rezultāts; // Vcc milivoltos} void beep (int not, int duration) {// Play tone on buzzerPin tone (9, piezīme, ilgums); kavēšanās (ilgums); noTone (9); kavēšanās (50); }

4. solis: izbaudiet !

Apsveicu? jūs beidzot to izdarījāt, ja jums tas patika, abonējiet manu youtube kanālu

Ieteicams: