İçindekiler:

Arduino Kullanarak Kendin Yap Oyun Konsolu: 4 Adım
Arduino Kullanarak Kendin Yap Oyun Konsolu: 4 Adım

Video: Arduino Kullanarak Kendin Yap Oyun Konsolu: 4 Adım

Video: Arduino Kullanarak Kendin Yap Oyun Konsolu: 4 Adım
Video: Arduino Nedir? Nasıl Kurulur ve Neler Yapılabilir? #1 2024, Temmuz
Anonim
Image
Image

Bu derste size Arduino nano kullanarak nasıl oyun konsolu yapabileceğinizi göstereceğim. Bu yüzden detaylı videosunu görmek istiyorsanız youtube kanalıma göz atın.

Gereçler

Bu linklerden satın alırsanız size daha fazla proje vermeme yardımcı olacaktır.

1) ARDUINO NANO2) OLED EKRAN3) BUTONLARA BASIN4) TELLER

Adım 1: Tüm Bileşenleri Lehimleme

Eğlence!!!
Eğlence!!!

Bu nedenle, tüm bileşenleri aldıktan sonra, tüm bileşenleri bu devre şemasında gösterildiği gibi lehimlemeniz gerekir.

2. Adım: Her Şeyi Yerlere Yerleştirin

Her şeyi lehimledikten sonra, güzel bir görünüm vermek için tüm bileşenleri bu şekilde düzenleyin.

Adım 3: Programlama

Son olarak, tüm adımları doğru bir şekilde takip ettikten sonra, aşağıdaki kodu Arduino'ya yükleme zamanı geldi.

#Dahil etmek

#include #include #include #include //#include #define OLED_RESET 4 Adafruit_SSD1306 ekran(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; sabit int cH = 523; const int cSH = 554; sabit int dH = 587; const int dSH = 622; const int eH = 659; sabit 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, 0x7x, 0,0xFFx00,, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00 }; const unsigned char PROGMEM fırtınası = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x300, 0x, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x000, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0xE0, 0x00, 0, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBFA, 0xFC, 0x1F, 0xFC, 0x1F, 0x, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x0680, 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, 0x0B, 0x90, 0x7x1, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x00, 0x00, 0,x 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x000, 0x, 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0xA0, 0x80, 0xA0, 0x80, 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 0x00, 0xF0, 0x00, 0 0xF8, 0x00, 0x00 }; geçersiz kurulum() { 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, fırtına, 48, 48, 1); display.setFont(&FreeSans9pt7b); display.setTextColor(BEYAZ); 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("Ölüm"); display.setFont(); display.setCursor(65, 42); display.println("yıldız"); display.setTextSize(0); display.setCursor(65, 55); display.println("VRAJ tarafından"); display.setCursor(65, 20); display.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); gecikme(500); gecikme(500); } int metx=0; int met=0; int postoji=0; int nep=8; int smjer=0; int git=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; // madde işaretinin hızı int bkugle=1; int nejmanja=600; int najveca=1200; int haberci=10; int rx4=95; int ry4=0; int zivoti=5; int poc=0; int ispaljeno=0; int nivo=1; int merkez=95; imzasız uzun pocetno=0; imzasız uzun odabrano=0; imzasız uzun trenutno=0; imzasız uzun 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); if(poc==0){ pocetno=millis(); odabrano= rastgele(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; } nejmanja=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; ton(9, 100, 100); zivoti=zivoti-1; } if(ry2>=pozicija-8 && ry2<=pozicija+8) if(rx24) { rx2=-50; ry2=-50; ton(9, 100, 100); zivoti=zivoti-1; } if(ry3>=pozicija-8 && ry3<=pozicija+8) if(rx34) { rx3=-50; ry3=-50; ton(9, 100, 100); zivoti=zivoti-1; } if(ry4>=pozicija-8 && ry4<=pozicija+8) if(rx44) { rx4=200; ry4=-50; ispaljeno=0; ton(9, 100, 100); zivoti=zivoti-1; } if(rx4<1){ ispaljeno=0; rx4=200;} if(zivoti==0) go=1; } if(go==1) { if(zivoti==0){ ton(9, 200, 300); gecikme(300); ton(9, 250, 200); gecikme(200); ton(9, 300, 300); gecikme(300); zivoti=5; } display.clearDisplay(); display.setFont(); display.setTextSize(2); display.setTextColor(BEYAZ); display.setCursor(7, 10); display.println("OYUN BİTTİ!"); display.setTextSize(1); display.setCursor(7, 30); display.println("puan:"); display.setCursor(44, 30); display.println(bodovi); display.setCursor(7, 40); display.println("seviye:"); display.setCursor(44, 40); display.println(nivo); display.setCursor(7, 50); display.println("zaman(lar):"); display.setCursor(60, 50); display.println(trenutno/1000); display.display(); if(digitalRead(3)==0) { ton(9, 280, 300); gecikme(300); ton(9, 250, 200); gecikme(200); ton(9, 370, 300); gecikme(300); ponovo(); } } } geçersiz ponovo() { metx=0; met=0; postoji=0; nep=8; smjer=0; git=0; rx=95; ry=0; rx2=95; ry2=0; rx3=95; ry3=0; bodovi=0; brzina=3; //brizna neprijateljevog metka bkugle=1; nejmanja=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() { // AVcc'ye karşı 1.1V referansını oku // referansı Vcc'ye ve ölçümü dahili 1.1V referansına ayarlayın #if tanımlanmış(_AVR_ATmega32U4_) || tanımlı(_AVR_ATmega1280_) || tanımlı(_AVR_ATmega2560_) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif tanımlı (_AVR_ATtiny24_) || tanımlı(_AVR_ATtiny44_) || tanımlı(_AVR_ATtiny84_) ADMUX = _BV(MUX5) | _BV(MUX0); #elif tanımlı (_AVR_ATtiny25_) || tanımlı(_AVR_ATtiny45_) || tanımlı(_AVR_ATtiny85_) ADMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif gecikme(2); // Vref'in ADCSRA'yı yerleştirmesini bekleyin |= _BV(ADSC); // Dönüştürmeyi başlat while (bit_is_set(ADCSRA, ADSC)); // ölçüm uint8_t düşük = ADCL; // önce ADCL'yi okumalı - sonra ADCH'yi kilitler uint8_t high = ADCH; // her iki uzun sonucun kilidini açar = (yüksek<<8) | düşük; sonuç = 1125300L / sonuç; // Vcc'yi hesapla (mV cinsinden); 1125300 = 1.1*1023*1000 dönüş sonucu; // Vcc cinsinden milivolt } void bip(int nota, int süre) { //Buzzer'da ton çalPin tonu(9, not, süre); gecikme(süre); tonsuz(9); gecikme(50); }

Adım 4: Keyfini çıkarın!!

Tebrikler ? sonunda başardın, beğendiysen youtube kanalıma abone ol

Önerilen: