Բովանդակություն:

Stackers Arcade Game: 6 քայլ (նկարներով)
Stackers Arcade Game: 6 քայլ (նկարներով)

Video: Stackers Arcade Game: 6 քայլ (նկարներով)

Video: Stackers Arcade Game: 6 քայլ (նկարներով)
Video: How To Win On The Stacker Arcade Machine | Arcade Games Tips & Tricks 2024, Նոյեմբեր
Anonim
Stackers Arcade Game
Stackers Arcade Game

Բարև տղերք, այսօր ես ուզում եմ ձեզ հետ կիսվել այս զարմանալի արկադային խաղով, որը կարող եք պատրաստել մի փունջ Ws2812b LED- ների և միկրոկոնտրոլերի/FPGA- ի միջոցով: Ահա Stack Overflow - դասական արկադային խաղի մեր ապարատային իրականացումը: Այն, ինչ սկսվեց որպես դպրոցական ծրագիր, արագ դարձավ սիրո աշխատանք, երբ մենք սկսեցինք ավելի ու ավելի շատ ժամանակ տրամադրել մեր խաղը զարգացնելու և դրանից ավելին սովորելու համար (և անտեսելով մեր ուսումնասիրությունները գործընթացում xD): Ի վերջո, մեր խաղը այնքան լավ կառուցվեց և լավ ընդունվեց մեր դպրոցի կողմից, որ առգրավվեց (որպես ցուցադրական նյութ աշակերտների հաջորդ խմբաքանակի համար): Դե, մենք միշտ կարող ենք կառուցել երկրորդը: Եկեք սկսենք!

Խաղի առցանց տարբերակը ՝

Քայլ 1: Ի՞նչ է ձեզ անհրաժեշտ:

Ի՞նչ է ձեզ պետք
Ի՞նչ է ձեզ պետք
Ի՞նչ է ձեզ պետք
Ի՞նչ է ձեզ պետք
Ի՞նչ է ձեզ պետք
Ի՞նչ է ձեզ պետք
Ի՞նչ է ձեզ պետք
Ի՞նչ է ձեզ պետք

Նյութեր:

1. միկրոկառավարիչ/միկրոհամակարգիչ/FPGA - FPGA- ն օգտագործվում է մեր խաղի տրամաբանությունը կյանքի կոչելու համար: Ընտրեք ձեր խորհուրդը, մեր նախագծի համար մեզանից պահանջվում է օգտագործել Mojo FPGA տախտակը: Անհայտների համար դա տախտակի մի տեսակ է, որն օգտագործում է ապարատային սարքավորումներ `իր գործառույթներն իրականացնելու համար, այլ ոչ թե ծածկագրեր: Հետևաբար, ես կասեի, որ այն բավականին ցածր մակարդակ է և բոլորովին այլ է, քան եթե դուք օգտագործում եք Arduino կամ Pi: Եթե դուք օգտագործում եք այլ տախտակներ, դուք պետք է գրեք ձեր սեփական կոդը, բայց այս խաղը բավականին հեշտ է կոդավորել և հե! Այժմ դուք կարող եք սովորել նաև կոդավորումը:

2. Ws2812b LED- եր - Այստեղ մենք օգտագործում ենք LED- ները `մեր խաղի ցուցադրումը կառուցելու համար: Չի կարող լինել արտադրող, եթե դուք չեք դիպչել Ws2812b- ին xD- ից առաջ: Դա մեկ հասցեական նշանակություն ունի, ինչը նշանակում է, որ դուք կարող եք անջատել միայնակ լուսադիոդային լուսադիոդները և դրանք տեղադրել ցանկացած ձևավորման մեջ, որը Ձեզ դուր է գալիս: Եվ դա RGB նշանակում է, որ դուք կարող եք թողարկել ցանկացած գույն, որը ցանկանում եք: Ավելին, FastLED - Ws2812b- ի վերահսկման Arduino գրադարանը շատ լավ զարգացած է: Ես խորհուրդ կտայի մարդկանց օգտագործել Arduino- ն FPGA- ի փոխարեն, եթե այն չունեք: Դուք կարող եք LED- ները գնել Taobao/Amazon- ից, բայց մենք մերը գնել ենք Սինգապուրի Sim Lim աշտարակից:

3. Փայտ-արտաքին պատյանների համար մենք օգտագործել ենք 1 սմ հաստությամբ նրբատախտակ, իսկ LED մատրիցի համար `0.3 սմ հաստությամբ նրբատախտակ: Մենք գտանք մեր դպրոցի փայտի լաբորատորիայի ջարդոնի պաշարը:

4. Լույսի ցրող ակրիլ. Եթե չեք գտնում ճշգրիտ մոդելը, փորձեք փնտրել ցրտաշունչ ակրիլներ: Մենք մերը գնել ենք Սինգապուրի Dama Plastics- ում:

5. Փրփուր տախտակ - Լույսի յուրաքանչյուր պիքսել առանձնացնելու համար մեզ անհրաժեշտ էր ցանցի կառուցվածք, և դա պատրաստելու համար իդեալական նյութ է: Մենք մեր դպրոցի գրախանութից գնել ենք 0.5 սմ հաստությամբ փրփուր տախտակ:

6. Մեծ կարմիր կոճակ - Լավ, պարտադիր չէ, որ մենք ունենանք այդքան մեծ կարմիր կոճակ, բայց միշտ լավ է ունենալ կոճակ, որը կարող է մարդկանց հարվածել: xD Մենք այն գնել ենք Սինգապուրի Sim Lim աշտարակում:

Գործիքներ:

1. Փայտի սոսինձ

2. oldոդման երկաթ

3. Sոդող

4. Հաղորդալարեր: Ավելի լավ է, եթե դուք ունեք ավելի ամուր լարերի համեմատ փափուկ լարեր: Եվ մեկ միջուկը `համեմատած բազմաբնույթ:

5. Հաղորդալար մերկապարուհի

6. Լարի կտրիչ

7. Հորատեք 1 մմ տրամագծով փորվածքներով

8. Ոլորման սղոց

9. նվագախմբի սղոց

Վրիպազերծում

1. Փոփոխական էներգիայի մատակարարման միավոր

2. Օսցիլոսկոպ

Քայլ 2: Արագ նախատիպերի պատրաստում

Արագ նախատիպավորում
Արագ նախատիպավորում
Արագ նախատիպավորում
Արագ նախատիպավորում
Արագ նախատիպավորում
Արագ նախատիպավորում
Արագ նախատիպավորում
Արագ նախատիպավորում

Մեր նախագծի համար մենք կիրառեցինք արագ նախատիպերի պատրաստում ՝ նախքան մեր LED մատրիցան կառուցելը և մեր խաղը ծրագրավորելը: Դա անելու պատճառն այն է, որ մենք չենք ցանկանում LED մատրիցա կառուցել պարզապես հասկանալու համար, որ մեր ծածկագրերը չեն աշխատում, կամ մեր խաղային տրամաբանությունը ինչ -որ կերպ թերի է:

Սարքավորման տեսանկյունից, առաջին փուլում մենք պարզապես փորձեցինք մեր տրամաբանությունը ՝ մեր սեփական պարզ LED մատրիցի վրա լուսարձակները փոխելու վրա: Երբ մենք ստուգեցինք, որ տրամաբանությունը լավ է աշխատում, այնուհետև մենք դուրս եկանք ՝ կտրելու 5 Ws2812b LED- ների 5 շերտեր, պարզապես փորձարկելու մեր խաղային տրամաբանությունը տարբեր տողերով: Երբ դա ստացվի, մենք շարունակում ենք LED մատրիցայի պատրաստումը ամբողջ մասշտաբով:

Մենք նաև փորձարկեցինք տարբեր ակրիլային նմուշներ LED- ով ՝ նախքան PL-422- ի հետ լուծվելը որպես լավագույն լույսի դիֆուզոր: Իսկ անջատիչի կառուցվածքի համար մենք փորձարկեցինք նաև տարբեր բարձրություններ, որպեսզի լուսադիոդն ամբողջությամբ ցրվի: Ի վերջո, մենք հասկացանք, որ 3 սմ*3 սմ քառակուսի 4 սմ բարձրությամբ լավագույնն է դիֆուզիոն: Այս օպտիմալ չափի հիման վրա մենք որոշեցինք նաև, թե որքան է նրբատախտակի չափը, որն անհրաժեշտ է 5 x 11 LED մատրիցի համար ՝ քառակուսիների միջև փրփուրի համար թողնելով 0,5 սմ բացվածք:

Softwareրագրային ապահովման կողմից մենք փորձում ենք հնարավորինս մոդուլային լինել. Մենք նախ ստուգում ենք, թե արդյոք LED- ները կարող են լուսավորվել, նախքան հերթափոխի գործառույթը ավելացնելը, այնուհետև մյուսները: Արդյունքները կարող են աղետալի լինել, եթե դա չանեք: Մենք դա սովորեցինք դժվարին ճանապարհով, երբ փորձեցինք ամբողջ խաղը կոդավորել մեծ կտորով ՝ նախքան հասկանալը, որ չենք կարող այն կարգաբերել: Օuհ

Քայլ 3: Պատյան պատրաստելը

Պատյան պատրաստելը
Պատյան պատրաստելը
Պատյան պատրաստելը
Պատյան պատրաստելը
Պատյան պատրաստելը
Պատյան պատրաստելը
Պատյան պատրաստելը
Պատյան պատրաստելը

Մեր պատյանների համար մենք գնացինք դասական արկադային մեքենայի զգացումներով և տեսքով: Նախ, մենք կտրեցինք մի քանի բարակ նրբատախտակ ՝ ձևը արագ նախատիպավորելու համար, քանի որ ավելի հեշտ և արագ կտրել բարակ նրբատախտակն ու փորձարկել: Երբ մենք բավարարվեցինք մեր չափերով և ձևով, մենք սկսեցինք ավելի հաստ նրբատախտակ օգտագործել պատյան կառուցելու համար: Մենք օգտագործեցինք ժապավենային սղոց `ավելի հաստ նրբատախտակը կտրելու համար, իսկ ոլորման սղոցը` ավելի բարակերը կտրելու համար: Դրանից հետո մենք փայտի սոսինձ օգտագործեցինք դրանք սոսնձելու համար:

Նրբատախտակի հետևի մասում մենք ցանկանում էինք հեշտությամբ մուտք գործել էլեկտրոնիկա ներսում, ուստի այն վերածեցինք կողպեքի կտորի, որը կարող եք հեշտությամբ հեռացնել, երբ ցանկանաք:

Կոճակը ամրացնելու համար մենք նախ նկարեցինք կոճակի միկրոփոխարկիչի տրամագծի չափ շրջանակ (կոճակի ներքևի երկար հատված): Այնուհետև մենք եզր բացեցինք անցքի մոտով և ոլորվող սղոցով ՝ շրջան տեսնելով: Հետո մենք տեղադրեցինք կոճակը և պտուտակեցինք այն:

Մենք նաև կտրեցինք նրբատախտակի մի բարակ կտոր ՝ որպես մեր LED մատրիցի հիմք ՝ նախկինում մեր հաշվարկած չափերի համաձայն:

Նշում. Ես ներողություն եմ խնդրում քայլ առ քայլ գործընթացի բացակայության համար: Մենք ամբողջովին չենք փաստաթղթավորել քայլերը, և երբ հասկացանք, որ քայլերը պետք է փաստաթղթավորենք, պատյանը արդեն պատրաստ էր: Դիագրամը նույնպես վերջնական չափերը չեն:

Քայլ 4: LED մատրիցայի պատրաստում

LED մատրիցայի պատրաստում
LED մատրիցայի պատրաստում
LED մատրիցայի պատրաստում
LED մատրիցայի պատրաստում

Օգտագործելով այն բարակ կտորը, որը մենք կտրել էինք ավելի վաղ, մենք նախ նշում ենք յուրաքանչյուր LED- ի դիրքը ՝ գծելով մեր փրփուրի կառուցվածքի հիման վրա քառակուսի և հրապարակի մեջտեղում խաչ քաշելով, որպես այն տեղը, որտեղ մենք պետք է կպցնենք LED- ը: Այնուհետև մենք LED- ի յուրաքանչյուր կողմում 3 փոքր անցք ենք բացում, որպեսզի լարերը դուրս գան և դրանք կպցնենք յուրաքանչյուր LED- ի:

Մենք LED- ի յուրաքանչյուր տող կապում ենք իրենց Data In և Data Out կապումներով և յուրաքանչյուր GND և VCC զոդում ընդհանուր մետաղալարով: Առաջատար Data In- ը յուրաքանչյուր տողի համար կստեղծի լուսային նախշեր, և մենք դրանք միացրեցինք միկրոկառավարիչի/FPGA- ի pinout- ին: Կարող եք նաև մեկ տողից վերջին տվյալները զոդել մեկ այլ տողի առաջատար Data In- ին: Ws2812b LED- ի աշխատելու եղանակն այն է, որ յուրաքանչյուր LED պարունակում է IC, որը մետաղալարից կվերցնի անհրաժեշտ տվյալները և մնացածը կանցնի շղթայով: Մենք հիմնեցինք մեր LED- ի վրա մեկ այլ ֆանտաստիկ հրահանգների վրա (ըստ էության, մենք այն ճիշտ պատճենեցինք! XD)

Այստեղ մենք կցանկանայինք նաև շեշտել փափուկ լարերի օգտագործման կարևորությունը: Եթե դուք օգտագործում եք կոշտ, կոշտ լարեր առաջատար Data In pin- ի համար, ապա այն, ինչ տեղի է ունենում, ամեն անգամ մետաղալարը քաշելիս այն կարող է դուրս բերել ձեր Ws2812b- ի պղնձե ծածկոցը, որը կկործանի այն: Այս նախագծում, նախքան փափուկ լարերի անցնելը, մենք ոչնչացրեցինք ընդհանուր առմամբ 40 LED, ինչը մեր նախագծի համար անհրաժեշտ LED- ների 1/3 -ն է:

Ուսուցիչ ՝

Քայլ 5. Խաղի կոդերի գրառում և սարքաշարերի կարգաբերում

Խաղի կոդերի գրառում և կարգաբերում սարքաշարեր
Խաղի կոդերի գրառում և կարգաբերում սարքաշարեր
Խաղի կոդերի գրառում և սարքաշարերի կարգաբերում
Խաղի կոդերի գրառում և սարքաշարերի կարգաբերում
Խաղի կոդերի գրառում և կարգաբերում սարքաշարեր
Խաղի կոդերի գրառում և կարգաբերում սարքաշարեր

Mojo- ն աշխատում է Lucid HDL- ով, որը ամենատարածված լեզուն չէ: Մենք չենք կարող գտնել Ws2812b LED գրադարաններ Lucid- ում, ուստի մենք դիմեցինք գրելու մեր սեփական գրադարանը, ինչը շատ հետաքրքիր փորձ է: Դա անելու համար մենք նախ վերլուծեցինք ազդանշանը, որն անցնում է Arduino- ի FastLED գրադարանի միջոցով և գրեցինք դրա կրկնօրինակման կոդեր: Ահա ապարատային կարգաբերման հնարք, օսլիլոսկոպը շատ, շատ օգտակար է ազդանշանները վերլուծելու համար, լինի դա սեփական ազդանշանի կարգաբերում, որը վստահ չեք կամ ստուգում և պատճենում եք այլ ազդանշաններ:

Ws2812b- ի համար գրադարանը գրելուց հետո մենք անցնում ենք խաղի կոդավորմանը, մենք օգտագործում ենք Bit shift գործառույթները ՝ յուրաքանչյուր բլոկ ձախ և աջ տեղափոխելու համար և օգտագործում ենք յուրաքանչյուր տողի Bitwise AND to AND նախորդ տողի քառակուսիները: Կարող եք նաև մտածել դա իրականացնել Arduino- ում, որը չպետք է այդքան դժվար լինի: Մենք նույնիսկ կոդավորեցինք խաղային էկրաններ `զվարճանալու համար:

Մեր խաղն ուներ 2 մակարդակ, որը տեսանելի խաղադրույքների խաղն է (Կանաչ) և երկրորդ մակարդակի անտեսանելի հավաքման խաղը (Կապույտ):

Նույնիսկ այն բանից հետո, երբ մենք ունեինք աշխատանքային ծածկագրեր և աշխատող LED մատրիցա, երբեմն մենք դեռ բախվում ենք այնպիսի խնդիրների, ինչպիսիք են թրթռացող լույսերը կամ լույսերը, երբ դրանք չպետք է: Խնդիրը սովորաբար պայմանավորված է ոչ պատշաճ հիմնավորմամբ, սնուցման մակարդակով կամ միջամտությամբ: Սա այն է, որտեղ ձեզ հարկավոր կլինեն ապարատային կարգաբերման այլ գործիքներ, ինչպիսիք են փոփոխական էներգիայի մատակարարման միավորը `ստուգելու համար, թե արդյոք Mojo/Arduino- ի սնուցման աղբյուրը բավարար է կամ չափազանց բարձր: Ըստ իմ փորձի, Ws2812b- ն ունի աշխատանքային լարման բավականին լայն տեսականի `2.8v - 5v- ից: Այստեղ ես ունեմ մի տեսանյութ, որը ցույց է տալիս, որ լույսերը խելագարվում են, երբ ես մեծացնում եմ էներգիան:

Այնուամենայնիվ, հետագա ստուգումից պարզվեց, որ մենք ունեինք ոչ պատշաճ զոդում, ևս մեկ անգամ դրանք նորից զոդելուց հետո մեր խնդիրը լուծվեց: Կարող է լինել նաև միջամտության կամ խաչասերման խնդիր, բայց, բարեբախտաբար, մենք երբեք նրանցից ոչ մեկի հետ չենք բախվել:

Github կոդերը ՝

Arduino Bitwise Shift ՝

Arduino Bitwise AND:

Քայլ 6: Ամեն ինչ միասին հավաքելը

Ամեն ինչ միասին դնելը
Ամեն ինչ միասին դնելը
Ամեն ինչ միասին դնելը
Ամեն ինչ միասին դնելը
Ամեն ինչ միասին դնելը
Ամեն ինչ միասին դնելը
Ամեն ինչ միասին դնելը
Ամեն ինչ միասին դնելը

Դուք ունեք պատյան և LED մատրիցա: Itամանակն է ամեն ինչ համատեղել: Սկզբում մենք փրփուրը տեղադրում ենք առջևի մասում, իսկ LED մատրիցը ՝ դրա հետևում և հարմարեցնում դիրքը: Քանի որ փրփուրը շատ բարձր շփում ունի, այն պարզապես շփում էր, մինչդեռ LED մատրիցը տաք սոսնձված է տեղում: Դրանից հետո մենք էկրանը տեղադրեցինք ցանցի դիմաց: Հետո մենք միացրեցինք յուրաքանչյուր տողի կապը միկրոկոնտրոլերի վրա և սկսեցինք խաղալ:: D

Այս նախագծում ինձ մի բան է դուր գալիս `դրա ճկունությունը: Դուք միշտ կարող եք միկրոկոնտրոլերը վերագրանցել` այլ խաղի մաս կազմելու և ինչ -որ բան անելու համար, օրինակ `անիմացիա կամ ռեակցիա խաղ պատրաստելը: Հուսով եմ, որ դուք հաճույք կստանաք դրա պատրաստումից և ինչ -որ բան կսովորեք դրա պատրաստման համար: GgEz!

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