Daftar Isi:

Konsol Game DIY Menggunakan Arduino: 4 Langkah
Konsol Game DIY Menggunakan Arduino: 4 Langkah

Video: Konsol Game DIY Menggunakan Arduino: 4 Langkah

Video: Konsol Game DIY Menggunakan Arduino: 4 Langkah
Video: Merakit Mini PC Touch Screen Support Arduino LattePanda 2024, November
Anonim
Image
Image

Dalam tutorial ini saya akan menunjukkan kepada Anda bagaimana Anda bisa membuat konsol game menggunakan Arduino nano. Jadi jika Anda ingin melihat video detailnya, lihat di saluran youtube saya

Perlengkapan

Jika Anda membeli dari tautan ini, itu akan membantu saya memberi Anda lebih banyak proyek

1) ARDUINO NANO2) TAMPILAN OLED3) TOMBOL PUSH4) KABEL

Langkah 1: Menyolder Semua Komponen

Menikmati!!!
Menikmati!!!

Jadi, setelah mendapatkan semua komponen Anda harus menyolder semua komponen seperti yang ditunjukkan pada diagram rangkaian ini

Langkah 2: Atur Semua Hal di Tempat

Setelah menyolder semuanya atur semua komponen seperti ini agar terlihat bagus

Langkah 3: Pemrograman

Jadi, akhirnya setelah mengikuti semua langkah dengan benar saatnya untuk mengunggah kode di bawah ini ke Arduino

#termasuk

#include #include #include #include //#include #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); const int c = 261; konstanta int d = 294; const int e = 329; const int f = 349; konstanta int g = 391; const int gS = 415; konstanta int = 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; konstanta 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, 0xFF, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00 }; const unsigned char PROGMEM badai = { 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, 0x30, 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, 0xFC, 0x1F, 0xF, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x001, 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, 0x1F 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x00, 0x00, 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 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0xA00, 0x80, 0x80 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF00, 0x00, 0x 0xF8, 0x00, 0x00 }; void setup() { pinMode(3, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); pinMode(11, INPUT_PULLUP); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); tampilan.tampilan(); tampilan.clearDisplay(); tampilan.setTextSize(0); display.drawBitmap(6, 11, badai, 48, 48, 1); display.setFont(&FreeSans9pt7b); display.setTextColor(PUTIH); display.setCursor(65, 14); display.println("xWing"); tampilan.setFont(); display.setCursor(65, 17); tampilan.setTextSize(0); display.println("vs"); display.setCursor(0, 0); float voltaza=bacaVcc()/1000; display.println(voltaza);; display.setFont(&FreeSans9pt7b); display.setCursor(65, 39); display.println("Kematian"); tampilan.setFont(); display.setCursor(65, 42); display.println("bintang"); tampilan.setTextSize(0); display.setCursor(65, 55); display.println("oleh VRAJ"); display.setCursor(65, 20); tampilan.tampilan(); tampilan.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); penundaan (500); penundaan (500); } int metx=0; int mety=0; int postoji=0; int nep=8; int smjer=0; int pergi=0; intrx=95; int ry=0; int rx2=95; int ry2=0; int rx3=95; int ry3=0; int bodovi=0; int brzina=3; //kecepatan peluru 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; pocetno panjang yang tidak ditandatangani=0; odabrano panjang tanpa tanda=0; trenutno panjang yang tidak ditandatangani=0; nivovrije panjang yang tidak ditandatangani=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=milis(); odabrano= acak(400, 1200); poc=1; } trenutno=milis(); //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; } if((odabrano+pocetno)0) { tampilan.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; nada (9, 100, 100); zivoti=zivoti-1; } if(ry2>=pozicija-8 && ry2<=pozicija+8) if(rx24) { rx2=-50; ry2=-50; nada (9, 100, 100); zivoti=zivoti-1; } if(ry3>=pozicija-8 && ry3<=pozicija+8) if(rx34) { rx3=-50; ry3=-50; nada (9, 100, 100); zivoti=zivoti-1; } if(ry4>=pozicija-8 && ry4<=pozicija+8) if(rx44) { rx4=200; ry4=-50; ispaljeno=0; nada (9, 100, 100); zivoti=zivoti-1; } if(rx4<1){ ispaljeno=0; rx4=200;} jika(zivoti==0) pergi=1; } jika(pergi==1) { jika(zivoti==0){ nada(9, 200, 300); penundaan (300); nada (9, 250, 200); penundaan (200); nada (9, 300, 300); penundaan (300); zivoti=5; } tampilan.clearDisplay(); tampilan.setFont(); display.setTextSize(2); display.setTextColor(PUTIH); display.setCursor(7, 10); display.println("PERMAINAN SELESAI!"); display.setTextSize(1); display.setCursor(7, 30); display.println("nilai:"); display.setCursor(44, 30); display.println(bodovi); display.setCursor(7, 40); display.println("tingkat:"); display.setCursor(44, 40); tampilan.println(nivo); display.setCursor(7, 50); display.println("waktu:"); display.setCursor(60, 50); display.println(trenutno/1000); tampilan.tampilan(); if(digitalRead(3)==0) { tone(9, 280, 300); penundaan (300); nada (9, 250, 200); penundaan (200); nada (9, 370, 300); penundaan (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; } long readVcc() { // Baca referensi 1.1V terhadap AVcc // setel referensi ke Vcc dan pengukuran ke referensi 1.1V internal #jika didefinisikan(_AVR_ATmega32U4_) || didefinisikan(_AVR_ATmega1280_) || didefinisikan(_AVR_ATmega2560_) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif didefinisikan (_AVR_ATtiny24_) || didefinisikan(_AVR_ATtiny44_) || didefinisikan(_AVR_ATtiny84_) ADMUX = _BV(MUX5) | _BV(MUX0); #elif didefinisikan (_AVR_ATtiny25_) || didefinisikan(_AVR_ATtiny45_) || didefinisikan(_AVR_ATtiny85_) ADMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif penundaan (2); // Tunggu Vref untuk menyelesaikan ADCSRA |= _BV(ADSC); // Mulai konversi while (bit_is_set(ADCSRA, ADSC)); // mengukur uint8_t rendah = ADCL; // harus membaca ADCL terlebih dahulu - kemudian mengunci ADCH uint8_t high = ADCH; // membuka kedua hasil panjang = (tinggi<<8) | rendah; hasil = 1125300L / hasil; // Hitung Vcc (dalam mV); 1125300 = 1,1*1023*1000 hasil pengembalian; // Vcc dalam milivolt } void beep(not note, int duration) { //Memutar nada pada nada buzzerPin (9, note, durasi); penundaan (durasi); tidakNada(9); penundaan(50); }

Langkah 4: Nikmati!

Selamat ? Anda akhirnya berhasil jadi jika Anda menyukainya maka berlangganan saluran youtube saya

Direkomendasikan: