
Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08


V tej vadnici vam bom pokazal, kako lahko z igralno konzolo Arduino nano naredite igralno konzolo. Če si želite ogledati podroben videoposnetek, si ga oglejte na mojem youtube kanalu
Zaloge
Če kupujete na teh povezavah, mi boste pomagali dati več projektov
1) ARDUINO NANO2) OLED ZASLON 3) POKRITI GUMBE 4) ŽICE
1. korak: Spajkanje vseh komponent

Torej, ko dobite vse komponente, morate spajkati vse komponente, kot je prikazano na tem vezju
2. korak: Vse stvari razporedite po mestih
Po spajkanju vse sestavite tako, da dobi lep videz
3. korak: programiranje
Torej, končno po pravilnem upoštevanju vseh korakov je čas, da spodnjo kodo naložite v Arduino
#vključi
#include #include #include #include // #include #define OLED_RESET 4 Zaslon 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, 0xF, 0xF, 0x7F, 0xF, 0xFF, 0x7F, 0xF, 0xF, 0x7F, 0xF, 0xF, 0x7F, 0xF, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; const unsigned char PROGMEM nevihta = {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, 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, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBFA, 0x,, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x0, 0x0, 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, 0x0C, 0x90, 0x00, 0x0B, 0x90, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x00, 0x10, 0x0 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00, 0x0 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0xA0 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 0x00, 0x00 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 (BELO); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("vs"); display.setCursor (0, 0); plavajoča voltaža = readVcc ()/1000; display.println (voltaža);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println ("Smrt"); display.setFont (); display.setCursor (65, 42); display.println ("zvezda"); display.setTextSize (0); display.setCursor (65, 55); display.println ("avtor VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); pisk (a, 500); pisk (a, 500); pisk (a, 500); pisk (f, 350); pisk (cH, 150); pisk (a, 500); pisk (f, 350); pisk (cH, 150); pisk (a, 650); zamuda (500); zamuda (500); } int metx = 0; int mety = 0; int obstaja = 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 hitrost = 3; // hitrost krogle int bkugle = 1; int najmanja = 600; int najveca = 1200; int premer = 10; int rx4 = 95; int ry4 = 0; int zivoti = 5; int poc = 0; int ispaljeno = 0; int nivo = 1; int center = 95; brez podpisa dolgo pocetno = 0; brez podpisa dolgo izbrano = 0; brez podpisa dolgo trenutno = 0; nepodpisano dolgo 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 (); izbrano = naključno (400, 1200); poc = 1; } trenutno = millis (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; nivo = nivo+1; hitrost = hitrost+1; // brizna neprijateljevog metka if (nivo % 2 == 0) {bkugle = bkugle+1; premer = premer-1; } najmanja = najmanja-50; najveca = najveca-50; } if ((izbrano+začetno) 0) {display.drawCircle (rx, ry, 2, 1); rx = rx-hitrost;} if (ispaljeno> 1) {display.drawCircle (rx2, ry2, 1, 1); rx2 = rx2-hitrost;} if (ispaljeno> 2) {display.drawCircle (rx3, ry3, 4, 1); rx3 = rx3-hitrost;} if (ispaljeno> 3) {display.drawCircle (rx4, ry4, 2, 1); rx4 = rx4-hitrost;} if (digitalRead (12) == 0 && poz> = 2) {poz = poz-2;} if (digitalRead (11) == 0 && poz128) obstaja = 0; if (smer == 0) {nep = nep+bkugle;} else {nep = nep-bkugle;} if (nep> = (64-premer)) smer = 1; if (nep = nep-premer && mety (center-premer) && 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) {ton (9, 200, 300); zamuda (300); ton (9, 250, 200); zamuda (200); ton (9, 300, 300); zamuda (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (BELO); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("rezultat:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("raven:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("čas (-i):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {ton (9, 280, 300); zamuda (300); ton (9, 250, 200); zamuda (200); ton (9, 370, 300); zamuda (300); ponovno (); }}} void ponovno () {metx = 0; mety = 0; obstaja = 0; nep = 8; smer = 0; go = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; bodovi = 0; hitrost = 3; // brizna neprijateljevog metka bkugle = 1; najmanja = 600; najveca = 1200; premer = 12; rx4 = 95; ry4 = 0; zivoti = 5; poc = 0; ispaljeno = 0; nivo = 1; pocetno = 0; izbrano = 0; trenutno = 0; nivovrije = 0; } long readVcc () {// Preberite referenco 1.1V proti AVcc // sklic nastavite na Vcc, meritev pa na interno referenco 1.1V #if je definirano (_ AVR_ATmega32U4_) || definirano (_ AVR_ATmega1280_) || definirano (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif definiran (_AVR_ATtiny24_) || opredeljeno (_ AVR_ATtiny44_) || definirano (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif definiran (_AVR_ATtiny25_) || opredeljeno (_ AVR_ATtiny45_) || definirano (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif zakasnitev (2); // Počakajte, da se Vref poravna ADCSRA | = _BV (ADSC); // Začni pretvorbo while (bit_is_set (ADCSRA, ADSC)); // merjenje uint8_t nizko = ADCL; // najprej prebrati ADCL - potem zaklene ADCH uint8_t visoko = ADCH; // odklene oba dolga rezultata = (visoko << 8) | nizek; rezultat = 1125300L / rezultat; // Izračunaj Vcc (v mV); 1125300 = 1,1*1023*1000 rezultat vračila; // Vcc v milivoltih} void beep (int note, int duration) {// Predvajaj ton na zvočnikuPin ton (9, note, duration); zamuda (trajanje); noTone (9); zamuda (50); }
4. korak: Uživajte !!
Čestitamo? končno vam je uspelo, če se vam zdi všeč, se naročite na moj youtube kanal
Priporočena:
Prenosna igralna konzola Lego z vesoljskimi vsiljivci: 4 koraki

Prenosna igralna konzola Lego s Space Invaders: Ste kdaj pomislili, da bi bili razvijalec iger in ustvarili svojo igralno konzolo, ki bi jo lahko igrali na poti? Potrebujete le nekaj časa, strojne opreme Lego bricksa Mini-Calliope (lahko jo naročite na tem spletnem mestu https://calliope.cc/sl) in nekaj spretnosti
Ročna igralna konzola DIY z uporabo RetroPie: 7 korakov

Ročna igralna konzola DIY z uporabo RetroPie: Oglejte si zgornji video, če želite bolje razumeti ta projekt. V redu. Čas je, da začnete! Najprej bomo uporabili RetroPie. To nam daje dve možnosti. Če smo Raspbian že namestili na kartico SD, lahko namestimo RetroP
Samo še ena igralna konzola ATtiny85 Retro: 4 koraki

Samo še ena igralna konzola ATtiny85 Retro: Majhna nastavitev, podobna retro konzoli, ki temelji na ATtiny85 x 0,96 OLED za igranje vesoljskih napadalcev, tetrisa itd
Smart TV in igralna konzola Raspberry Pi: 4 koraki

Pametna televizija in igralna konzola Raspberry Pi: Ali imate po vaši hiši nepametni televizor ali razmišljate o nakupu Chromecasta, Firesticka ali morda igralne konzole? Naredimo eno sami. Naše malinovo pi bomo dvojno zagnali z Lakko in OSMC. Lakka za posnemanje iger in OSMC za video
Ročna igralna konzola Recalbox z uporabo 2.2 TFT: 6 korakov

Ročna igralna konzola Recalbox z uporabo 2.2 TFT: Navodila za DIY ročne vmesne igralne konzole z uporabo 2,2 -palčnega TFT LCD -ja in gumbov Raspberry Pi 0 W in GPIO. Ta videoposnetek na YouTubu si lahko ogledate za popoln prikaz korakov: A. Pridobite vse dele.B. Spajate dele skupaj