Բովանդակություն:
- Քայլ 1: Բաղադրիչներ, գործիքներ և ռեսուրսներ
- Քայլ 2: Սարքավորման փոփոխում
- Քայլ 3: Թարմացնել GUI- ը
- Քայլ 4: Խաղի կոդը
- Քայլ 5: Մնացած օրենսգիրքը
Video: Lego Mini Memory Game: 5 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Մեկ տարի առաջ, ես գրեցի Instructable- ը Lego Mini Cooper- ում մի փունջ LED- ների տեղադրման մասին: Նորամուծությունը, ինչպիսին որ կար, այն էր, որ LED- ները կարող էին կառավարվել սմարթֆոնով (կամ այդ դեպքում որևէ վեբ դիտարկիչի միջոցով):
Ինչպես ես ջանասիրաբար նկարագրեցի այդ Instructable- ում, այն ժամանակվա ջանքերի մեծ մասը վերաբերում էր Mini- ին էլեկտրալարեր անցկացնելուն `առանց ամբողջը քանդվելու: Ինչ -որ չափով զարմացա, որ Mini- ն հետագայում փրկվեց Կոնեկտիկուտից Տորոնտո ճանապարհորդությունից և այդ ժամանակվանից աշխատում է, քիչ թե շատ:
«Եթե այն չկոտրվեր, նա շտկեց այն մինչև այն», լավագույն դեպքում կլինի իմ էպատաժը, այնպես որ, երբ Mini- ն Սուրբ Christmasննդյան տուն վերադարձավ, Lego Mini 2.0 -ի ժամանակն էր: Ի վերջո, եթե Tesla- ն կարողանա ծրագրային ապահովման թարմացումներն իր մեքենաներին մղել, ապա որքանո՞վ դա կարող է դժվար լինել:
Ես ունեի մի քանի գաղափար.
- Բարելավեք բավականին անհարմար ինտերֆեյսը
- Ավելացրու եղջյուր:
- Բարելավել «ավտոմատ լույսեր» գործառույթը; և, ամենակարևորը
- Ավելացրեք խաղային գործառույթ (նույնիսկ ես հասկացա, որ ձեր հեռախոսով Mini- ի լույսերը միացնելու և անջատելու նորույթը վաղ թե ուշ կփչանա)
Խաղի գործառույթը ամենամեծ խնդիրն էր, ոչ միայն այն պատճառով, որ ինձ համար անմիջապես ակնհայտ չէր, թե ինչպիսի խաղ կարող է լինել: Mini- ն չափազանց փխրուն է խաղը վարելու համար (բացառությամբ, հավանաբար, enենգայի ճնշող տարբերակի): Մեկ այլ խոչընդոտ այն էր, որ ես կյանքում խաղ չեմ ծրագրել:
Մեկ տարվա անպտուղ խորհրդածումից հետո ես պատահաբար հանդիպեցի Հեքսթերի մասին նախագծին, որի ընթացքում Arduino Uno- ն օգտագործվում է 1970 -ականների Սիմոն անունով հիշողության խաղալիք խաղալու համար: Մի խոսքով, Simon սարքը նվագեց լույսերի հաջորդականություն, որոնք այնուհետև նվագարկիչը պետք է հիշեր և նվագարկեր ՝ սեղմելով կոճակները: Յուրաքանչյուր հաջող փուլից հետո հաջորդականությունը մեծանում էր:
Չնայած անհրաժեշտ խաղողի բերքահավաքին, ես իրականում երբեք չէի լսել այս խաղի մասին, և պետք է ասեմ, որ զարմանալի է այն, ինչ անցյալում անցավ զվարճանքի համար: Նույնիսկ ավելի զարմանալի է, որ Simon խաղը դեռ վաճառքում է և հիացական գնահատականներ է հավաքում Amazon- ում: Ակնհայտ է, որ սա պետք է լիներ իմ նպատակներին հարմարվելու գլխավոր թեկնածուն: Ի վերջո, Mini- ն արդեն լույսեր ուներ, ուստի ինձ մնում էր միայն հեռացնել ֆիզիկական կոճակները և օգտվողի մուտքը տրամադրել սմարթֆոնի միջոցով: Theրագրային ապահովման կողմից, հետևաբար, թվում էր, որ սա պարզապես մեծ մասամբ կտրված և կպցնել-աշխատանք է լինելու:
Բայց նախ, ես պետք է որոշ փոքր փոփոխություններ կատարեի սարքավորման մեջ:
Քայլ 1: Բաղադրիչներ, գործիքներ և ռեսուրսներ
Եթե դուք կրկնօրինակում եք այս նախագիծը Lego Mini- ով, ձեզ հարկավոր կլինեն իմ ավելի վաղ Instructable- ում նշված բոլոր իրերը: Միակ լրացուցիչ բանը, որ ձեզ հարկավոր կլինի, պասիվ ազդանշանն է, որն օգտագործվում է եղջյուրի համար և խաղի ընթացքում մի շարք անհանգստացնող ձայներ արձակելու համար (որոնք կարող են անջատվել):
Ինչպես պարզ կդառնա ծրագրակազմը քննարկելիս, խաղի համար Lego Mini օգտագործելու իրական կարիք չկա: Դուք կարող եք օգտագործել մեկ այլ Lego հավաքածու, կամ իսկապես մի փունջ լուսադիոդային տախտակ, որը կցված է ցանկացած ESP8266 զարգացման տախտակին: Որոշ ռելեներ կարող եք օգտագործել նույնիսկ ձեր տան սենյակի լուսավորությունը: Երեխանե՛ր, նախևառաջ հարցրեք ձեր ծնողներին այդ մասին:
Նմանապես, սկզբնական ծրագրի համար թվարկվածներից բացի լրացուցիչ գործիքներ կամ ռեսուրսներ պետք չեն:
Եթե դուք այն մի քանի մարդկանցից եք, ովքեր կարդում են նախագծի բնօրինակը, կիմանաք, որ Lego Mini- ն ի սկզբանե գնվել է որպես նվեր իմ մեծացած դստերը, ով ունի գրեթե նույնական «իսկական» Mini կամ գրեթե նույնական: կարող է տրվել, որ դա նոր Mini է, այլ ոչ թե «Classic»: Որևէ նշանակալից լրացուցիչ բաղադրիչների բացակայությունը այս նոր նախագիծն առավել գրավիչ դարձրեց, քանի որ այն ինձ հնարավորություն կտար արդյունավետ կերպով նորից նվեր տալ Lego Mini 2.0-ը որպես ամանորյա նոր նվեր ՝ առանց որևէ դրամ ծախսելու: Հանճարեղ!
Քայլ 2: Սարքավորման փոփոխում
Նախնական նախագիծը ուներ անհատականորեն վերահսկվող RGB ներքին լուսադիոդային լուսադիոդներ: Սրանք NodeMCU- ի վրա երեք կապում էին սպառվում, որոնք ես օգտագործում էի որպես զարգացման տախտակ: Lego Mini- ի սեփականատիրոջ հետ դիսկրետ խորհրդակցությունից հետո պարզվեց, որ RGB LED- ները թերօգտագործվող գործառույթ էին: Սա կարևոր հետախուզություն էր, որովհետև ինձ անհրաժեշտ էր բզզոցի/եղջյուրի համար քորոց ազատել:
Վերոնշյալ սխեմայի սխեման բուն նախագծից է: Այս նախագծի համար անհրաժեշտ միակ փոփոխությունն այն էր, որ հեռացնեին RGB LED- ները և օգտագործեին երեք ազատված կապում հետևյալ կերպ.
- D1 ազդանշանային ազդանշանի համար (որը նույնպես միացված է անմիջապես 5VDC սնուցման աղբյուրին)
- D7 սպիտակ ինտերիերի LED- ի համար
- D8 այն լուսավորող գունավոր LEDS- ներից մեկի համար, որը ես անվանել եմ «դիսկոտեկ» լույս
Բզզոցն ինքնին կոկիկ կերպով խցկվում է շարժիչի խցիկի տակ, այնպես որ լարերը հետ վերադարձնելը դեպի NodeMCU արագընթաց էր:
Քայլ 3: Թարմացնել GUI- ը
GUI- ի թարմացման առաջին քայլը չորս առանձին վեբ էջերի ստեղծումն էր.
- «Splash screen», որը գործարկվում է ձեր սմարթֆոնի անհատական պատկերակի միջոցով և հղումներ դեպի այլ էջեր
- «Վերահսկում» էջը, որը, լավ, վերահսկում է լույսերը (և այժմ, իհարկե, եղջյուրը)
- «Խաղ» էջը
-
Կարգավորման էջ, որը պարունակում է կազմաձևման ընտրանքներ, ինչպիսիք են ՝
- Ձայնը միացնելը և անջատելը
- Timeամային գոտու սահմանում (Mini- ն ժամանակ է ստանում ինտերնետից, որպեսզի կարողանա ժամին իր լույսերը միացնել համապատասխան ժամին)
- Կարգավորումը, երբ «ավտոմատ լույսերը» միացնեն և անջատեն լուսարձակները ՝ ելնելով շրջակա լույսի մակարդակից
- Բարձր միավորի և բարձր միավորի անվան վերականգնում (պահվում է EEPROM- ում)
Այս կերպ գործառույթները առանձնացնելը շատ ավելի նման ծրագրերի փորձ է ստեղծում: Մի քանի էջ սպասարկելու NodeMCU- ն այս ծրագրի մարտահրավերներից մեկն էր: Մի քանի տարբեր մոտեցումներ փորձելուց հետո ես հանդիպեցի այն կոդը, որը տեսնում եք Arduino- ի հիմնական ուրվագծի 232 -ից 236 -րդ տողերում: Սա հիանալի է աշխատում. Պարզապես ստեղծեք ձեր ինդեքսի ֆայլը, այնուհետև անվանեք հաջորդ էջերի էջ 1, էջ 2 և այլն: այս չափը:
Հաջորդը, ես ստիպված էի աշխատել CSS- ի և Javascript- ի հետ `այնպիսի բան պատրաստելու համար, որը կարծես թե պատկանում էր Lego Mini- ին: Քանի որ ես ոչ մի բանի մասին ոչ մի բանի մասին չգիտեմ, այստեղ շատ գուգլներ էին կատարվում, նախքան այն, ինչից գոհ էի: Ես սկսեցի անամոթաբար CSP ոճով լեգո աղյուսի պատճենումը CodePen- ում այստեղ: Ես նաև ուզում էի հեռանալ կոճակները տեքստով պիտակավորելուց և վերջացնել Icons8- ի պարզ գրաֆիկայի օգտագործմամբ, որոնք կատարյալ էին իմ նպատակների համար: Մնացածը տեղում ընկավ տեղում: Էջերը բավականին լավ են մատուցվում այն բոլոր iPhone- ներում, որոնցում ես դրանք փորձարկել եմ: Հուսով եմ, որ նույնը վերաբերում է նաև Android հեռախոսներին (լավ է թվում աշխատասեղանի Chrome դիտարկիչում):
Քայլ 4: Խաղի կոդը
NodeMCU սերվերի և սմարթֆոնների զննարկչի միջև հաղորդակցությունը կայքերի վեբ կայքերի միջոցով է: Օգտագործողի կողմից կոճակը սեղմելուց հետո դիտարկիչը տեքստային նիշ է ուղարկում NodeMCU- ին, որը համապատասխանում է Mini- ի մեկ կամ մի քանի լուսարձակին: Լրացուցիչ նիշեր են ուղարկվում ՝ խաղի հոսքը վերահսկելու համար: Arduino ծածկագիրն այնուհետև գործողություններ է կատարում ՝ հիմնվելով ստացված կերպարի վրա: Վեբ -տուփի հաղորդակցությունը կարող է կարգավորել միայն երկուական և տեքստային նիշեր, այնպես որ որոշակի փոփոխություններ են անհրաժեշտ ամբողջ թվերի համար (օրինակ ՝ ժամային գոտի):
Ինչպես նշեցի, ես ի սկզբանե կանխատեսել էի, որ կապակցված Hackster նախագծի ծածկագիրը կօգտագործեի հիմնական խաղի գործառույթների համար: Այն, ինչ ես ակնկալում էի, որ տեղի կունենա, այն է, որ խաղացողը կոճակը սեղմելուց հետո լուսավորվի համապատասխան LED- ը, և ծածկագիրը թվայնացնեն: Կարդացեք բոլոր LED- ները `տեսնելու, թե արդյոք ճիշտը լուսավորված է (Hackster նախագիծը ստուգում է կոճակի ֆիզիկական մուտքերը, բայց դա նույն գաղափարն է): Սա ինչ -որ կերպ աշխատեց, բայց ինձ համար դեռ անհասկանալի պատճառներով, ոչ կատարյալ: Theամանակի մոտ 10% -ը Mini- ն ասում էր, որ սխալ կոճակը սեղմված է, երբ, ըստ էության, ճիշտ էր: Ամեն ինչ կարգին թվաց ՝ հիմնվելով այն բանի վրա, ինչ ես տեսնում էի սերիական մոնիտորում և զննարկիչի վահանակում, այնպես որ ես գաղափար չունեմ, թե ինչու դա չաշխատեց:
Սխալների ստուգում մտցնելուց շատ անհաջողություններից հետո ես հրաժարվեցի LED- ի վիճակները կարդալու ամբողջ գաղափարից և ստեղծեցի «պատասխան» զանգված, որը ստուգում է, թե արդյոք ստացված Websocket տեքստը համապատասխանում է «հաջորդականության» զանգվածում պահված ճիշտ քորոցին: նվագում է հիշելու թեթև հաջորդականությունը: Թվում է, թե սա 100% հուսալի է, նույնիսկ եթե իմ կիրառած ձևը մի փոքր թուլամորթ է: Այս մեթոդը մշակելուց հետո ես պատահեցի դրան, ինչը հետաքրքիր ուսումնասիրություն է որոշ թվային կողպեքների աշխատանքի եղանակի և խաղի մեջ օգտագործվող մոտեցման նմանությամբ:
Կոճակների մուտքագրման ժամանակը այժմ մշակվում է Javascript- ով ՝ դիտարկիչի կողմից (կոճակի մուտքերի միջև թույլ եմ տալիս շատ առատաձեռն 10 վայրկյան), և խաղի ընթացքն այժմ ամբողջությամբ վերահսկվում է խաղացողի կողմից, այլ ոչ թե կոդավորված: Displayուցադրումը ներառում է պատուհաններ, որոնք ցույց են տալիս հաջորդ կոճակը սեղմելու համար մնացած ժամանակը և խաղացողի կողմից հաջորդականությունը ճիշտ ներկայացնելուց առաջ մնացած մուտքերի քանակը:
Բարձր գնահատականը պահվում է EEPROM- ում (կամ այն, ինչ EEPROM- ի դեպքում անցնում է ESP8266 աշխարհում): Այս արժեքները կարող են վերականգնվել Set-up էջի միջոցով (վստահ եմ, որ դրա համար կարող են լինել օրինական պատճառներ):
Այս ամենով հանդերձ, ես նորից օգտագործեցի Hackster խաղային ծածկագրի արժանապատիվ մի կտոր, ինչը շատ արագացրեց գործը:
Քայլ 5: Մնացած օրենսգիրքը
Համեմատած Hackster նախագծի կոդի հետ, իմ Arduino էսքիզը հսկայական տեսք ունի, նույնիսկ առանց տվյալների ֆայլերում առկա բոլոր HTML- ի, CSS- ի և Javascript- ի: Բայց էսքիզների հիմնական մասը մի շարք գործառույթներ են, որոնք վերաբերում են հիմնական գործողություններին, ինչպիսիք են սերվերի ստեղծումը և կառավարումը, NTP ժամանակի ստացումը, mDNS- ը, ապահովումը օդային թարմացմամբ, WiFi- ի կառավարումը, SPIFFS ֆայլերի կառավարումը և այլն:
Javascript- ը HTML ֆայլերում առաջին հերթին նախատեսված է վեբ տուփի հաղորդագրությունների (ստացված և ուղարկված) մշակման և GUI- ի ինտերակտիվության բարձրացման համար:
Ինչպես նշեցի, ես ցանկանում էի բարելավել «ավտոմատ լույսեր» գործառույթի գործառույթը, որն օգտագործում է լույսից կախված դիմադրություն NodeMCU- ի միակ անալոգային քորոցի վրա `շրջապատի լույսը հայտնաբերելու և Mini- ի լույսերը միացված մակարդակի վրա (երբ խաղային ռեժիմում չէ) միացնելու համար:, իհարկե). Թեև սա անլուրջ նախագծի անլուրջ հատկություն է, ինձ անհանգստացրեց, որ սկզբնական նախագծում ես կոդով կոդավորված էի միացման շեմը, և որ օգտագործողը ոչ մի կերպ չէր կարող տեսնել, թե ինչպես է գերակշռող լույսի մակարդակը կապված այդ շեմի հետ: Այժմ լուսային մակարդակի ընթերցումը ուղարկվում է Կարգավորման էջ յուրաքանչյուր հինգ վայրկյանը մեկ, և այդ էջում ցուցադրվում են միացման և անջատման ընթացիկ շեմերը (որոնք կարող է կազմաձևվել օգտվողի կողմից): Այսպիսով, աշխատանքը կատարվեց այդ մեկի վրա:
Օ,, գրեթե մոռացել եմ: Կոդն այստեղ GitHub- ում է: Ներբեռնելուց հետո ամբողջ փաթեթը դրեք նոր թղթապանակի մեջ, վերբեռնեք Arduino էսքիզը, այնուհետև տվյալների թղթապանակի բովանդակությունը SPIFFS- ում:
Խորհուրդ ենք տալիս:
«Worlds Simplest» Neuralizer-build (Men in Black Memory Eraser) ՝ 10 քայլ (նկարներով)
«Worlds Simplest» Neuralizer-build (Men in Black Memory Eraser). Դուք ընդամենը մի քանի օրից գնո՞ւմ եք զգեստների երեկույթի, բայց դեռ կոստյում չունե՞ք: Ապա այս կառուցվածքը ձեզ համար է: Արևային ակնոցներով և սև կոստյումով այս հենարանն ամբողջացնում է ձեր Սևազգեստ տղամարդկանց զգեստները: Այն հիմնված է հնարավորինս պարզագույն էլեկտրոնային սխեմայի վրա
Arduino Game Controller + Unity Game: 5 քայլ
Arduino Game Controller + Unity Game. Այս ուսանելի ծրագրում ես ձեզ ցույց կտամ, թե ինչպես կառուցել/ծրագրավորել arduino խաղի վերահսկիչ, որը կարող է միանալ միասնությանը:
Lego Lego գանգի մարդ. 6 քայլ (նկարներով)
Lego Lego Skull Man. Ողջույն, այսօր ես ձեզ կսովորեցնեմ, թե ինչպես պատրաստել սառը փոքրիկ մարտկոցով աշխատող լեգո գանգի տղամարդ: սա հիանալի կլինի շուտով սպասվող Հելոուինի համար: կամ դա նույնիսկ հիանալի պարզ նախագիծ կլիներ անել: երբ ձեր տախտակը կամ պարզապես մի փոքր թիկնոց կտոր է
Arduino Pocket Game Console + A -Maze - Maze Game: 6 քայլ (նկարներով)
Arduino Pocket Game Console + A -Maze - Maze Game. Բարի գալուստ իմ առաջին ուսանելի: Նախագիծը, որը ես ուզում եմ այսօր կիսել ձեզ հետ, Arduino լաբիրինթոս խաղն է, որը դարձավ գրպանի մխիթարիչ, նույնքան ունակ, որքան Arduboy- ն և Arduino- ի վրա հիմնված նման կոնսուլները: Այն կարող է շողշողալ իմ (կամ ձեր) ապագա խաղերով ՝ շնորհիվ ցուցահանդեսի
Lego Mini Cooper հավելվածի վերահսկվող լույսեր. 7 քայլ (նկարներով)
Lego Mini Cooper հավելվածի վերահսկվող լույսեր. Ապա սա նախագիծ է ձեզ համար: Դուք երկար ժամեր կանցկացնեք խիստ անկայուն սարքի փոքր ճշգրտումներ կատարելով ՝ քրտինք թափելով ձեր