Obsah:
- Zásoby
- Krok 1: Pájení všech součástí
- Krok 2: Uspořádejte všechny věci na místa
- Krok 3: Programování
- Krok 4: Užijte si !
Video: DIY herní konzole využívající Arduino: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
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í
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:
Přenosná herní konzole Lego s Space Invaders: 4 kroky
Přenosná herní konzole Lego s Space Invaders: Přemýšleli jste někdy o tom, že budete vývojářem her a postavíte si vlastní herní konzoli, kterou můžete hrát na cestách? Vše, co potřebujete, je trochu času, hardware
Ruční herní konzole pro kutily využívající RetroPie: 7 kroků
Ruční herní konzole pro kutily pomocí RetroPie: Podívejte se na výše uvedené video, abyste lépe porozuměli tomuto projektu. Pokuta. Je čas začít! Nejprve použijeme RetroPie. Zbývají nám tedy dvě možnosti. Pokud jsme již nainstalovali Raspbian na naši SD kartu, můžeme nainstalovat RetroP
Smart TV a herní konzole Raspberry Pi: 4 kroky
Inteligentní televize a herní konzole Raspberry Pi: Máte doma ne-chytrou televizi nebo zvažujete koupi Chromecastu, Firesticku nebo třeba herní konzole? Udělejme si jeden sami. Budeme duálně bootovat naše malinové pi s Lakkou a OSMC. Lakka pro emulaci her a OSMC pro video
Herní konzole: 4 kroky
Herní konzole: Opravdu jednoduchá herní konzole, podporující menu, tetris a hada. Byl vyroben pomocí- dvou 8x8 čtvercových maticových červených LED displejových bodových modulů 74hc595, které najdete zde- jednoho STM32F103 Nucleo-64- 4 tlačítek a 4 rezistorů- vodičů, chlebového můstku, propojek atd.
Ruční herní konzole Recalbox využívající 2,2 TFT: 6 kroků
Handheld Recalbox Game Console using 2.2 TFT: Instructions for DIY of a handheld recalbox game console using 2.2 “TFT LCD and a Raspberry Pi 0 W and GPIO buttons. You can view this youtube video for a full demonstration of the steps involved: A. Získejte všechny díly. B. Spojte součásti dohromady