Мазмуну:
- Жабдуулар
- 1 -кадам: Бардык компоненттерди ширетүү
- 2 -кадам: Бардык нерселерди жерлерге жайгаштырыңыз
- 3 -кадам: Программалоо
- 4 -кадам: ырахат алыңыз !
Video: DIY оюн консолу Arduino аркылуу: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Бул үйрөткүчтө мен сизге Arduino нано менен оюн консолун кантип жасоону көрсөтөм. Андыктан, эгер сиз ал жөнүндө деталдуу видеону көргүңүз келсе, менин ютуб каналыма кирип көрүңүз
Жабдуулар
Эгерде сиз бул шилтемелерден сатып алсаңыз, анда ал сизге көбүрөөк долбоорлорду берүүгө жардам берет
1) ARDUINO NANO2) OLED DISPLAY3) PUSH BUTTONS 4) WIRES
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, 0x7F, 0x1F, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; const unsigned char PROGMEM бороон = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 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, 0x02, 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, 0xE7, 0xC0, 0x01, 0xE0, 0x0, 0x70,, 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, 0x01 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, 0xC, 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, 0x1F, 0x00, 0x00 0xF8, 0x00, 0x00}; жараксыз орнотуу () {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 (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 ("VRAJ тарабынан"); display.setCursor (65, 20); display.display (); display.setFont (); бип (a, 500); бип (а, 500); бип (а, 500); бип (f, 350); бип (cH, 150); бип (а, 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); if (poc == 0) {pocetno = millis (); odabrano = туш келди (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; } if (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 ("time (s):"); 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 (); }}} von ponovo () {metx = 0; mety = 0; postoji = 0; nep = 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; trenutno = 0; nivovrije = 0; } long readVcc () {// Read 1.1V reference to 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 бийик = ADCH кулпулайт; // эки натыйжаны тең ачат = (жогорку << 8) | төмөн; натыйжа = 1125300L / жыйынтык; // Vccти эсептөө (мВ менен); 1125300 = 1.1*1023*1000 кайтаруу натыйжасы; // Милливольттогу Vcc} боштук сигналы (int note, int duration) {// BuzzerPin тонунда ойнотуу обону (9, нота, узактыгы); кечигүү (узактыгы); noTone (9); кечиктирүү (50); }
4 -кадам: ырахат алыңыз !
Куттуктайм? акыры ушундай кылдыңыз, эгер сизге жакса анда менин ютуб каналыма жазылыңыз
Сунушталууда:
RetroPie колдонуу DIY Handheld оюн консолу: 7 кадам
RetroPie аркылуу DIY Handheld Game Console: Бул долбоорду жакшыраак түшүнүү үчүн жогорудагы видеону көрүңүз. Жакшы. Баштоо убактысы келди! Биринчиден, биз RetroPie колдонобуз. Бул бизге эки жолду калтырат. Эгерде биз Raspbian'ды SD картабызга орнотуп койсок, анда RetroP орното алабыз
DIY Raspberry Pi Zero портативдүү оюн консолу: 6 кадам (сүрөттөр менен)
DIY Raspberry Pi Zero портативдүү оюн консолу: Бул долбоордо мен сизге Raspberry Pi Zero, NiMH батареяларын, үйдө ашыкча агып кетүүдөн коргоо схемасын, арткы экранды жана аудио ампти кантип колдонгонуңузду көрсөтөм. ретро оюндары. Кел, баштайлы
Arduino негизделген DIY оюн контролери - Arduino PS2 оюн контроллери - DIY Arduino Gamepad менен Tekken ойноо: 7 кадам
Arduino негизделген DIY оюн контролери | Arduino PS2 оюн контроллери | DIY Arduino Gamepad менен Tekken ойноо: Саламатсыздарбы балдар, оюндарды ойноо ар дайым кызыктуу, бирок өзүңүздүн DIY колдонмо оюнуңузду башкаруучу менен ойноо алда канча кызыктуу. Ошентип, биз бул инструкцияларда arduino pro micro колдонуп оюн контроллерин жасайбыз
Беш оюн менен Arduino VGA консолу: 4 кадам
Беш оюн менен Arduino VGA консолу: Мурунку көрсөтмөлөрүмдө жылаңач Arduino жана башка бир нече компоненттердин жардамы менен эң популярдуу классикалык аркада оюндарынын жөнөкөйлөтүлгөн версияларын чыгардым. Кийинчерээк мен алардын бешөөнү бир эскизде бириктирдим. Бул жерде мен көрсөтөм
Arduino чөнтөк оюн консолу + A -лабиринт - лабиринт оюну: 6 кадам (сүрөттөр менен)
Arduino чөнтөк оюн консолу + A -лабиринт - лабиринт оюну: Менин биринчи үйрөткүчүмө кош келиңиз! Мен бүгүн сиздер менен бөлүшкүсү келген долбоор бул Arduino лабиринт оюну, ал чөнтөк консолу Arduboy сыяктуу жөндөмдүү жана ушул сыяктуу Arduino негизделген консолу болуп калды. Аны менин (же сиздин) келечектеги оюндарыңыздын жардамы менен жаркырата аласыз