Tartalomjegyzék:
- Kellékek
- 1. lépés: Az összes alkatrész forrasztása
- 2. lépés: Rendezze el az összes dolgot a helyeken
- 3. lépés: Programozás
- 4. lépés: Élvezze !
Videó: DIY játékkonzol az Arduino használatával: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Ebben az oktatóanyagban megmutatom, hogyan lehet játékkonzolt készíteni az Arduino nano használatával. Tehát ha részletes videót akarsz látni róla, akkor nézd meg a youtube csatornámon
Kellékek
Ha ezekről a linkekről vásárol, akkor több projektet adhat
1) ARDUINO NANO 2) OLED KIJELZŐ 3) PUSH GOMBOK 4) WIRES
1. lépés: Az összes alkatrész forrasztása
Tehát, miután megszerezte az összes alkatrészt, forrasztania kell az összes alkatrészt, ahogy ez a kapcsolási rajzon látható
2. lépés: Rendezze el az összes dolgot a helyeken
Minden forrasztás után rendezze el az összes ilyen alkatrészt, hogy szép megjelenést kapjon
3. lépés: Programozás
Végül, miután minden lépést megfelelően végrehajtott, ideje feltölteni az alábbi kódot az Arduino -ba
#befoglalni
#include #include #include #include // #include #define OLED_RESET 4 Adafruit_SSD1306 kijelző (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, 0x7F, 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, 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, 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, 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, 0x0x0 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, 0x00, 0x08 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, vihar, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (FEHÉR); 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 ("Halál"); display.setFont (); display.setCursor (65, 42); display.println ("csillag"); display.setTextSize (0); display.setCursor (65, 55); display.println ("VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); hangjelzés (a, 500); hangjelzés (a, 500); hangjelzés (a, 500); hangjelzés (f, 350); hangjelzés (cH, 150); hangjelzés (a, 500); hangjelzés (f, 350); hangjelzés (cH, 150); hangjelzés (a, 650); késleltetés (500); késlelteté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; // golyósebesség 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; előjel nélküli hosszú pocetno = 0; előjel nélküli hosszú odabrano = 0; előjel nélküli hosszú trenutno = 0; előjel nélküli hosszú 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); ha (poc == 0) {pocetno = millis (); odabrano = véletlenszerű (400, 1200); poc = 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; } 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; hang (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija+8) if (rx24) {rx2 = -50; ry2 = -50; hang (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija+8) if (rx34) {rx3 = -50; ry3 = -50; hang (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija+8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; hang (9, 100, 100); zivoti = zivoti-1; } if (rx4 <1) {ispaljeno = 0; rx4 = 200;} if (zivoti == 0) go = 1; } if (go == 1) {if (zivoti == 0) {tone (9, 200, 300); késleltetés (300); hangszín (9, 250, 200); késleltetés (200); hang (9, 300, 300); késleltetés (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (FEHÉR); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("score:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("szint:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("time (s):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {tone (9, 280, 300); késleltetés (300); hangszín (9, 250, 200); késleltetés (200); hang (9, 370, 300); késleltetés (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; menj = 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 () {// Olvassa el az 1.1V -os referenciát az AVcc -vel // állítsa be a hivatkozást Vcc -re, és a mérést a belső 1.1V -os referenciára #ha definiált (_ AVR_ATmega32U4_) || meghatározott (_ AVR_ATmega1280_) || meghatározott (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif definiálva (_AVR_ATtiny24_) || meghatározott (_ AVR_ATtiny44_) || meghatározott (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif definiálva (_AVR_ATtiny25_) || meghatározott (_ AVR_ATtiny45_) || meghatározott (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif késleltetés (2); // Várja meg, amíg a Vref rendezi az ADCSRA | = _BV (ADSC); // A konverzió elindítása közben (bit_is_set (ADCSRA, ADSC)); // uint8_t low = ADCL; // először az ADCL -t kell olvasni - ezután zárolja az ADCH -t uint8_t high = ADCH; // mindkettő feloldása hosszú eredmény = (magas << 8) | alacsony; eredmény = 1125300L / eredmény; // Vcc kiszámítása (mV -ban); 1125300 = 1,1*1023*1000 visszatérési eredmény; // Vcc millivoltokban} void beep (int note, int duration) {// Hanglejátszás a buzzerPin hangon (9, hang, időtartam); késleltetés (időtartam); noTone (9); késleltetés (50); }
4. lépés: Élvezze !
Gratulálunk ? végül sikerült, ha tetszett akkor iratkozz fel a youtube csatornámra
Ajánlott:
Lego hordozható játékkonzol űrtámadással: 4 lépés
Lego hordozható játékkonzol űrtámadással: Gondolt már arra, hogy játékfejlesztő lesz, és saját játékkonzolt épít, amelyet útközben is játszhat? Lego bricksa Mini-Calliope (ezen a webhelyen lehet megrendelni: https://calliope.cc/en) és némi készség
DIY kézi játékkonzol a RetroPie használatával: 7 lépés
DIY kézi játékkonzol a RetroPie használatával: Nézze meg a fenti videót, hogy jobban megértse ezt a projektet. Bírság. Itt az ideje, hogy elkezdje! Először is a RetroPie -t fogjuk használni. Így két lehetőség áll előttünk. Ha már telepítettük a Raspbian -t az SD -kártyánkra, akkor telepíthetjük a RetroP -t
DIY Raspberry Pi Zero kézi játékkonzol: 6 lépés (képekkel)
DIY Raspberry Pi Zero kézi játékkonzol: Ebben a projektben megmutatom, hogyan használtam egy Raspberry Pi Zero, NiMH akkumulátorokat, egy házi túlterhelés elleni védelmi áramkört, egy visszapillantó LCD-t és egy audioerősítőt egy kézi játékkonzol létrehozásához, amely képes játszani retro játékok. Lássunk neki
ESP32 kézi játékkonzol: 21 lépés (képekkel)
ESP32 kézi játékkonzol: Ez az oktatóanyag bemutatja, hogyan kell ESP32 és ATtiny861 segítségével NES emulátor játékkonzolt készíteni
Kézi Recalbox játékkonzol 2.2 TFT használatával: 6 lépés
Kézi Recalbox játékkonzol 2.2 TFT használatával: Utasítások a kézi újrahívható játékkonzol barkácsolásához 2,2”-os TFT LCD kijelzőn, valamint egy Raspberry Pi 0 W és GPIO gomb segítségével. Ezt a YouTube -videót megtekintheti a lépések teljes bemutatása érdekében: A. Szerezd meg az összes alkatrészt.B. Forrasztja össze az alkatrészeket