
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48


Այս ձեռնարկում ես ձեզ ցույց կտամ, թե ինչպես կարող եք խաղային վահանակ պատրաստել Arduino nano- ի միջոցով: Այսպիսով, եթե ցանկանում եք դրա մասին մանրամասն տեսանյութ տեսնել, ապա այն դիտեք իմ YouTube ալիքում
Պարագաներ
Եթե գնումներ կատարեք այս հղումներից, դա կօգնի ինձ ձեզ ավելի շատ նախագծեր տալ
1) ARDUINO NANO2) OLED ISՈISԱԴՐՈԹՅՈՆ 3) Սեղմող կոճակներ 4) Մալուխներ
Քայլ 1: Բոլոր բաղադրիչների զոդում

Այսպիսով, բոլոր բաղադրիչները ստանալուց հետո դուք պետք է միացնեք բոլոր բաղադրիչները, ինչպես ցույց է տրված այս սխեմայի սխեմայում
Քայլ 2. Տեղադրեք բոլոր իրերը տեղերում
Soldոդումից հետո ամեն ինչ դասավորեք այսպես ՝ բոլոր բաղադրիչներին, որպեսզի այն ունենա գեղեցիկ տեսք
Քայլ 3: Programրագրավորում
Այսպիսով, վերջապես բոլոր քայլերը պատշաճ կատարելուց հետո ժամանակն է վերբեռնել ստորև նշված կոդը 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 անստորագիր 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, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; const անստորագիր char PROGMEM փոթորիկ = {0x00, 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, 0x30, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7F, 0xff, 0xff, 0xff, 0x00, 0x00, 0xD7, 0xff, 0xff, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1F, 0xFA, 0x80, 0x01, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x06, 0x80, 0x01, 0xE0, 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, 0x7C, 0x03, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x00, 0x00, 0x26, 0x10, 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x1 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xff, 0xff, 0xA0, 0x80, 0x00, 0x6B, 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x0F, 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 կենտրոն = 95; անստորագիր երկար pocetno = 0; անստորագիր երկար odabrano = 0; անստորագիր երկար trenutno = 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 (); 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; եթե (smjer == 0) {nep = nep+bkugle;} այլապես {nep = nep-bkugle;} if (nep> = (64-promjer)) smjer = 1; եթե (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;} եթե (zivoti == 0) գնալ = 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 ("ԽԱAMEԸ ԱՎԱՐՏՎԵ"); display.setTextSize (1); display.setCursor (7, 30); display.println ("հաշիվ:"); display.setCursor (44, 30); ցուցադրում: տպել (բոդովի); 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); պոնովո (); }}} void ponovo () {metx = 0; mety = 0; postoji = 0; nep = 8; smjer = 0; գնալ = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; բոդովի = 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.1V հղումը AVcc- ի դիմաց // հղումը սահմանեք Vcc- ի վրա, իսկ չափումը `ներքին 1.1V հղման #եթե սահմանված է (_ 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 նշում, int տևողություն) {// նվագարկեք ազդանշանի ազդանշանային ազդանշանի վրա (9, նշում, տևողություն); ուշացում (տևողություն); noTone (9); ուշացում (50); }
Քայլ 4: Վայելեք !
Շնորհավո՞ր: վերջապես այդպես արեցիք, եթե ձեզ դուր եկավ, ապա բաժանորդագրվեք իմ youtube ալիքին
Խորհուրդ ենք տալիս:
Lego դյուրակիր խաղային վահանակ ՝ տիեզերական զավթիչներով ՝ 4 քայլ

Lego Portable Gaming Console With Space Invaders. Երբևէ մտածե՞լ եք լինել խաղերի մշակող և կառուցել ձեր սեփական խաղային վահանակը, որը կարող եք անընդհատ խաղալ: Ձեզ անհրաժեշտ է միայն մի քիչ ժամանակ, սարքավորում Lego bricksa Mini-Calliope (կարելի է պատվիրել այս կայքում ՝ https://calliope.cc/hy) և որոշ հմտություններ
ATBOY Minimal Retro խաղային վահանակ ՝ 5 քայլ

ATBOY Minimal Retro Gaming Console. Փոքր ռետրո կոնսոլի նման տեղադրում ՝ հիմնված ATtiny85 x 0.96 OLED- ի շուրջ ՝ տիեզերական զավթիչներին, Tetris- ին և այլն խաղալու համար:
Եվս մեկ ATtiny85 Retro խաղային վահանակ ՝ 4 քայլ

Ուղղակի մեկ այլ ATtiny85 Retro խաղային վահանակ. Փոքր ռետրո կոնսոլի նման կարգավորում ՝ հիմնված ATtiny85 x 0.96 OLED- ի շուրջ ՝ տիեզերական զավթիչներին, Tetris- ին և այլն խաղալու համար:
Ստեղծեք խաղային վահանակ ՝ օգտագործելով ձեր ազնվամորի Pi- ն: 6 քայլ

Ստեղծեք խաղային վահանակ ՝ ձեր Raspberry Pi- ի միջոցով. Դուք կարող եք դա անել Raspberry Pi- ի միջոցով: Raspberry Pi- ն " վարկային քարտի չափի համակարգիչ " որը ունակ է շատ զով բաների: Կան շատ տարբեր տեսակներ
Raspberry Pi Smart TV և խաղային վահանակ ՝ 4 քայլ

Raspberry Pi Smart TV և խաղային վահանակ. Ունե՞ք ոչ խելացի հեռուստացույց, որը ձեր տանը պառկած է կամ մտածում է Chromecast, Firestick կամ գուցե խաղային վահանակ գնելու մասին: Եկեք ինքներս պատրաստենք մեկը: Մենք կրկնակի կբեռնենք մեր ազնվամորու pi- ն Lakka- ի և OSMC- ի հետ: Լակկա խաղերի նմանակման համար և OSMC ՝ տեսանյութերի համար