
Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04


În acest tutorial vă voi arăta cum puteți crea o consolă de jocuri folosind Arduino nano. Deci, dacă doriți să vedeți videoclipuri detaliate pe acesta, verificați-l pe canalul meu de pe YouTube
Provizii
Dacă cumpărați din aceste linkuri, mă va ajuta să vă ofer mai multe proiecte
1) ARDUINO NANO2) AFIȘARE OLED3) BUTOANE DE ÎNAPOI 4) SIRURI
Pasul 1: lipirea tuturor componentelor

Deci, după ce obțineți toate componentele, trebuie să lipiți toate componentele, așa cum se arată în această diagramă a circuitului
Pasul 2: Aranjați toate lucrurile din locuri
După ce lipiți totul, aranjați toate componentele astfel, pentru a da un aspect frumos
Pasul 3: Programare
Deci, în sfârșit, după ce ați urmat corect toți pașii, este timpul să încărcați codul de mai jos pe Arduino
#include
#include #include #include #include // # include #define OLED_RESET 4 Afișaj Adafruit_SSD1306 (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, 0xFF, 0x3, 0x3, 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, 0x7F, 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, 0x, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1x, 0xF, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x0x, 0x0x,, 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, 0x0, 0x0 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x 0, 0x00, 0x 0, 0 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0x00, 0x00 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0x0x, 0xAx, 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xFx, 0xFx, 0xFx 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, furtună, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (ALB); 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 ("Moartea"); display.setFont (); display.setCursor (65, 42); display.println („stea”); display.setTextSize (0); display.setCursor (65, 55); display.println ("de VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); bip (a, 500); bip (a, 500); bip (a, 500); bip (f, 350); bip (cH, 150); bip (a, 500); bip (f, 350); bip (cH, 150); bip (a, 650); întârziere (500); întârziere (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; // viteza glonțului 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; pocetno lung nesemnat = 0; nesemnat odabrano lung = 0; unsigned long trenutno = 0; unsigned long nivovrije = 0; int poz = 30; bucla void () {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 = aleatoriu (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; ton (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija + 8) if (rx24) {rx2 = -50; ry2 = -50; ton (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija + 8) if (rx34) {rx3 = -50; ry3 = -50; ton (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija + 8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; ton (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); întârziere (300); ton (9, 250, 200); întârziere (200); ton (9, 300, 300); întârziere (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (ALB); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("scor:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("nivel:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("ora (timpul):"); display.setCursor (60, 50); display.println (trenutno / 1000); display.display (); if (digitalRead (3) == 0) {ton (9, 280, 300); întârziere (300); ton (9, 250, 200); întârziere (200); ton (9, 370, 300); întârziere (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; go = 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 () {// Citiți referința 1.1V împotriva AVcc // setați referința la Vcc și măsurarea la referința internă 1.1V #if definit (_ AVR_ATmega32U4_) || definit (_ AVR_ATmega1280_) || definit (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif definit (_AVR_ATtiny24_) || definit (_ AVR_ATtiny44_) || definit (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif definit (_AVR_ATtiny25_) || definit (_ AVR_ATtiny45_) || definit (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif întârziere (2); // Așteptați ca Vref să rezolve ADCSRA | = _BV (ADSC); // Începeți conversia în timp ce (bit_is_set (ADCSRA, ADSC)); // măsurarea uint8_t low = ADCL; // trebuie mai întâi să citească ADCL - apoi blochează ADCH uint8_t high = ADCH; // deblochează ambele rezultate lungi = (mare << 8) | scăzut; rezultat = 1125300L / rezultat; // Calculați Vcc (în mV); 1125300 = 1,1 * 1023 * 1000 rezultat returnat; // Vcc în milivolți} bip nul (notă int, durată int) {// Ton de redare pe buzzerPin ton (9, notă, durată); întârziere (durata); noTone (9); întârziere (50); }
Pasul 4: Bucurați-vă !
Felicitări? în sfârșit ai reușit, așa că, dacă ți-a plăcut, abonează-te la canalul meu de YouTube
Recomandat:
Raspberry Pi Smart TV și Consola pentru jocuri: 4 pași

Raspberry Pi Smart TV și Consolă de jocuri: Aveți un televizor neinteligent care se află în jurul casei dvs. sau vă gândiți să cumpărați un Chromecast, Firestick sau poate o consolă de jocuri? Să facem una singură. Vom porni dual cu zmeura noastră cu Lakka și OSMC. Lakka pentru emularea jocurilor și OSMC pentru video
Consola de jocuri Pi Tourer din 1963: 9 pași (cu imagini)

Consola de jocuri Pi Tourer din 1963: Aceasta este o mașină de radio Sky Tourer din 1963 pe care am transformat-o într-o consolă de joc retro portabilă la îndemână. Are un Raspberry Pi 3 încorporat, cu 6 butoane arcade și un joystick care controlează acele sprite vintage RetroPie printr-o placă de control Picade
Cum să încărcați jocuri pe Arduboy și 500 de jocuri pe Flash-cart: 8 pași

Cum să încărcați jocuri pe Arduboy și 500 de jocuri pe Flash-cart: Am făcut niște Arduboy de casă cu memorie Serial Flash care pot stoca maxim 500 de jocuri pentru a juca pe drum. Sper să vă împărtășesc cum să încărcați jocuri pe acesta, inclusiv cum să stocați jocuri în memoria flash serială și să creați propriul pachet de joc consolidat
Consola Arduino VGA cu cinci jocuri: 4 pași

Consola Arduino VGA cu cinci jocuri: În Instructables-urile mele anterioare, am reprodus versiuni simplificate ale unora dintre cele mai populare jocuri arcade clasice, prin intermediul unui Arduino gol și a altor câteva componente. Mai târziu, mi-am alăturat cinci dintre ei într-o singură schiță. Aici voi arăta
Simulator de jocuri SmartPhone - Joacă jocuri Windows folosind controlul gesturilor IMU, accelerometru, giroscop, magnetometru: 5 pași

Simulator de jocuri SmartPhone - Joacă jocuri Windows folosind controlul gesturilor IMU, accelerometru, giroscop, magnetometru: Sprijină acest proiect: https://www.paypal.me/vslcreations donând la coduri open-source & sprijin pentru dezvoltarea ulterioară