INHOUDSOPGAWE:
- Voorrade
- Stap 1: soldeer al die komponente
- Stap 2: Rangskik al die dinge op plekke
- Stap 3: Programmering
- Stap 4: Geniet !
Video: DIY spelkonsole met behulp van Arduino: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
In hierdie handleiding gaan ek u wys hoe u 'n spelkonsole kan maak met behulp van Arduino nano. Dus, as u gedetailleerde video daaroor wil sien, kyk dan op my youtube -kanaal
Voorrade
As u by hierdie skakels koop, sal dit my help om meer projekte te gee
1) ARDUINO NANO2) OLED DISPLAY3) DRUKKNOPPE 4) DRAADE
Stap 1: soldeer al die komponente
Nadat u al die komponente gekry het, moet u al die komponente soldeer soos in hierdie stroombaan -diagram getoon
Stap 2: Rangskik al die dinge op plekke
Na alles soldeer, rangskik al die komponente soos volg om dit 'n mooi voorkoms te gee
Stap 3: Programmering
Uiteindelik, nadat u al die stappe behoorlik gevolg het, is dit tyd om die onderstaande kode na Arduino op te laai
#insluit
#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 unsigned char PROGMEM dioda16 = {0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, 0x,, 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, 0x0,, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0, 0x0,, 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, 0x1F, 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, 0xB 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 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, 0xB0, 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}; ongeldige opstelling () {pinMode (3, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); pinMode (11, INPUT_PULLUP); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); vertoon.display (); display.clearDisplay (); display.setTextSize (0); display.drawBitmap (6, 11, storm, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (WIT); 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 ("dood"); display.setFont (); display.setCursor (65, 42); display.println ("ster"); display.setTextSize (0); display.setCursor (65, 55); display.println ("deur VRAJ"); display.setCursor (65, 20); vertoon.display (); display.setFont (); piep (a, 500); piep (a, 500); piep (a, 500); piep (f, 350); piep (cH, 150); piep (a, 500); piep (f, 350); piep (cH, 150); piep (a, 650); vertraging (500); vertraging (500); } int metx = 0; int mety = 0; int postoji = 0; int nep = 8; int smjer = 0; int gaan = 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; // spoed van bullet 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 vlak = 1; int sentre = 95; ongetekende lang pocetno = 0; ongetekende lang odabrano = 0; ongetekende lang trenutno = 0; ongetekende lang nivovrije = 0; int poz = 30; leemte -lus () {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); as (poc == 0) {pocetno = millis (); odabrano = ewekansig (400, 1200); poc = 1; } trenutno = millis (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; vlak = vlak+1; brzina = brzina+1; // brizna neprijateljevog metka if (vlak % 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;} anders {nep = nep-bkugle;} if (nep> = (64-promjer)) smjer = 1; as (nep = nep-promjer && mety (centar-promjer) && metx = pozicija-8 && ry <= pozicija+8) if (rx4) {rx = 95; ry = -50; toon (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija+8) if (rx24) {rx2 = -50; ry2 = -50; toon (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija+8) if (rx34) {rx3 = -50; ry3 = -50; toon (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija+8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; toon (9, 100, 100); zivoti = zivoti-1; } as (rx4 <1) {ispaljeno = 0; rx4 = 200;} as (zivoti == 0) gaan = 1; } if (go == 1) {if (zivoti == 0) {toon (9, 200, 300); vertraging (300); toon (9, 250, 200); vertraging (200); toon (9, 300, 300); vertraging (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (WIT); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("telling:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("vlak:"); display.setCursor (44, 40); display.println (vlak); display.setCursor (7, 50); display.println ("tyd (e):"); display.setCursor (60, 50); display.println (trenutno/1000); vertoon.display (); as (digitalRead (3) == 0) {toon (9, 280, 300); vertraging (300); toon (9, 250, 200); vertraging (200); toon (9, 370, 300); vertraging (300); ponovo (); }}} leegte ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; gaan = 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; vlak = 1; pocetno = 0; odabrano = 0; trenutno = 0; nivovrije = 0; } lang readVcc () {// Lees 1.1V verwysing teen AVcc // stel die verwysing na Vcc en die meting op die interne 1.1V verwysing #as gedefinieer (_ AVR_ATmega32U4_) || gedefinieer (_ AVR_ATmega1280_) || gedefinieer (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif gedefinieer (_AVR_ATtiny24_) || gedefinieer (_ AVR_ATtiny44_) || gedefinieer (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif gedefinieer (_AVR_ATtiny25_) || gedefinieer (_ AVR_ATtiny45_) || gedefinieer (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif vertraging (2); // Wag totdat Vref ADCSRA | = _BV (ADSC) regstel; // Begin omskakeling terwyl (bit_is_set (ADCSRA, ADSC)); // meet uint8_t laag = ADCL; // moet eers ADCL lees - dit sluit dan ADCH uint8_t hoog = ADCH; // ontsluit albei lang resultate = (hoog << 8) | laag; resultaat = 1125300L / resultaat; // Bereken Vcc (in mV); 1125300 = 1,1*1023*1000 opbrengsresultaat; // Vcc in millivolts} leeg piep (int noot, int duur) {// Speel toon op buzzerPin toon (9, noot, duur); vertraging (duur); noTone (9); vertraging (50); }
Stap 4: Geniet !
Baie geluk ? U het dit uiteindelik gemaak, as u daarvan hou, teken dan in op my YouTube -kanaal
Aanbeveel:
Handgemaakte spelkonsole met behulp van RetroPie: 7 stappe
Handgemaakte spelkonsole met behulp van RetroPie: kyk na die video hierbo om hierdie projek beter te verstaan. Goed. Dit is tyd om aan die gang te kom! Eerstens gaan ons RetroPie gebruik. Dit laat ons met twee opsies. As ons reeds Raspbian op ons SD -kaart geïnstalleer het, kan ons RetroP installeer
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Monitor versnelling met behulp van Raspberry Pi en AIS328DQTR met behulp van Python: 6 stappe
Monitering van versnelling met behulp van Raspberry Pi en AIS328DQTR Gebruik van Python: Versnelling is eindig, volgens ek volgens sommige wette van die fisika.- Terry Riley 'n Jagluiperd gebruik ongelooflike versnelling en vinnige spoedveranderinge wanneer hy jaag. Die vinnigste wesens aan wal gebruik af en toe sy hoogste tempo om prooi te vang. Die
Retro -spelkonsole (N64 -mod) met KODI: 7 stappe (met foto's)
Retro -spelkonsole (N64 Mod) Met KODI: Om retro -speletjies op ou skoolkonsoles te speel, is baie lekker, maar om die individuele konsoles te koop, en al die speletjies wat daarmee gepaard gaan, is te omslagtig en duur! Om nog maar te praat van as u 'n kollege/universiteitstudent is en voor die aand woonstelle verhuis
Hoe om van 0 tot 99 te tel met behulp van 8051 mikrobeheerder met 7 segmentweergawe: 5 stappe (met foto's)
Hoe om van 0 tot 99 te tel Met behulp van 8051 mikrobeheerder met 7 -segmentweergawe: Hallo almal, in hierdie tutoriaal gaan ons u vertel hoe om van 0 tot 99 te tel met twee 7 -segment -skerms