
Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-23 15:05


V tomto tutoriále vám ukážem, ako si môžete vyrobiť hernú konzolu pomocou Arduino nano. Ak teda chcete vidieť podrobné video, pozrite sa na to na mojom kanáli youtube
Zásoby
Ak nakúpite prostredníctvom týchto odkazov, pomôže mi to poskytnúť vám ďalšie projekty
1) ARDUINO NANO2) OLED DISPLEJ
Krok 1: Spájkovanie všetkých komponentov

Po získaní všetkých komponentov teda musíte všetky komponenty spájkovať podľa schémy zapojenia
Krok 2: Usporiadajte všetky veci na miestach
Po spájkovaní všetko usporiadajte všetky súčasti takto, aby to vyzeralo pekne
Krok 3: Programovanie
Takže konečne po správnom vykonaní všetkých krokov je čas nahrať nižšie uvedený kód do Arduina
#zahrnúť
#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; const int f = 349; const int g = 391; const int gS = 415; const int a = 440; const int aS = 455; const int b = 466; konštanta cH = 523; konštanta cSH = 554; konštanta dH = 587; konštanta dSH = 622; konštanta eH = 659; konštanta fH = 698; konšt. int fSH = 740; konšt. int gH = 784; konšt. int gSH = 830; konštanta aH = 880; konšt. nepodpísaný 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, 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, 0x30, 0x, 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, 0xF0, 0x0 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, búrka, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (BIELY); 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 („Smrť“); display.setFont (); display.setCursor (65, 42); display.println („hviezdička“); display.setTextSize (0); display.setCursor (65, 55); display.println ("od VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); pípnutie (a, 500); pípnutie (a, 500); pípnutie (a, 500); pípnutie (f, 350); píp (cH, 150); pípnutie (a, 500); pípnutie (f, 350); píp (cH, 150); pípnutie (a, 650); oneskorenie (500); oneskorenie (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; // rýchlosť 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; nepodpísané dlhé pocetno = 0; nepodpísané dlhé odabrano = 0; nepodpísaný dlhý trenutno = 0; bez znamienka dlhé 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 <= pozíciaja+8) if (rx4) {rx = 95; ry = -50; tón (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozíciaja-8 && ry2 <= pozíciaja+8) if (rx24) {rx2 = -50; ry2 = -50; tón (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozíciaja-8 && ry3 <= pozíciaja+8) if (rx34) {rx3 = -50; ry3 = -50; tón (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozíciaja-8 && ry4 <= pozíciaja+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); oneskorenie (300); tón (9, 250, 200); oneskorenie (200); tón (9, 300, 300); oneskorenie (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (BIELY); 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); oneskorenie (300); tón (9, 250, 200); oneskorenie (200); tón (9, 370, 300); oneskorenie (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; ísť = 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 () {// Načítať referenciu 1,1 V oproti AVcc // nastaviť referenciu na Vcc a meranie na internú referenciu 1,1 V #ak je definovaná (_ AVR_ATmega32U4_) || definované (_ AVR_ATmega1280_) || definované (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif definované (_AVR_ATtiny24_) || definované (_ AVR_ATtiny44_) || definované (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif definované (_AVR_ATtiny25_) || definované (_ AVR_ATtiny45_) || definované (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif oneskorenie (2); // Počkajte, kým Vref vyrovná ADCSRA | = _BV (ADSC); // Spustite konverziu while (bit_is_set (ADCSRA, ADSC)); // meranie nízkeho uint8_t = ADCL; // najskôr si musí prečítať ADCL - potom uzamkne ADCH uint8_t high = ADCH; // odomkne obidva dlhý výsledok = (vysoký << 8) | nízka; výsledok = 1125300L / výsledok; // Vypočítajte Vcc (v mV); 1125300 = 1,1*1023*1000 návratový výsledok; // Vcc v milivoltoch} neplatné pípnutie (int note, int duration) {// Play tone on buzzerPin tone (9, note, duration); oneskorenie (trvanie); noTone (9); oneskorenie (50); }
Krok 4: Užite si to !!
Gratulujem Nakoniec ste to urobili, takže ak sa vám to páčilo, prihláste sa na odber môjho kanála YouTube
Odporúča:
Prenosná herná konzola Lego s vesmírnymi útočníkmi: 4 kroky

Prenosná herná konzola Lego s programom Space Invaders: Uvažovali ste niekedy o tom, že by ste boli vývojárom hier a vytvorili si vlastnú hernú konzolu, ktorú môžete hrať na cestách? Všetko, čo potrebujete, je trocha času, hardware
Len ďalšia retro herná konzola ATtiny85: 4 kroky

Just Another ATtiny85 Retro Gaming Console: Malé retro konzole podobné nastavenie založené na ATtiny85 x 0,96 OLED pre hranie priestoru útočníkov, Tetris, atď
Smart TV a herná konzola Raspberry Pi: 4 kroky

Inteligentná televízia a herná konzola Raspberry Pi: Leží vám doma nejasná televízia alebo zvažujete kúpu Chromecastu, Firesticku alebo možno hernej konzoly? Urobme si sami. Budeme duálne bootovať naše malinové pi s Lakkou a OSMC. Lakka pre emuláciu hier a OSMC pre video
Herná konzola: 4 kroky

Herná konzola: Naozaj jednoduchá herná konzola s podporou ponuky, tetrisu a hada. Bol vyrobený pomocou- dvoch 8x8 štvorcových maticových červených LED bodových modulov74hc595 Drive, ktoré sa nachádzajú tu- jedného STM32F103 Nucleo-64- 4 tlačidiel a 4 odporov- vodičov, chlebovníka, prepojok atď.-
Ručná herná konzola Recalbox využívajúca 2,2 TFT: 6 krokov

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ískajte všetky diely.B. Spájajte diely dohromady