INHOUDSOPGAWE:

DIY spelkonsole met behulp van Arduino: 4 stappe
DIY spelkonsole met behulp van Arduino: 4 stappe

Video: DIY spelkonsole met behulp van Arduino: 4 stappe

Video: DIY spelkonsole met behulp van Arduino: 4 stappe
Video: Как управлять приводом с помощью Arduino - Robojax 2024, November
Anonim
Image
Image

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

Geniet dit !!!
Geniet dit !!!

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: