Arduino көмегімен DIY ойын консолі: 4 қадам
Arduino көмегімен DIY ойын консолі: 4 қадам
Anonim
Image
Image

Бұл оқулықта мен сізге Arduino нано көмегімен ойын консолін қалай жасауға болатынын көрсетемін. Сондықтан, егер сіз бұл туралы егжей -тегжейлі бейнені көргіңіз келсе, оны менің youtube каналымнан қараңыз

Жабдықтар

Егер сіз осы сілтемелерден сатып алсаңыз, бұл сізге басқа жобаларды ұсынуға көмектеседі

1) ARDUINO NANO2) OLED дисплейі 3) БАСУ ТҮЙМЕЛЕРІ 4) Сымдар

1 -қадам: барлық компоненттерді дәнекерлеу

Ләззат алыңыз !!!
Ләззат алыңыз !!!

Сонымен, барлық компоненттерді алғаннан кейін сіз барлық схемаларды осы схемада көрсетілгендей дәнекерлеуіңіз керек

2 -қадам: Барлығын орындарына орналастырыңыз

Дәнекерлегеннен кейін, барлық компоненттерді осылайша әдемі көрініс беру үшін реттеңіз

3 -қадам: Бағдарламалау

Сонымен, барлық қадамдарды дұрыс орындағаннан кейін, төмендегі кодты Arduino -ға жүктеу уақыты келді

#қосу

#қосу #қосу #қосу #қосу // #қосу #анықтау 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, 0x7F, 0x1F, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; Const қойылмаған символы PROGMEM дауыл = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 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, 0x00, 0x40, 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, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xBF, 0xBF, 0xFF, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE0, 0xE0, 0x0, 0x70, 0xC2, 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, 0xD0, 0x00 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x07, 0xFC, 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC7, 0xC0 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFA, 0xFF, 0xFF, 0xF7 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1x, 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); float voltaza = readVcc ()/1000; display.println (вольтаза);; 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 (); дыбыстық сигнал (a, 500); дыбыстық сигнал (a, 500); дыбыстық сигнал (a, 500); дыбыстық сигнал (f, 350); дыбыстық сигнал (cH, 150); дыбыстық сигнал (a, 500); дыбыстық сигнал (f, 350); дыбыстық сигнал (cH, 150); дыбыстық сигнал (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; белгісіз ұзын pocetno = 0; белгісіз ұзын odabrano = 0; белгісіз ұзын тренутно = 0; белгісіз ұзын 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 (); адабрано = кездейсоқ (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; } najmanja = 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; тон (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;} 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 («ОЙЫН ӨТТІ!»); 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 (nivo); display.setCursor (7, 50); display.println («уақыт (тар):»); display.setCursor (60, 50); display.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {тонус (9, 280, 300); кешіктіру (300); тон (9, 250, 200); кешіктіру (200); тон (9, 370, 300); кешіктіру (300); поново (); }}} жарамсыз ponovo () {metx = 0; мети = 0; постожи = 0; nep = 8; smjer = 0; бару = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; bodovi = 0; брзина = 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 () {// 1.1cc сілтемесін AVcc қарсы оқу // Vcc сілтемесін және өлшеуді ішкі 1.1V анықтамасына #if анықтаңыз (_ 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); #басқа ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif кідірісі (2); // Vref ADCSRA | = _BV (ADSC) реттелуін күтіңіз; // Түрлендіруді бастау кезінде (bit_is_set (ADCSRA, ADSC)); // uint8_t төмен өлшеу = ADCL; // алдымен ADCL оқу керек - ол содан кейін ADCH құлыптайды uint8_t high = ADCH; // ұзақ нәтиженің екеуін де ашады = (жоғары << 8) | төмен; нәтиже = 1125300L / нәтиже; // Vcc есептеңіз (мВ); 1125300 = 1.1*1023*1000 қайтару нәтижесі; // Милливольтпен Vcc} бос дыбыс сигналы (int note, int duration) {// BuzzerPin тонындағы ойнату үні (9, нота, ұзақтығы); кідіріс (ұзақтығы); noTone (9); кешіктіру (50); }

4 -қадам: ләззат алыңыз !

Құттықтаймыз? Сіз мұны ақырында жасадыңыз, егер сізге ұнаған болса, менің youtube каналыма жазылыңыз

Ұсынылған: