DIY խաղային վահանակ ՝ օգտագործելով Arduino: 4 քայլ
DIY խաղային վահանակ ՝ օգտագործելով Arduino: 4 քայլ
Anonim
Image
Image

Այս ձեռնարկում ես ձեզ ցույց կտամ, թե ինչպես կարող եք խաղային վահանակ պատրաստել 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 ալիքին

Խորհուրդ ենք տալիս: