![Направи си игрална конзола с помощта на Arduino: 4 стъпки Направи си игрална конзола с помощта на Arduino: 4 стъпки](https://i.howwhatproduce.com/images/001/image-2784-11-j.webp)
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57
![Image Image](https://i.howwhatproduce.com/images/001/image-2784-13-j.webp)
![](https://i.ytimg.com/vi/swgvl7hp-tA/hqdefault.jpg)
В този урок ще ви покажа, че как можете да направите игрална конзола, използвайки Arduino nano. Така че, ако искате да видите подробно видео за него, проверете го в моя канал в YouTube
Консумативи
Ако купувате от тези връзки, това ще ми помогне да ви дам още проекти
1) ARDUINO NANO2) OLED ДИСПЛЕЙ 3) ПУТЕТЕ БУТОНИ 4) ЖИВИ
Стъпка 1: Запояване на всички компоненти
![Наслади се!!! Наслади се!!!](https://i.howwhatproduce.com/images/001/image-2784-14-j.webp)
Така че, след като получите всички компоненти, трябва да запоите всички компоненти, както е показано на тази електрическа схема
Стъпка 2: Подредете всички неща на места
След запояване всичко подредете всички компоненти по този начин, за да му придадете хубав вид
Стъпка 3: Програмиране
И така, накрая, след като изпълните всички стъпки правилно, е време да качите кода по -долу в Arduino
#включва
#include #include #include #include // #include #define OLED_RESET 4 Adafruit_SSD1306 дисплей (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, 0x7F, 0xF, 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, 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, 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, 0xBFA, 0x,, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 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, 0x00, 0x0B, 0x90, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x00, 0x10, 0x0 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00, 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, 0xF0, 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, буря, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (БЯЛ); display.setCursor (65, 14); display.println ("xWing"); display.setFont (); display.setCursor (65, 17); display.setTextSize (0); display.println ("vs"); display.setCursor (0, 0); плаваща волтаза = readVcc ()/1000; display.println (voltaza);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println ("Смърт"); display.setFont (); display.setCursor (65, 42); display.println ("звезда"); display.setTextSize (0); display.setCursor (65, 55); display.println ("от VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); звуков сигнал (а, 500); звуков сигнал (а, 500); звуков сигнал (а, 500); звуков сигнал (f, 350); звуков сигнал (cH, 150); звуков сигнал (а, 500); звуков сигнал (f, 350); звуков сигнал (cH, 150); звуков сигнал (а, 650); забавяне (500); забавяне (500); } int metx = 0; int mety = 0; int съществува = 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; // скорост на куршума 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 ниво = 1; int център = 95; unsigned long pocetno = 0; без знак дълго избрано = 0; без подпис дълго в момента = 0; беззначно дълго нивоврие = 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 (); избрано = произволно (400, 1200); poc = 1; } в момента = millis (); // ниво, ако ((текущо ниво)> 50000) {ниво = текущо; ниво = ниво+1; brzina = brzina+1; // brizna neprijateljevog metka if (ниво % 2 == 0) {bkugle = bkugle+1; promjer = promjer-1; } найманя = найманя-50; najveca = najveca-50; } if ((избрано+начално) 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) съществува = 0; if (smjer == 0) {nep = nep+bkugle;} else {nep = nep-bkugle;} if (nep> = (64-promjer)) smjer = 1; if (nep = nep-promjer && mety (center-promjer) && metx = pozicija-8 && ry <= pozicija+8) if (rx4) {rx = 95; ry = -50; тон (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija+8) if (rx24) {rx2 = -50; ry2 = -50; тон (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija+8) if (rx34) {rx3 = -50; ry3 = -50; тон (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija+8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; тон (9, 100, 100); zivoti = zivoti-1; } if (rx4 <1) {ispaljeno = 0; rx4 = 200;} if (zivoti == 0) go = 1; } if (go == 1) {if (zivoti == 0) {тон (9, 200, 300); забавяне (300); тон (9, 250, 200); забавяне (200); тон (9, 300, 300); забавяне (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (БЯЛ); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("резултат:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("ниво:"); display.setCursor (44, 40); display.println (ниво); display.setCursor (7, 50); display.println ("време (и):"); display.setCursor (60, 50); display.println (в момента/1000); display.display (); if (digitalRead (3) == 0) {тон (9, 280, 300); забавяне (300); тон (9, 250, 200); забавяне (200); тон (9, 370, 300); забавяне (300); отново (); }}} void отново () {metx = 0; mety = 0; съществува = 0; nep = 8; smjer = 0; go = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; bodovi = 0; скорост = 3; // brizna neprijateljevog metka bkugle = 1; найманя = 600; najveca = 1200; диаметър = 12; rx4 = 95; ry4 = 0; zivoti = 5; poc = 0; ispaljeno = 0; ниво = 1; pocetno = 0; избрано = 0; за момента = 0; нивоврие = 0; } long readVcc () {// Прочетете 1,1V справка срещу AVcc // задайте препратката към Vcc и измерването към вътрешната 1,1V справка #ако е дефиниран (_ AVR_ATmega32U4_) || дефиниран (_ AVR_ATmega1280_) || дефиниран (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif дефиниран (_AVR_ATtiny24_) || дефиниран (_ AVR_ATtiny44_) || дефиниран (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif дефиниран (_AVR_ATtiny25_) || дефиниран (_ AVR_ATtiny45_) || дефиниран (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif забавяне (2); // Изчакайте Vref да уреди ADCSRA | = _BV (ADSC); // Стартиране на преобразуването while (bit_is_set (ADCSRA, ADSC)); // измерване uint8_t ниско = ADCL; // първо трябва да прочете ADCL - след това заключва ADCH uint8_t high = ADCH; // отключва двата резултата = (високо << 8) | ниско; резултат = 1125300L / резултат; // Изчисляване на Vcc (в mV); 1125300 = 1,1*1023*1000 резултат на връщане; // Vcc в миливолта} анулиране на звуков сигнал (int бележка, продължителност на int) {// Тон на възпроизвеждане на зумерPin тон (9, бележка, продължителност); забавяне (продължителност); noTone (9); забавяне (50); }
Стъпка 4: Насладете се !
Честито ? най -накрая успяхте, така че ако ви хареса, абонирайте се за канала ми в youtube
Препоръчано:
Преносима игрална конзола Lego с космически нашественици: 4 стъпки
![Преносима игрална конзола Lego с космически нашественици: 4 стъпки Преносима игрална конзола Lego с космически нашественици: 4 стъпки](https://i.howwhatproduce.com/images/002/image-4864-j.webp)
Преносима конзола за игри Lego с Space Invaders: Мислили ли сте някога да бъдете разработчик на игри и да създадете своя собствена конзола за игри, която да играете в движение? Всичко, от което се нуждаете, е малко време, хардуер Lego bricksa Mini-Calliope (може да се поръча на този уебсайт https://calliope.cc/bg) и някои умения
Минимална ретро игрална конзола ATBOY: 5 стъпки
![Минимална ретро игрална конзола ATBOY: 5 стъпки Минимална ретро игрална конзола ATBOY: 5 стъпки](https://i.howwhatproduce.com/images/002/image-3688-14-j.webp)
ATBOY Minimal Retro Gaming Console: Малка настройка, подобна на ретро конзола, базирана на ATtiny85 x 0,96 OLED за игра на космически нашественици, тетрис и т.н
Направете ръчна игрална конзола с помощта на RetroPie: 7 стъпки
![Направете ръчна игрална конзола с помощта на RetroPie: 7 стъпки Направете ръчна игрална конзола с помощта на RetroPie: 7 стъпки](https://i.howwhatproduce.com/images/002/image-3922-j.webp)
DIY Handheld Game Console Използване на RetroPie: Гледайте горното видео, за да разберете по -добре този проект. Глоба. Време е да започнете! Първо, ще използваме RetroPie. Това ни оставя с две възможности. Ако вече сме инсталирали Raspbian на нашата SD карта, тогава можем да инсталираме RetroP
Ръчна игрална конзола за Raspberry Pi Zero: 6 стъпки (със снимки)
![Ръчна игрална конзола за Raspberry Pi Zero: 6 стъпки (със снимки) Ръчна игрална конзола за Raspberry Pi Zero: 6 стъпки (със снимки)](https://i.howwhatproduce.com/images/002/image-5450-4-j.webp)
DIY Raspberry Pi Zero Handheld Game Console: В този проект ще ви покажа как съм използвал Raspberry Pi Zero, NiMH батерии, домашно създадена схема за защита от претоварване, LCD задно виждане и аудио усилвател, за да създам ръчна конзола за игри, която да може да играе ретро игри. Да започваме
ESP32 Ръчна игрална конзола: 21 стъпки (със снимки)
![ESP32 Ръчна игрална конзола: 21 стъпки (със снимки) ESP32 Ръчна игрална конзола: 21 стъпки (със снимки)](https://i.howwhatproduce.com/images/002/image-5588-j.webp)
ESP32 Handheld Game Console: Тези инструкции показват как да използвате ESP32 и ATtiny861 за изграждане на NES емулатор на конзола за игри