
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:00


Dalam tutorial ini saya akan menunjukkan kepada anda bahawa bagaimana anda boleh membuat konsol permainan menggunakan Arduino nano. Oleh itu, jika anda ingin melihat video terperinci di atasnya, lihatlah di saluran youtube saya
Bekalan
Sekiranya anda membeli dari pautan ini, ia akan membantu saya memberi anda lebih banyak projek
1) ARDUINO NANO2) TAMPILAN OLED3) Tombol PUSH4) WIRES
Langkah 1: Memateri Semua Komponen

Oleh itu, setelah mendapatkan semua komponen, anda harus menyolder semua komponen seperti yang ditunjukkan dalam rajah litar ini
Langkah 2: Susun Semua Perkara di Tempat
Setelah menyolder semuanya susun semua komponen seperti ini untuk memberikan penampilan yang cantik
Langkah 3: Pengaturcaraan
Jadi, akhirnya setelah mengikuti semua langkah dengan betul sudah tiba masanya untuk memuat naik kod di bawah ini ke Arduino
#sertakan
#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, 0x7, 0F7, 0F, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xB, 0xBF, 0xBF, 0xBF, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 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, 0x00, 0x0, 0x00, 0x0 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0xA, 0xA, 0xA, 0xA, 0xA 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x 0xF8, 0x00, 0x00}; batal persediaan () {pinMode (3, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); pinMode (11, INPUT_PULLUP); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); paparan.display (); display.clearDisplay (); display.setTextSize (0); display.drawBitmap (6, 11, ribut, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (PUTIH); 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 ("Kematian"); display.setFont (); display.setCursor (65, 42); display.println ("bintang"); display.setTextSize (0); display.setCursor (65, 55); display.println ("oleh VRAJ"); display.setCursor (65, 20); paparan.display (); display.setFont (); bip (a, 500); bip (a, 500); bip (a, 500); bip (f, 350); bip (cH, 150); bip (a, 500); bip (f, 350); bip (cH, 150); bip (a, 650); kelewatan (500); kelewatan (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; // kelajuan inti peluru = 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; pocetno panjang yang tidak ditandatangani = 0; odabrano panjang yang tidak ditandatangani = 0; trenutno panjang yang tidak ditandatangani = 0; nivovrije panjang yang tidak ditandatangani = 0; int poz = 30; gelung void () {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); jika (poc == 0) {pocetno = millis (); odabrano = rawak (400, 1200); poc = 1; } trenutno = millis (); // nivoi jika ((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; } jika ((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;} lain {nep = nep-bkugle;} jika (nep> = (64-promjer)) smjer = 1; jika (nep = nep-promjer && mety (centar-promjer) && metx = pozicija-8 && ry <= pozicija + 8) jika (rx4) {rx = 95; ry = -50; nada (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija + 8) jika (rx24) {rx2 = -50; ry2 = -50; nada (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija + 8) jika (rx34) {rx3 = -50; ry3 = -50; nada (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija + 8) jika (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; nada (9, 100, 100); zivoti = zivoti-1; } jika (rx4 <1) {ispaljeno = 0; rx4 = 200;} jika (zivoti == 0) pergi = 1; } if (go == 1) {if (zivoti == 0) {nada (9, 200, 300); kelewatan (300); nada (9, 250, 200); kelewatan (200); nada (9, 300, 300); kelewatan (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (PUTIH); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("skor:"); display.setCursor (44, 30); display.println (bodovi); display.setCursor (7, 40); display.println ("tahap:"); display.setCursor (44, 40); display.println (nivo); display.setCursor (7, 50); display.println ("time (s):"); display.setCursor (60, 50); display.println (trenutno / 1000); paparan.display (); if (digitalRead (3) == 0) {nada (9, 280, 300); kelewatan (300); nada (9, 250, 200); kelewatan (200); nada (9, 370, 300); kelewatan (300); ponovo (); }}} batal ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; pergi = 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; } readVcc panjang () {// Baca rujukan 1.1V terhadap AVcc // tetapkan rujukan ke Vcc dan pengukuran ke rujukan 1.1V dalaman #jika ditentukan (_ AVR_ATmega32U4_) || ditakrifkan (_ AVR_ATmega1280_) || ditakrifkan (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif ditentukan (_AVR_ATtiny24_) || ditakrifkan (_ AVR_ATtiny44_) || ditakrifkan (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif ditentukan (_AVR_ATtiny25_) || ditakrifkan (_ AVR_ATtiny45_) || ditakrifkan (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #else ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif kelewatan (2); // Tunggu Vref menyelesaikan ADCSRA | = _BV (ADSC); // Mulakan penukaran sementara (bit_is_set (ADCSRA, ADSC)); // mengukur uint8_t rendah = ADCL; // mesti membaca ADCL terlebih dahulu - kemudian mengunci ADCH uint8_t tinggi = ADCH; // membuka kedua hasil panjang = (tinggi << 8) | rendah; hasil = 1125300L / hasil; // Kira Vcc (dalam mV); 1125300 = 1.1 * 1023 * 1000 hasil pulangan; // Vcc dalam milivolt} bip kosong (int not, int duration) {// Mainkan nada pada nada buzzerPin (9, nota, tempoh); kelewatan (tempoh); noTone (9); kelewatan (50); }
Langkah 4: Nikmati !
Tahniah? anda akhirnya berjaya jadi jika anda menyukainya maka langganlah saluran youtube saya
Disyorkan:
Konsol Permainan Genggam DIY Menggunakan RetroPie: 7 Langkah

Konsol Permainan Genggam DIY Menggunakan RetroPie: Tonton video di atas untuk memahami projek ini dengan lebih baik. Baik. Sudah tiba masanya untuk anda memulakan! Pertama sekali, kami akan menggunakan RetroPie. Ini memberi kita dua pilihan. Sekiranya kita sudah memasang Raspbian pada kad SD kita, maka kita boleh memasang RetroP
Buat Konsol Permainan Menggunakan Raspberry Pi Anda !: 6 Langkah

Buat Konsol Permainan Menggunakan Raspberry Pi Anda !: Adakah anda ingin bermain permainan retro tanpa membayar konsol lama yang mahal? Anda boleh melakukannya dengan Raspberry Pi. Raspberry Pi adalah " komputer bersaiz kad kredit " yang mampu melakukan banyak perkara yang menarik. Terdapat banyak jenis yang berbeza
Pengawal Permainan DIY Berasaskan Arduino - Pengawal Permainan Arduino PS2 - Bermain Tekken Dengan Gamepad Arduino DIY: 7 Langkah

Pengawal Permainan DIY Berasaskan Arduino | Pengawal Permainan Arduino PS2 | Bermain Tekken Dengan Gamepad Arduino DIY: Hai kawan-kawan, bermain permainan selalu menyeronokkan tetapi bermain dengan permainan peribadi DIY Controller anda lebih menggembirakan. Oleh itu, kami akan menjadikan Pengawal permainan menggunakan arduino pro micro dalam arahan ini
Konsol Permainan Recalbox Genggam Menggunakan 2.2 TFT: 6 Langkah

Konsol Permainan Recalbox Genggam Menggunakan 2.2 TFT: Arahan untuk DIY konsol permainan recalbox genggam menggunakan butang 2.2 "TFT LCD dan butang Raspberry Pi 0 W dan GPIO. Anda boleh melihat video youtube ini untuk demonstrasi penuh mengenai langkah-langkah yang terlibat: A. Dapatkan semua bahagian.B. Padankan bahagian bersama
Konsol Permainan Mini Ardubaby Dengan 500 Permainan: 10 Langkah

Ardubaby Mini Game Console Dengan 500 Permainan: Kredit kepada pencipta (Kevin Bates), Arduboy adalah konsol permainan 8 bit yang sangat berjaya. Terdapat beribu-ribu permainan yang ditulis oleh penggemar yang membagikannya secara bebas di forum komuniti Arduboy sehingga lebih banyak orang dapat belajar bagaimana membuat kod. Perisian