Innehållsförteckning:
- Tillbehör
- Steg 1: Lödning av alla komponenter
- Steg 2: Ordna alla saker på platser
- Steg 3: Programmering
- Steg 4: Njut !!
Video: DIY spelkonsol med Arduino: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
I den här handledningen ska jag visa dig att hur kan du göra en spelkonsol med Arduino nano. Så om du vill se detaljerad video om det, kolla in det på min youtube -kanal
Tillbehör
Om du köper från dessa länkar hjälper det mig att ge dig fler projekt
1) ARDUINO NANO2) OLED -DISPLAY3) PUSH -KNAPPAR4) TRÅDAR
Steg 1: Lödning av alla komponenter
Så, efter att ha fått alla komponenter måste du lödda alla komponenter som visas i detta kretsschema
Steg 2: Ordna alla saker på platser
Efter lödning ordna alla komponenter så här för att ge det ett snyggt utseende
Steg 3: Programmering
Så, äntligen efter att ha följt alla stegen ordentligt är det dags att ladda upp koden nedan till Arduino
#omfatta
#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; 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 osignerad char PROGMEM dioda16 = {0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, 0x00,, 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, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0, 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, 0xBF, 0xFC, 0x1, 0x,, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 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, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x0, 0x00, 0x0, 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, 0xA0, 0x00, 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 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, storm, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (VIT); 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 ("Död"); display.setFont (); display.setCursor (65, 42); display.println ("stjärna"); display.setTextSize (0); display.setCursor (65, 55); display.println ("av VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); pip (a, 500); pip (a, 500); pip (a, 500); pip (f, 350); pip (cH, 150); pip (a, 500); pip (f, 350); pip (cH, 150); pip (a, 650); fördröjning (500); fördröjning (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; // bullet hastighet 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 nivå = 1; int centar = 95; osignerad lång pocetno = 0; osignerad lång odabrano = 0; osignerad lång trenutno = 0; osignerad lång 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); om (poc == 0) {pocetno = millis (); odabrano = slumpmässig (400, 1200); poc = 1; } trenutno = millis (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; nivå = nivå+1; brzina = brzina+1; // brizna neprijateljevog metka if (nivå % 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;} annars {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) {ton (9, 200, 300); fördröjning (300); ton (9, 250, 200); fördröjning (200); ton (9, 300, 300); fördröjning (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (VIT); display.setCursor (7, 10); display.println ("SPEL OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("poäng:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("nivå:"); display.setCursor (44, 40); display.println (nivå); display.setCursor (7, 50); display.println ("tid (er):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {ton (9, 280, 300); fördröjning (300); ton (9, 250, 200); fördröjning (200); ton (9, 370, 300); fördröjning (300); ponovo (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; gå = 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; nivå = 1; pocetno = 0; odabrano = 0; trenutno = 0; nivovrije = 0; } lång readVcc () {// Läs 1.1V -referens mot AVcc // ställ referensen till Vcc och mätningen till den interna 1.1V -referensen #if definierad (_ AVR_ATmega32U4_) || definierad (_ AVR_ATmega1280_) || definierad (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif definierad (_AVR_ATtiny24_) || definierad (_ AVR_ATtiny44_) || definierad (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif definierat (_AVR_ATtiny25_) || definierad (_ AVR_ATtiny45_) || definierad (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif fördröjning (2); // Vänta på att Vref ska lösa ADCSRA | = _BV (ADSC); // Starta konvertering medan (bit_is_set (ADCSRA, ADSC)); // mäta uint8_t lågt = ADCL; // måste läsa ADCL först - det låser sedan ADCH uint8_t högt = ADCH; // låser upp båda långa resultaten = (hög << 8) | låg; resultat = 1125300L / resultat; // Beräkna Vcc (i mV); 1125300 = 1,1*1023*1000 returresultat; // Vcc i millivolt} ogiltigt pip (int not, int varaktighet) {// Spela ton på buzzerPin ton (9, not, varaktighet); fördröjning (varaktighet); noTone (9); fördröjning (50); }
Steg 4: Njut !!
Grattis? du lyckades äntligen så om du gillade det, prenumerera på min youtube -kanal
Rekommenderad:
Lego bärbar spelkonsol med Space Invaders: 4 steg
Lego bärbar spelkonsol med Space Invaders: Har du någonsin tänkt på att vara en spelutvecklare och bygga din egen spelkonsol som du kan spela på språng? Allt du behöver är lite tid, hårdvara Lego bricksa Mini-Calliope (kan beställas på denna webbplats https://calliope.cc/sv) och lite skicklighet
DIY handhållen spelkonsol med RetroPie: 7 steg
DIY handhållen spelkonsol med RetroPie: Titta på videon ovan för att förstå detta projekt bättre. Bra. Det är dags att komma igång! Först och främst kommer vi att använda RetroPie. Detta lämnar oss med två alternativ. Om vi redan har installerat Raspbian på vårt SD -kort kan vi installera RetroP
Gör din egen bärbara retro spelkonsol! som också är en Win10 -surfplatta !: 6 steg (med bilder)
Gör din egen bärbara Retro -spelkonsol! …… som också är en Win10 -surfplatta !: I det här projektet kommer jag att visa dig hur du skapar en bärbar retro -spelkonsol som också kan användas som en Windows 10 -surfplatta. Den kommer att bestå av en 7 " HDMI LCD med pekskärm, en LattePanda SBC, en USB Type C PD power PCB och några fler kompletterande
DIY Raspberry Pi Zero handhållen spelkonsol: 6 steg (med bilder)
DIY Raspberry Pi Zero handhållen spelkonsol: I det här projektet kommer jag att visa dig hur jag använde en Raspberry Pi Zero, NiMH-batterier, en hemlagad överladdningsskyddskrets, en bakre lcd och en ljudförstärkare för att skapa en handhållen spelkonsol som kan spela retro spel. Låt oss börja
Retro spelkonsol (N64 Mod) med KODI: 7 steg (med bilder)
Retro spelkonsol (N64 Mod) Med KODI: Att spela retrospel på gamla skolkonsoler är mycket roligt, men att köpa de enskilda konsolerna och alla spel som följer med är för krångligt och dyrt! För att inte tala om om du är en högskola/universitetsstudent och flyttar lägenheter före