Sadržaj:

Napravi sam igraću konzolu pomoću Arduina: 4 koraka
Napravi sam igraću konzolu pomoću Arduina: 4 koraka

Video: Napravi sam igraću konzolu pomoću Arduina: 4 koraka

Video: Napravi sam igraću konzolu pomoću Arduina: 4 koraka
Video: Experience PACMAN-RTX like never before: Mind-blowing graphics and gameplay! ☺🎮📱 2024, Decembar
Anonim
Image
Image

U ovom vodiču ću vam pokazati kako možete napraviti igraću konzolu koristeći Arduino nano. Dakle, ako želite vidjeti detaljan video o tome, pogledajte ga na mom youtube kanalu

Supplies

Ako kupujete na ovim linkovima, to će mi pomoći da vam dam više projekata

1) ARDUINO NANO2) OLED ZASLON3) POKRENI TIPKE4) ŽICE

Korak 1: Lemljenje svih komponenti

Uživajte !!!
Uživajte !!!

Dakle, nakon što nabavite sve komponente, morate lemiti sve komponente kako je prikazano na ovoj shemi kola

Korak 2: Rasporedite sve stvari na mjesta

Nakon lemljenja sve rasporedite tako da sve komponente daju lijep izgled

Korak 3: Programiranje

Dakle, konačno, nakon što ste pravilno slijedili sve korake, vrijeme je da postavite donji kod na Arduino

#include

#include #include #include #include // #include #define OLED_RESET 4 Adafruit_SSD1306 ekran (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, 0x7, 0,, 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, 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, 0xBF, 0x,, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 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, 0x0B, 0x90, 0x0, 0x0B, 0x90, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x26, 0x00, 0x00, 0x0 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00, 0x000 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0xA0, 0xA0 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x00, 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, oluja, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (BIJELO); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("vs"); display.setCursor (0, 0); plutajuća voltaža = readVcc ()/1000; display.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println ("Smrt"); display.setFont (); display.setCursor (65, 42); display.println ("zvjezdica"); display.setTextSize (0); display.setCursor (65, 55); display.println ("od VRAJ -a"); display.setCursor (65, 20); display.display (); display.setFont (); bip (a, 500); bip (a, 500); bip (a, 500); zvučni signal (f, 350); zvučni signal (cH, 150); bip (a, 500); zvučni signal (f, 350); zvučni signal (cH, 150); bip (a, 650); kašnjenje (500); kašnjenje (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; // brzina metka 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; unsigned long pocetno = 0; bez potpisa dugo odabrano = 0; unsigned long trenutno = 0; nepotpisani dugi 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 (); odabrano = random (400, 1200); poc = 1; } trenutno = millis (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; nivo = nivo+1; brzina = brzina+1; // brizna neprijateljskog metka if (nivo % 2 == 0) {bkugle = bkugle+1; promjer = promjer-1; } najmanja = najmanja-50; najveca = najveca-50; } if ((odabrano+početno) 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) {ton (9, 200, 300); kašnjenje (300); ton (9, 250, 200); kašnjenje (200); ton (9, 300, 300); kašnjenje (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (BIJELO); display.setCursor (7, 10); display.println ("IGRA JE ZAVRŠENA!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("rezultat:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("nivo:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("vrijeme (i):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {ton (9, 280, 300); kašnjenje (300); ton (9, 250, 200); kašnjenje (200); ton (9, 370, 300); kašnjenje (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 neprijateljskog metka bkugle = 1; najmanja = 600; najveća = 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 () {// Pročitajte 1,1V referencu prema AVcc // postavite referencu na Vcc i mjerenje na internu 1,1 V referencu #ako je definirano (_ AVR_ATmega32U4_) || definirano (_ AVR_ATmega1280_) || definirano (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif defined (_AVR_ATtiny24_) || definirano (_ AVR_ATtiny44_) || definirano (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif defined (_AVR_ATtiny25_) || definirano (_ AVR_ATtiny45_) || definirano (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif delay (2); // Pričekajte da Vref podmiri ADCSRA | = _BV (ADSC); // Pokreni konverziju while (bit_is_set (ADCSRA, ADSC)); // mjerenje uint8_t nisko = ADCL; // mora prvo pročitati ADCL - tada zaključava ADCH uint8_t high = ADCH; // otključava oba dugačka rezultata = (visoko << 8) | niska; rezultat = 1125300L / rezultat; // Izračunaj Vcc (u mV); 1125300 = 1,1*1023*1000 povratni rezultat; // Vcc u milivoltima} void beep (int note, int duration) {// Reproduciraj ton na zujaliciPin ton (9, note, duration); kašnjenje (trajanje); noTone (9); kašnjenje (50); }

Korak 4: Uživajte !

Čestitam? napokon ste uspjeli pa ako vam se svidi pretplatite se na moj youtube kanal

Preporučuje se: