Sisukord:

DIY mängukonsool Arduino abil: 4 sammu
DIY mängukonsool Arduino abil: 4 sammu

Video: DIY mängukonsool Arduino abil: 4 sammu

Video: DIY mängukonsool Arduino abil: 4 sammu
Video: How to use TM1637 4 digits seven segment display with Arduino 2024, November
Anonim
Image
Image

Selles õpetuses näitan teile, kuidas saate Arduino nano abil mängukonsooli teha. Nii et kui soovite selle kohta üksikasjalikku videot näha, siis vaadake seda minu youtube'i kanalil

Tarvikud

Kui ostate sellelt lingilt, aitab see mul rohkem projekte pakkuda

1) ARDUINO NANO2) OLED -NÄITUS3) PUSH -NUPUD

Samm: kõigi komponentide jootmine

Naudi !!!
Naudi !!!

Niisiis, pärast kõigi komponentide hankimist peate kõik komponendid jootma, nagu on näidatud selles skeemis

Samm: korraldage kõik asjad kohtadesse

Pärast kõike jootmist korraldage kõik komponendid niimoodi, et anda sellele kena välimus

3. samm: programmeerimine

Niisiis, lõpuks pärast kõigi toimingute nõuetekohast järgimist on aeg laadida allolev kood Arduinosse

#kaasake

#include #include #include #include // #include #define OLED_RESET 4 Adafruit_SSD1306 kuva (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, 0xF3, 0xFF, 0xFF, 0xFx, 0xF3, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; const unsigned char PROGMEM torm = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 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, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF0, 0xFF, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x06, 0x00, 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, 0x0x, 0x0x 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x26, 0x 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00 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, 0x0x, 0x08 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, torm, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (VALGE); 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 ("Surm"); display.setFont (); display.setCursor (65, 42); display.println ("täht"); display.setTextSize (0); display.setCursor (65, 55); display.println ("poolt VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); piiks (a, 500); piiks (a, 500); piiks (a, 500); piiks (f, 350); piiks (cH, 150); piiks (a, 500); piiks (f, 350); piiks (cH, 150); piiks (a, 650); viivitus (500); viivitus (500); } int metx = 0; int mety = 0; int postoji = 0; int nep = 8; int smjer = 0; int minna = 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; // kuuli kiirus 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 keskus = 95; allkirjata pikk pocetno = 0; allkirjastamata pikk odabrano = 0; allkirjastamata pikk trenutno = 0; allkirjastamata pikk 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); kui (poc == 0) {pocetno = millis (); odabrano = juhuslik (400, 1200); poc = 1; } trenutno = millis (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; nivo = nivo+1; brzina = brzina+1; // brizna neprijateljevog metka if (nivo % 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;} 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; 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; } kui (rx4 <1) {ispaljeno = 0; rx4 = 200;} if (zivoti == 0) go = 1; } kui (mine == 1) {kui (zivoti == 0) {toon (9, 200, 300); viivitus (300); toon (9, 250, 200); viivitus (200); toon (9, 300, 300); viivitus (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (VALGE); display.setCursor (7, 10); display.println ("MÄNG LÕPPENUD!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("skoor:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("tase:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("aeg (id):"); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {tone (9, 280, 300); viivitus (300); toon (9, 250, 200); viivitus (200); toon (9, 370, 300); viivitus (300); ponovo (); }}} tühine ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; mine = 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; nivo = 1; pocetno = 0; odabrano = 0; trenutno = 0; nivovrije = 0; } long readVcc () {// Loe 1.1V võrdlust AVcc vastu // määrake viide Vcc -le ja mõõtmine sisemisele 1.1V viitele #kui see on määratletud (_ AVR_ATmega32U4_) || määratletud (_ AVR_ATmega1280_) || määratletud (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif määratletud (_AVR_ATtiny24_) || määratletud (_ AVR_ATtiny44_) || määratletud (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif määratletud (_AVR_ATtiny25_) || määratletud (_ AVR_ATtiny45_) || määratletud (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif viivitus (2); // Oota, kuni Vref lahendab ADCSRA | = _BV (ADSC); // Alusta teisendamist samas (bit_is_set (ADCSRA, ADSC)); // mõõtmine uint8_t madal = ADCL; // kõigepealt tuleb lugeda ADCL - see lukustab seejärel ADCH uint8_t high = ADCH; // avab mõlemad pikad tulemused = (kõrge << 8) | madal; tulemus = 1125300L / tulemus; // Vcc arvutamine (mV); 1125300 = 1,1*1023*1000 tagastamise tulemus; // Vcc millivoltides} tühine piiks (int märkus, int kestus) {// Esita toon buzzerPin toonil (9, noot, kestus); viivitus (kestus); noTone (9); viivitus (50); }

Samm: nautige !

Palju õnne? lõpuks tegite selle nii, et kui teile meeldis, siis tellige minu youtube'i kanal

Soovitan: