Obsah:

DIY herní konzole využívající Arduino: 4 kroky
DIY herní konzole využívající Arduino: 4 kroky

Video: DIY herní konzole využívající Arduino: 4 kroky

Video: DIY herní konzole využívající Arduino: 4 kroky
Video: Nenad Rakocevic Recode talk 2024, Listopad
Anonim
Image
Image

V tomto tutoriálu vám ukážu, jak můžete vytvořit herní konzoli pomocí Arduino nano. Pokud tedy chcete vidět podrobné video, podívejte se na můj youtube kanál

Zásoby

Pokud nakoupíte z těchto odkazů, pomůže mi to poskytnout vám více projektů

1) ARDUINO NANO 2) OLED DISPLAY 3) TLAČÍTKA TLAČÍTKA 4) Drátová

Krok 1: Pájení všech součástí

Užívat si!!!
Užívat si!!!

Takže po získání všech komponent musíte všechny součásti pájet, jak je znázorněno na tomto schématu zapojení

Krok 2: Uspořádejte všechny věci na místa

Po pájení vše uspořádejte všechny součásti takto, aby to vypadalo hezky

Krok 3: Programování

Konečně po správném provedení všech kroků je čas nahrát níže uvedený kód do Arduina

#zahrnout

#include #include #include #include // #include #define OLED_RESET 4 Adafruit_SSD1306 display (OLED_RESET); const int c = 261; const int d = 294; const int e = 329; konst int f = 349; const int g = 391; const int gS = 415; const int a = 440; const int aS = 455; const int b = 466; konst. int cH = 523; konst. int cSH = 554; konst. int dH = 587; const int dSH = 622; konst. int eH = 659; konst. int fH = 698; konst int fSH = 740; konst. int gH = 784; konst int gSH = 830; const int aH = 880; konst. nepodepsaný znak PROGMEM dioda16 = {0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 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, 0x7, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 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, 0x40, 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, 0x, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBx, 0xFC,, 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, 0x0 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x 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, 0xF, 0x0, 0xA 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0x0, 0x0, 0x00 0xF8, 0x00, 0x00}; neplatné nastavení () {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, bouře, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (BÍLÁ); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("vs"); display.setCursor (0, 0); float voltaza = readVcc ()/1000; display.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println („Smrt“); display.setFont (); display.setCursor (65, 42); display.println ("hvězda"); display.setTextSize (0); display.setCursor (65, 55); display.println ("od VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); pípnutí (a, 500); pípnutí (a, 500); pípnutí (a, 500); pípnutí (f, 350); píp (cH, 150); pípnutí (a, 500); pípnutí (f, 350); píp (cH, 150); pípnutí (a, 650); zpoždění (500); zpoždění (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; // rychlost odrážky 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; nepodepsané dlouhé pocetno = 0; nepodepsané dlouhé odabrano = 0; nepodepsané dlouhé trenutno = 0; bez znaménka dlouhé 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); if (poc == 0) {pocetno = millis (); odabrano = náhodný (400, 1200); poc = 1; } trenutno = millis (); // nivoi if ((trenutno-nivovrije)> 50 000) {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 = poziceja-8 && ry <= poziceja+8) if (rx4) {rx = 95; ry = -50; tón (9, 100, 100); zivoti = zivoti-1; } if (ry2> = poziceja-8 && ry2 <= poziceja+8) if (rx24) {rx2 = -50; ry2 = -50; tón (9, 100, 100); zivoti = zivoti-1; } if (ry3> = poziceja-8 && ry3 <= poziceja+8) if (rx34) {rx3 = -50; ry3 = -50; tón (9, 100, 100); zivoti = zivoti-1; } if (ry4> = poziceja-8 && ry4 <= poziceja+8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; tón (9, 100, 100); zivoti = zivoti-1; } if (rx4 <1) {ispaljeno = 0; rx4 = 200;} if (zivoti == 0) go = 1; } if (go == 1) {if (zivoti == 0) {tón (9, 200, 300); zpoždění (300); tón (9, 250, 200); zpoždění (200); tón (9, 300, 300); zpoždění (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (BÍLÁ); display.setCursor (7, 10); display.println („HRA NAD!“); display.setTextSize (1); display.setCursor (7, 30); display.println ("skóre:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("úroveň:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("čas (s):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {tón (9, 280, 300); zpoždění (300); tón (9, 250, 200); zpoždění (200); tón (9, 370, 300); zpoždění (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; jít = 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 () {// Přečíst referenci 1,1 V proti AVcc // nastavit odkaz na Vcc a měření na interní referenci 1,1 V #definováno (_ AVR_ATmega32U4_) || definováno (_ AVR_ATmega1280_) || definováno (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #definován jako (_AVR_ATtiny24_) || definováno (_ AVR_ATtiny44_) || definováno (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #definován jako (_AVR_ATtiny25_) || definováno (_ AVR_ATtiny45_) || definováno (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif zpoždění (2); // Počkejte, až Vref vyrovná ADCSRA | = _BV (ADSC); // Zahájení převodu while (bit_is_set (ADCSRA, ADSC)); // měření uint8_t low = ADCL; // nejprve si musí přečíst ADCL - pak zamkne ADCH uint8_t high = ADCH; // odemkne oba dlouhý výsledek = (vysoký << 8) | nízký; výsledek = 1125300L / výsledek; // Vypočítejte Vcc (v mV); 1125300 = 1,1*1023*1000 návratový výsledek; // Vcc v milivoltech} neplatné pípnutí (int note, int duration) {// Play tone on buzzerPin tone (9, note, duration); zpoždění (doba trvání); noTone (9); zpoždění (50); }

Krok 4: Užijte si !

Gratulujeme ? Nakonec se vám to podařilo, takže pokud se vám to líbilo, přihlaste se k odběru mého youtube kanálu

Doporučuje: