Turinys:

„Pasidaryk pats“žaidimų konsolė naudojant „Arduino“: 4 žingsniai
„Pasidaryk pats“žaidimų konsolė naudojant „Arduino“: 4 žingsniai

Video: „Pasidaryk pats“žaidimų konsolė naudojant „Arduino“: 4 žingsniai

Video: „Pasidaryk pats“žaidimų konsolė naudojant „Arduino“: 4 žingsniai
Video: CS50 2015 - Week 7 2024, Liepa
Anonim
Image
Image

Šioje pamokoje aš jums parodysiu, kaip galite sukurti žaidimų konsolę naudodami „Arduino nano“. Taigi, jei norite pamatyti išsamų vaizdo įrašą, patikrinkite jį mano „YouTube“kanale

Prekės

Jei perkate iš šių nuorodų, tai padės man pateikti daugiau projektų

1) ARDUINO NANO2) OLED EKRANAS3) PUSH mygtukai

1 žingsnis: visų komponentų litavimas

Mėgautis!!!
Mėgautis!!!

Taigi, gavę visus komponentus, turite lituoti visus komponentus, kaip parodyta šioje schemoje

2 žingsnis: sutvarkykite visus dalykus vietose

Po litavimo viską sutvarkykite taip, kad jis atrodytų gražiai

3 žingsnis: programavimas

Taigi, pagaliau tinkamai atlikus visus veiksmus, laikas įkelti žemiau esantį kodą į „Arduino“

#įtraukti

#include #include #include #include // #include #define OLED_RESET 4 „Adafruit_SSD1306“ekranas (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 audra = {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, 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, 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, 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, 0xBx, 0xF0, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x06, 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 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, audra, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (BALTA); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("prieš"); display.setCursor (0, 0); plūdė voltaza = skaitytiVcc ()/1000; display.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println („Mirtis“); display.setFont (); display.setCursor (65, 42); display.println ("žvaigždė"); display.setTextSize (0); display.setCursor (65, 55); display.println ("VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); pyptelėjimas (a, 500); pyptelėjimas (a, 500); pyptelėjimas (a, 500); pyptelėjimas (f, 350); pyptelėjimas (cH, 150); pyptelėjimas (a, 500); pyptelėjimas (f, 350); pyptelėjimas (cH, 150); pyptelėjimas (a, 650); vėlavimas (500); vėlavimas (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; // kulkos greitis 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 centras = 95; nepasirašytas ilgasis pocetno = 0; nepasirašytas ilgas odabrano = 0; nepasirašytas ilgas trenutno = 0; nepasirašytas ilgas 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); jei (poc == 0) {pocetno = millis (); odabrano = atsitiktinis (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;} if (digitalRead (12) == 0 && poz> = 2) {poz = poz-2;} if (digitalRead (11) == 0 && poz128) postoji = 0; if (smjer == 0) {nep = nep+bkugle;} else {nep = nep-bkugle;} if (nep> = (64-promjer)) smjer = 1; if (nep = nep-promjer && mety (centar-promjer) && metx = pozicija-8 && ry <= pozicija+8) if (rx4) {rx = 95; ry = -50; tonas (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija+8) if (rx24) {rx2 = -50; ry2 = -50; tonas (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija+8) if (rx34) {rx3 = -50; ry3 = -50; tonas (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija+8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; tonas (9, 100, 100); zivoti = zivoti-1; } jei (rx4 <1) {ispaljeno = 0; rx4 = 200;} if (zivoti == 0) go = 1; } if (go == 1) {if (zivoti == 0) {tone (9, 200, 300); vėlavimas (300); tonas (9, 250, 200); vėlavimas (200); tonas (9, 300, 300); vėlavimas (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (BALTA); display.setCursor (7, 10); display.println ("ŽAIDIMAS PABAIGAS!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("rezultatas:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("lygis:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("laikas (-ai):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {tone (9, 280, 300); vėlavimas (300); tonas (9, 250, 200); vėlavimas (200); tonas (9, 370, 300); vėlavimas (300); ponovo (); }}} negaliojantis ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; eiti = 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 () {// Skaitykite 1.1V nuorodą prieš AVcc // nustatykite nuorodą į Vcc, o matavimą į vidinę 1.1V atskaitą #jei apibrėžta (_ AVR_ATmega32U4_) || apibrėžta (_ AVR_ATmega1280_) || apibrėžta (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif apibrėžtas (_AVR_ATtiny24_) || apibrėžta (_ AVR_ATtiny44_) || apibrėžta (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif apibrėžtas (_AVR_ATtiny25_) || apibrėžta (_ AVR_ATtiny45_) || apibrėžta (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif delsa (2); // Palaukite, kol „Vref“sureguliuos ADCSRA | = _BV (ADSC); // Pradėti konversiją tuo metu (bit_is_set (ADCSRA, ADSC)); // matavimas uint8_t low = ADCL; // pirmiausia turi perskaityti ADCL - tada jis užrakina ADCH uint8_t high = ADCH; // atrakina abu ilgus rezultatus = (aukštas << 8) | žemas; rezultatas = 1125300L / rezultatas; // Apskaičiuoti Vcc (mV); 1125300 = 1,1*1023*1000 grąžinimo rezultatas; // Vcc milivoltais} void pyptelėjimas (int užrašas, int trukmė) {// Play tone on buzzerPin tone (9, pastaba, trukmė); vėlavimas (trukmė); noTone (9); vėlavimas (50); }

4 žingsnis: Mėgaukitės !

Sveikinu? pagaliau padarei, jei patiko, užsiprenumeruok mano youtube kanalą

Rekomenduojamas: