![Игровая консоль своими руками с использованием Arduino: 4 шага Игровая консоль своими руками с использованием Arduino: 4 шага](https://i.howwhatproduce.com/images/001/image-2784-11-j.webp)
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04
![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 NANO 2) 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 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, 0xFFC, 0xFF, 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, 0x00x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 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, 0x0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1F, 0xFA, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x06, 0x80, 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, 0x0F, 0x03 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x00x10, 0x26FC 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, 0x6x, 0xA0, 0xA0 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0x00, 0x00x, 0x00F0, 0x00F0 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 ("против"); display.setCursor (0, 0); float voltaza = 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 ("от ВРАЙ"); display.setCursor (65, 20); display.display (); display.setFont (); beep (a, 500); beep (a, 500); beep (a, 500); beep (f, 350); звуковой сигнал (cH, 150); beep (a, 500); beep (f, 350); звуковой сигнал (cH, 150); beep (a, 650); задержка (500); задержка (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; // скорость пули 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; беззнаковый длинный odabrano = 0; беззнаковое длинное тренутно = 0; unsigned long 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); если (poc == 0) {pocetno = millis (); odabrano = случайный (400, 1200); poc = 1; } тренутно = millis (); // nivoi if ((trenutno-nivovrije)> 50000) {nivovrije = trenutno; ниво = ниво + 1; брзина = брзина + 1; // brizna neprijateljevog metka if (nivo% 2 == 0) {bkugle = bkugle + 1; promjer = promjer-1; } najmanja = najmanja-50; najveca = najveca-50; } если ((odabrano + pocetno) 0) {display.drawCircle (rx, ry, 2, 1); rx = rx-brzina;} если (ispaljeno> 1) {display.drawCircle (rx2, ry2, 1, 1); rx2 = rx2-brzina;} если (ispaljeno> 2) {display.drawCircle (rx3, ry3, 4, 1); rx3 = rx3-brzina;} если (ispaljeno> 3) {display.drawCircle (rx4, ry4, 2, 1); rx4 = rx4-brzina;} если (digitalRead (12) == 0 && poz> = 2) {poz = poz-2;} if (digitalRead (11) == 0 && poz128) postoji = 0; если (smjer == 0) {nep = nep + bkugle;} else {nep = nep-bkugle;} если (nep> = (64-promjer)) smjer = 1; if (nep = nep-promjer && mety (centar-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; } если (rx4 <1) {ispaljeno = 0; rx4 = 200;} если (zivoti == 0) go = 1; } если (перейти == 1) {если (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 («ИГРА ЗАКОНЧЕНА!»); display.setTextSize (1); display.setCursor (7, 30); display.println ("оценка:"); display.setCursor (44, 30); display.println (бодови); 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 (); если (digitalRead (3) == 0) {тон (9, 280, 300); задержка (300); тон (9, 250, 200); задержка (200); тон (9, 370, 300); задержка (300); поново (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; неп = 8; smjer = 0; go = 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; тренутно = 0; nivovrije = 0; } long readVcc () {// Считываем опорное напряжение 1,1 В относительно AVcc // устанавливаем опорное значение Vcc, а измерение - внутреннее опорное напряжение 1,1 В, определенное #if (_ AVR_ATmega32U4_) || определено (_ AVR_ATmega1280_) || определено (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif defined (_AVR_ATtiny24_) || определено (_ AVR_ATtiny44_) || определено (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif defined (_AVR_ATtiny25_) || определено (_ AVR_ATtiny45_) || определено (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif delay (2); // Ждем, пока Vref установится ADCSRA | = _BV (ADSC); // Запускаем преобразование while (bit_is_set (ADCSRA, ADSC)); // измерение uint8_t low = ADCL; // сначала необходимо прочитать ADCL - затем он блокирует ADCH uint8_t high = ADCH; // разблокирует оба long result = (high << 8) | низкий; результат = 1125300л / результат; // Вычислить Vcc (в мВ); 1125300 = 1,1 * 1023 * 1000 возвращаемый результат; // Vcc в милливольтах} void beep (int note, int duration) {// Воспроизвести звук на buzzerPin tone (9, note, duration); задержка (продолжительность); noTone (9); задержка (50); }
Шаг 4: Наслаждайтесь !
Поздравления? наконец-то ты сделал это так, если тебе понравилось, то подписывайся на мой канал на YouTube
Рекомендуемые:
Портативная игровая консоль Lego с Space Invaders: 4 шага
![Портативная игровая консоль Lego с Space Invaders: 4 шага Портативная игровая консоль Lego с Space Invaders: 4 шага](https://i.howwhatproduce.com/images/002/image-4864-j.webp)
Портативная игровая консоль Lego с Space Invaders: вы когда-нибудь думали о том, чтобы стать разработчиком игр и создать собственную игровую консоль, в которую можно играть на ходу? Все, что вам нужно, это немного времени, оборудование Lego bricksa Mini-Calliope (можно заказать на этом сайте https://calliope.cc/en) и некоторые навыки
Портативная игровая консоль своими руками с использованием RetroPie: 7 шагов
![Портативная игровая консоль своими руками с использованием RetroPie: 7 шагов Портативная игровая консоль своими руками с использованием RetroPie: 7 шагов](https://i.howwhatproduce.com/images/002/image-3922-j.webp)
Портативная игровая консоль DIY с использованием RetroPie: посмотрите видео выше, чтобы лучше понять этот проект. Отлично. Пора начать! Прежде всего, мы собираемся использовать RetroPie. Это оставляет нам два варианта. Если мы уже установили Raspbian на нашу SD-карту, мы можем установить RetroP
Еще одна игровая консоль в стиле ретро ATtiny85: 4 шага
![Еще одна игровая консоль в стиле ретро ATtiny85: 4 шага Еще одна игровая консоль в стиле ретро ATtiny85: 4 шага](https://i.howwhatproduce.com/images/002/image-5823-j.webp)
Просто еще одна игровая консоль в стиле ретро ATtiny85: небольшая ретро-консольная установка, основанная на OLED ATtiny85 x 0,96 для игры в космические захватчики, тетрис и т. Д
Raspberry Pi Smart TV и игровая консоль: 4 шага
![Raspberry Pi Smart TV и игровая консоль: 4 шага Raspberry Pi Smart TV и игровая консоль: 4 шага](https://i.howwhatproduce.com/images/009/image-25486-j.webp)
Raspberry Pi Smart TV и игровая консоль: у вас дома валяется не-смарт-телевизор или вы думаете о покупке Chromecast, Firestick или, возможно, игровой консоли? Давайте сделаем его сами. Мы будем выполнять двойную загрузку на Raspberry Pi с Lakka и OSMC. Lakka для эмуляции игр и OSMC для видео
Портативная игровая консоль Recalbox с использованием TFT 2.2: 6 шагов
![Портативная игровая консоль Recalbox с использованием TFT 2.2: 6 шагов Портативная игровая консоль Recalbox с использованием TFT 2.2: 6 шагов](https://i.howwhatproduce.com/images/004/image-9199-18-j.webp)
Портативная игровая консоль Recalbox с использованием TFT 2.2: Инструкции по сборке портативной игровой консоли Recalbox с ЖК-дисплеем TFT 2,2 дюйма и кнопками Raspberry Pi 0 W и GPIO. Вы можете просмотреть это видео на YouTube, чтобы полностью продемонстрировать все необходимые шаги: A. Получите все детали B. Спаяйте детали вместе