Բովանդակություն:
- Քայլ 1: Նյութեր և գործիքներ
- Քայլ 2. Կտրեք LED ժապավենը ավելի փոքր շերտերի մեջ
- Քայլ 3. Էկրանը միասին զոդելը
- Քայլ 4: Հիմնական էլեկտրոնիկայի զոդում
- Քայլ 5: Վերահսկիչ
- Քայլ 6: Վերնաշապիկ
- Քայլ 7: mingրագրավորում
- Քայլ 8: Պատրաստի արտադրանք
Video: Պոնգը ճկուն էկրան է խաղում վերնաշապիկի վրա. 8 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Սա իմ Հելոուինի տարազն է 2013 թվականի համար: Այն մշակման փուլում է արդեն մոտ մեկ տարի և ստեղծելու համար պահանջվել է մի քանի մարդ: Էկրանը 14 -ից 15 պիքսել է, այնպես որ, բավականին ցածր լուծաչափով, բայց այն դեռ կարող է զվարճալի բաներ անել: Այն ֆիզիկապես ճկուն է բոլոր ուղղություններով, չնայած այն հնարավոր չէ ծալել առանց վնասների: Այն ունի վերահսկիչ, որը բաղկացած է մեկ կոճակից և սլայդ կաթսայից, որը USB- ի միջոցով միացված է պրոֆեսիոնալ մեգային: Երկար ժամանակ այն պահելու համար այն օգտագործում է երկու հրեշավոր 2200 մԱ / ժ մարտկոց, որոնք միացված են շարանը `անհրաժեշտ լարման համար, այնուհետև 5 Վոլտ կարգավորիչ` այն օգտագործելի դարձնելու համար: Ամբողջ էլեկտրոնիկան տեղադրված է գրպաններում, վերնաշապիկի ներքին մասում, որպեսզի դրանք հեռացվեն և վերնաշապիկը լվացվի: Այն խաղում է պոնգի ֆունկցիոնալ խաղ: Այն առաջինը զարդարում է «PONG PLAY» բառերով ՝ գեղեցիկ կապույտ տառերով ՝ օգտագործելով Tom Thumb տառատեսակի փոփոխված տարբերակը (կարելի է գտնել այստեղ ՝ https://robey.lag.net/2010/01/23/tiny-monospace-font.html): Հինգ վայրկյանից հետո կարող է տրվել ՝ առաջ շարժվելու համար սեղմել կոճակը, կամ չսեղմել կոճակը և հետևում թողնել կատարյալ լավ փորձ: Երբ մեկը ընտրում է սեղմել կոճակը, խաղը սկսվում է: Աջ կողմում կարմիր թիակը համակարգչի թիակն է, իսկ աջը `կանաչ թիակը` խաղացողի թիակը, որը վերահսկվում է սահիկի կաթսայով `վեր ու վար շարժվելու համար: Գնդակը շրջվում է, երբ յուրաքանչյուր կողմ փորձում է միավոր վաստակել: Խաղացողը կարող է իր թիակի ծայրով հարվածել գնդակին `այն արագացնելու համար (գեղեցիկ հատկություն), մինչդեռ համակարգիչը չի կարող դա անել, և փոխարենը հայտնվում է գնդակի վրա ավելի դանդաղ շարժման մեջ: Երբ միավորը վաստակվում է, պիքսելը սպիտակ է դառնում գնահատման կողմերի թիավարման վրա: Այն երկուական է հաշվում ներքևից: որտեղ կանաչը կամ կարմիրը զրոյական է, իսկ սպիտակը `1. 21 -ը հաղթելու (կամ պարտվելու) հաշիվն է` կախված այն բանից, թե ով է հավաքել 21 միավորը: Այսպիսով, երբ խաղացողի թիավարում կարդում է 10101 -ը, ցուցադրվում է «ԴՈOU ՀԱ WԹՈ »տեքստը: Կրկին փոփոխված Tom Thumb- ում: Նույնը տեղի է ունենում, բայց դրա փոխարեն ցուցադրվում է «ԴՈOS ԿԱՐՈ ԵՍ»: Հաղթանակից կամ պարտությունից հետո խաղը վերսկսվում է դեպի կետը Pong Play- ից անմիջապես հետո: Ամբողջովին վերագործարկելու համար սեղմված է «Կախարդական տուփի» վերագործարկման կոճակը, որը հայտնի է նաև որպես «արկղ-բոլոր-բոլոր-էլեկտրոնիկայով-բացառությամբ էկրանին»:
Քայլ 1: Նյութեր և գործիքներ
* * -Ով նշված բաները կամընտիր են, բայց խորհուրդ են տալիս Եվ այսպես ՝ առանց որևէ կարգի… Նյութեր. նախընտրելի է առաձգական հյուսվածքը) 6 ոտնաչափ USB A արականից USB B արական մալուխ 1 USB A իգական միակցիչ 3 2 փին JST կին միակցիչ 1 USB B կանացի միակցիչ ՝ ճեղքման տախտակով 1 միացման/անջատիչ (միացում) 1 վերակայման անջատիչ (միացում կամ վայրկենական) 1 սլայդ պոտենցիոմետր *1 սլայդ կաթսայի գլխիկ 1 բարձր ամպ միակցիչ զույգ *1 նախագծի պատյան 1 5V 3+ ամպ լարման կարգավորիչ փոքր մի քիչ պլաստիկ, ինչ -որ բան կպցրեք ինչ -որ մետաղալար, ինչ -որ թել *որոշ տաք սոսինձ *որոշ առաձգական որոշ ժամանակ (գուցե մի փոքր ավելի, քան «որոշ») որոշ հաստատակամություն (հավանաբար, ձեզ կպահանջվի այս ամենի մի մասը) ջերմության նվազեցման խողովակներ կամ էլեկտրական ժապավեն ինչ -որ սուպեր սոսինձ որոշ երկաթ երկաթե օժանդակ գործիքների վրա *Օգնող ձեռքեր Նորմալ ձեռք s (կամ ինչ -որ մեկը նրանց հասանելիությամբ) oldոդման երկաթ *Տաք սոսինձ ատրճանակ Dremel կամ հղկաթուղթ Chisel Wire Strippers Wire Cutters Staple Gun Gun Screw Վարորդ Սղոցներ կարի մեքենայի համար Գործվածքների մկրատ
Քայլ 2. Կտրեք LED ժապավենը ավելի փոքր շերտերի մեջ
Օգտագործեք ձեր նախընտրած կտրող պարագան և կտրեք շերտը 14 հատվածի ՝ յուրաքանչյուրը 15 պիքսել երկարությամբ: Կտրեք միայն պղնձի հետքերի միջև ՝ «DO» «DIN» «+5V» և «GND» պիտակներով: Եթե այն արդեն կպցված է պղնձի վրա, դրանք ուղղակի կտրում են: Փորձեք շատ չկտրել մերկացված պղնձի մեջ, բայց եթե այն փոքր -ինչ կծեք, դա լավ է: Երբ բոլոր 14 շերտերը կտրվել են, յուրաքանչյուր ծայրից մի փոքր կտրեք կաուչուկը, որպեսզի այն դուրս գա շերտերի եռակցման համար:
Քայլ 3. Էկրանը միասին զոդելը
Վերցրեք մետաղալարը և կտրեք այն մոտ 3,5 դյույմ (9 սմ) հատվածների: Իմ դեպքում ես ունեմ երեք տարբեր գույներ, որպեսզի ավելի հեշտ լինի ուղիղ պահել զոդման ժամանակ, բայց մեկ գույնը լավ կաշխատի: Այս փոքրիկ տղաներից ձեզ հարկավոր կլինի մոտ 40 հոգի, բայց ամեն դեպքում կտրեք ևս մի քանիսը: Հաղորդալարը կտրելուց հետո կտրեք և թիթեղացրեք ծայրերը (եթե ունեք եռակցման փորձ, կարող եք անցնել հաջորդ պարբերությանը), այսինքն `փոքր պլաստմասսայից հեռացնելուց հետո յուրաքանչյուր մետաղալարի ծայրերին կպցրեք զոդ: Մի տաքացրեք զոդիչը և փորձեք անցնել մետաղալարին, տաքացրեք պղնձի ներքևի մասից զոդող երկաթով, իսկ զոդը դրեք վերևում: Եղեք համբերատար և սպասեք, թե երբ է տաք մետաղալարը հալեցնում զոդումը: Գայթակղիչ է եռակցման զոդը զոդել այն սկսելու համար (ես և իմ անհամբերությունը հստակ գիտենք, թե ինչպես ես դու զգում), բայց զոդն այդքան էլ չի կպչի: Նույնը արեք շերտի հատվածների յուրաքանչյուր ծայրում բացված պղնձի հետքերի համար: Եթե այն արդեն եռակցված է, մի անհանգստացեք դրա մասին: Շերտի համար գուցե ցանկանաք մի փոքր բլուր կառուցել `հետագայում ավելի հեշտացնելու համար: Շերտի հետ աշխատելիս դա արեք արագ և փորձեք շատ ժամանակ չծախսել շերտի վրա ջերմություն կիրառելիս: Արեք միայն այն, ինչ ձեզ հարկավոր է, որպեսզի զոդը հալվի հետքի վրա: Յուրաքանչյուր հետքի վրա մետաղալար կպցրեք մինչև առաջին շերտի վերջը (առաջին ժապավենը, որը լարերով և միակցիչով է, այն կպցրեք բացված ծայրին): Եթե նայեք ժապավենին, ապա դրա վրա կտեսնեք փոքրիկ նետեր, որոնք բարձրանում են մինչև վերջ, որտեղ կպցրել եք մետաղալարը: Վերցրեք մեկ այլ ժապավեն, որպեսզի սլաքները ուղղված լինեն հակառակ ուղղությամբ և կպցրեք մետաղալարերը, որոնք գալիս են GND հետքից, մյուսի GND հետքին, +5V- ը +5V- ին և այլն: Կրկնեք սա ՝ համոզվելով, որ սլաքները փոխում են ուղղությունները յուրաքանչյուր հատվածից հետո, որպեսզի եթե հետևեք դրանց, ապա դա ցիկ -զագ անի վեր և վար, և որ այն ի վերջո կարող է ձգվել մինչև երկար շերտի վրա: Երբ բոլոր 14 շերտերը կպցվեն, դրանք շարեք և շարեք, որպեսզի LED- ները կազմեն ցանց: Այնուհետև դրանք միասին պահեք ՝ օգտագործելով մի մեթոդ, որը կարող է հետագայում հեռացվել ՝ առանց շերտին վնասելու: Ես օգտագործել եմ սկոտչե ժապավեն: Այն բավական կպչուն է ամեն ինչ միասին պահելու համար, բայց ոչ այնքան կպչուն, որ մնացորդ թողնի: Ես մշտականներին ոչինչ չեմ խորհուրդ տալիս, ինչպես կեռերը կամ կպչուն ժապավենը: Երբ ամեն ինչ ամրացված է, կպցրեք մետաղալարը ներքևի մասից +5V ժապավենին ՝ անմիջապես դրա կողքին: Կրկնեք այնքան ժամանակ, մինչև ամբողջ ստորին հատվածում հոսանքի ծորակները մինչև վերջ անցնեն: Սա այնպես է, որ էկրանը չի մարում, քանի որ LED- ների գիծն առաջընթաց է ապրում:
Քայլ 4: Հիմնական էլեկտրոնիկայի զոդում
Bոդեք USB B անջատիչ տախտակը (BOB) USB B միակցիչին: Aոդեք համապատասխան լարերը USB A միակցիչին: Ես խորհուրդ եմ տալիս դիտել միակցիչի քորոցը, ինչպես նշված է այս կայքում ՝ https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png: Մի անհանգստացեք, թե որտեղ պետք է հենց հիմա միացնել լարերի մյուս ծայրերը USB A միակցիչի վրա. որը կներառվի վերահսկիչի քայլում: Կտրեք տվյալների միակցիչը շերտից, իգական միակցիչը, այլ ոչ թե արական միակցիչը (Կանացի միակցիչը ստացվում է մյուս ծայրից): STոդեք արական JST միակցիչները մարտկոցի ծայրերին, որպեսզի կարմիրը դառնա կարմիր, իսկ սևը `սև: Հալեց ջերմության նեղացման խողովակը բաց լարերի վրա (սահեցրեք զոդումից առաջ), որպեսզի դրանք չկտրվեն կամ չօգտագործեն այլ բան, ինչպես էլեկտրական ժապավենը կամ տաք սոսինձը: Wոդեք որոշ լարեր JST- ի բոլոր կին միակցիչներին: Համոզվեք, որ տղամարդու ծայրը միացված է, որպեսզի կապումներն այլևս չշարժվեն: Carefulգույշ եղեք բևեռականությունից և համոզվեք, որ լարերը համընկնում են արական միակցիչների հետ: Wոդեք լարերը բարձր լարման միակցիչին (բայց դա զույգ չէ) ևս մեկ անգամ `համոզվելով, որ ցանկացած գույներ համընկնում են, և որ դրանք միացված են միմյանց` կանխելու ցանկացած տեղաշարժվող կապում: Femaleոդեք էգերի միակցիչի/մետաղալարերի հավաքածուն այնպես, որ դրանք միացվեն շարքով, այլ ոչ թե զուգահեռ, որպեսզի այն անցնի էներգիայի կարգավորիչի շեմային լարումը: Այսպիսով, դրական մետաղալարը միացրեք մյուս հավաքածուի բացասական մետաղալարին, այնպես որ այժմ մենք ունենք մեկ չզոդված դրական մետաղալար և մեկ բացասական չզոդված մետաղալար, և երկու զոդված լարերը զոդվում են տարբեր միակցիչների վրա: Վերցրեք բացասական մետաղալարը և պահեք այն, որպեսզի այն այլ վայրում կպցվի բացասական մետաղալարին: Այժմ վերցրեք դրական մետաղալարը և ամրացրեք այն անջատիչին: Եթե կա երեք կամ ավելի կապում (կամ «միացված» լինելու ավելի քան մեկ եղանակ), այն կպցրեք միջին քորոցին: Ուշադրություն դարձրեք, որ «Միջին քորոցը» կարող է ֆիզիկապես մեջտեղում չլինել: Identifyանաչման եղանակը գտնելն է այն քորոցը, որը երբ անջատիչը միացված է ցանկացած վիճակում, միշտ միացված կլինի մեկ այլ քորոցին: Եթե ոչ մի քորոց այսպիսին չէ, ապա ունեք շատ հատուկ անջատիչ; պարզապես միացրեք այն ցանկացած քորոցին և համոզվեք, որ անջատիչին զոդվող հաջորդ մետաղալարը միացված կլինի այդ լարին առնվազն մեկ վիճակում: Այժմ միացրեք լարման կարգավորիչի դրական ընդունման մետաղալարը անջատիչի հակառակ ծայրին, ինչպես վերը քննարկվեց: Sոդեք պոստիվալ լարումը մինչև չմիացված բարձր ընթացիկ միակցիչի դրական վերջը: Վերցրեք բացասական ընդունման մետաղալարը և կպցրեք այն բարձր հոսանքի միակցիչի բացասական ծայրին: Այժմ մենք պատրաստվում ենք հոսանքը զոդել Arduino- ին և Power strip- ին զուգահեռ: Այժմ վերցրեք լարման կարգավորիչի ելքային լարերը և երկու դրական մասերի մետաղալարեր կպցրեք և՛ դրական, և՛ բացասական ծայրերին, որպեսզի դուրս գան Y տեսքով: Pinոդեք երկու պին միակցիչ `led ժապավենի հավաքման դրական և բացասական լարերին: Կարևոր չէ, թե ինչ տեսակի միակցիչ եք օգտագործում, դա կարող է լինել JST կամ իմ դեպքում ինչ -որ հոսանքի/աուդիո մալուխ կամ ինչ -որ բան (վստահ չեմ, և ներողություն եմ խնդրում որևէ նկար չունենալու համար): Լույսի շերտի համար միացրեք դրական հոսանքի լարերից մեկը հակառակ միակցիչի դրական ծայրին, իսկ բացասական լարերից մեկը միակցիչի մյուս քորոցին: Նույնը արեք, բայց արական JST միակցիչ/մետաղալարերի հավաքման դեպքում: Միևնույն ժամանակ հիշեք, որ մեկուսացրեք զոդման հոդերը `շորտերից խուսափելու համար: Այժմ, թե ինչ անել USB B միակցիչի հետ: Theոդեք դրական մետաղալարերը Arduino Pro Mega- ի 5 վ անցքի վրա: Վերցրեք հիմնավորված մետաղալարերը և կպցրեք այն GND անցքին: Վերցրեք D+- ը և կպցրեք այն թվային կապին (կամ այս դեպքում ՝ անցքին) 40. oldոդիչ D- անալոգային քորոցին 15. Sոդեք կին միակցիչի տվյալների վերջը, որը LED շերտի արական միակցիչի հետ զուգակցվում է տվյալների 6-րդ կապին և հիմնավորված մետաղալար GND քորոցին: Դիմակավոր կամ սկոտչե ժապավենը հիանալի է աշխատում լարերը տախտակին պահելու համար, որպեսզի դրանք չփլվեն, երբ այն կողքից շրջվում է, որպեսզի զոդվի: Այժմ վերցրեք մի ակնթարթային կոճակ և միացրեք մետաղալարը մի ծայրից մինչև VCC կապը (կամ ցանկացած լարման ելքային քորոց), իսկ մյուս ծայրը ՝ RESET քորոցին:
Քայլ 5: Վերահսկիչ
Սկզբից ճիշտ ձև ընտրելն է ՝ սկսելու համար: Ամեն ինչ կախված է նրանից, թե ինչպես եք ցանկանում վերահսկիչի կառուցվածքը: Ես ավելի շատ ուզում էի հարթ վերահսկիչ ունենալ, այնպես որ ստացա 3 1/2 "3/4" տախտակի կտոր: մասերը դասավորեք այնպես, ինչպես թվում է, հարմար և հարմար է աշխատել: Օգտագործեք ֆրանսիական կորը, կողմնացույցը, եռանկյունին և ուղիղ եզրը ՝ գծելու այն տեղը, որտեղ պետք է գնան բոլոր կտորները: Կտրեք հիմնական ուրվագիծը `օգտագործելով ձեր նախընտրած կտրող գործիքը: Արգելափակման սղոցը ամենալավը կլիներ, բայց ես օգտագործեցի պատնեշ, որը լավ աշխատեց: Սահուն անցեք եզրերին, որպեսզի դրանք սահուն անցնեն, այնուհետև ավազեք անկյուններով `այն ավելի հարմարավետ դարձնելու համար: Անջատիչի անցքը փորեք, այնուհետև ավազով, դանակով և/կամ Dremel- ով հանեք ներքևի ցանկացած հատված, որը կհարմարեցնի այն: Փորձեք ոչինչ չանել վերևի մասով և միայն մանրացրեք այն, ինչ ձեզ հարկավոր է, որպեսզի կարողանաք այն տեղավորել ՝ ոլորելով, թեքելով կամ որևէ այլ բանով, որպեսզի այն ներս մտնի: Երբ այն ամրացվի, ամրացրեք այն պլաստիկ ընկույզով և ամրացրեք անջատիչ. Հորատեք պոտենցիոմետրերի բռնակով տարածքը, որպեսզի այն տեղավորվի և կտրի այն, որպեսզի այն ընկղմվի և տեղավորվի մինչև վերջ: Հորատեք մի քանի անցք, որպեսզի պտուտակն այն պահի: Թեքեք USB A միակցիչի փոքր կտորները, որոնց շնորհիվ ընդհանուր լայնությունը փոքր -ինչ ավելանում է (նայեք նկարներին): Մի հատված հանեք միակցիչի համար ՝ աստիճանաբար ստուգելով, որպեսզի համոզվեք, որ միակցիչը տեղավորվում է: Սուպեր միացրեք միակցիչը իր անցքի մեջ: Վերցրեք մի փոքր պլաստմասե կտոր և կտրեք այն մի ձևի, որը կտեղավորվի միակցիչի վրա (նայեք նկարներին), այնուհետև ամրացրեք այն փայտին: Կտրեք ցանկացած կտոր, որը կարող է խանգարել ձեզ: Պտուտակաչափը պտուտակեք և ամրացրեք բռնակը: Դրական մետաղալարը կպցրեք պոտենցիոմետրի ծայրերից մեկին (ոչ փոփոխական հատվածին), իսկ բացասական մետաղալարը ՝ հակառակ ծայրին: -Ոդեք D- քորոցը կաթսայի փոփոխական քորոցին: Դրական մետաղալարով կաթսայի քորոցից մի մետաղալար կպցրեք կոճակի մեկ կապումներից մեկին: +ոդեք D+ կոճակի մյուս քորոցին: Կտրեք պահեստային մետաղալարը և մեկուսացրեք այն կտորները, որոնք դրա կարիքն ունեն:
Քայլ 6: Վերնաշապիկ
Գտեք հարմարավետ վերնաշապիկ, որը թույլ կտա լույսը ներս թողնել: Ես ընտրեցի այս հիմնական սպիտակ շապիկը: Իրականում կարևոր չէ գույնը կամ ոճը, քանի դեռ լույսը ներսից փայլում է: Այնուամենայնիվ, ես խորհուրդ չեմ տալիս գրաֆիկա ունենալ առջևի մասում: Շապիկի վրա դրեք ամեն ինչ, ինչը կօգնի ձեզ որոշել, թե որտեղ եք այն ցանկանում և օգտագործել այն ջնջվող նշման գործիքով ՝ այն գծելու համար: Ես (նկատի ունեմ իմ ճանաչած որոշ մարդկանց) ունեմ մատիտ, որը նախատեսված է գործվածքները նշելու համար, որը հեշտությամբ լվանում է: Չափեք մարտկոցների, հսկիչի պատյանների և էկրանի չափերը և կտրեք համապատասխան թղթի կտորներ: Այնուհետեւ թուղթը ամրացրեք ոչ ձգվող գործվածքների մի կտորի: Հյուսելը լավ է աշխատում դրա համար: Այնուհետև կտրեք ուղղանկյունը ՝ թողնելով մոտ մեկ քառորդ դյույմ կարի համար ամբողջ ճանապարհով: Այնուհետև, օգտագործելով թուղթը, որպես ուղեցույց, ծալքերը հյուսեք գործվածքների մեջ: Այժմ թուղթը կարելի է հեռացնել: Գրպանի այն մասում, որը կլինի վերևում, այն երեք անգամ ծալեք: Արդուկեք և կապեք այն տեղում պահելու համար: Կարեք մի ամբողջ տեսք ծալքի կեսին: Այժմ վերցրեք անկյունը և ծալեք այնպես, որ միմյանց ուղղահայաց չկտրված եզրերը զուգահեռ լինեն և կարեք կարծես անկյունից ամենամոտ արդուկված ծալքի երկայնքով (Նկարներն իսկապես օգնում են): Դա արեք մյուս անկյունի համար նույնպես: Եթե հավանական է, որ գրպանից դուրս գա միացման անջատիչ, գրպանի հիմքում, որտեղ անջատիչը դիպչում է, կարել կոճակով անցք: Այնուհետև կարեք կոճակի անցք և կտրեք միջին մասը: Ես իսկապես չեմ կարող մանրամասն հրահանգներ տալ, քանի որ ես ունեի կոճակի անցքեր պատրաստելու հիանալի գործիք: Պարզապես համոզվեք, որ անցքերը բացում եք գրպանը կարելուց առաջ: Վերցրեք մի քանի կապում և դրանք շոշափեք գրպանի նշանների անկյուններում գտնվող վերնաշապիկի միջով: Վերցրեք գրպանը և յուրաքանչյուր անկյուն դրեք մի կապում (վերնաշապիկի ներքին կողմում) ՝ կարի համար թողնելով մեկ քառորդ դյույմ և ամրացրեք այն վերնաշապիկին: Գրպանը ամրացնելուց հետո: հեռացրեք գրպանը չպահող կապումներն ու գրպանը կարեք վերնաշապիկին: Կրկնեք բոլոր գրպանների համար: Էկրանը պահող մեծ գրպանի համար բաց թողեք գրպանի ներքևի մասում գտնվող լարերի համար: Շապիկի վրա փոս դնելը նշեք տեղը և երկաթով վերցրեք թիկնոցի վրա (հյուսվածքի վրա ավելի փայլուն հատվածով) և արդուկեք այն: Այնուհետև, փոքր անցքի համար (ինչպես այն, ինչ ես օգտագործել եմ միացման անջատիչի համար), կատարեք կոճակի անցք: Ավելի մեծ անցքի համար նշեք ուրվագիծը և գծի երկայնքով օգտագործեք զիգզագի կար (կամ կորի կամ ինչ ունեք) և կտրեք միջին մասը: Եթե ցանկանում եք, կարող եք օգտագործել կախոցներ `գրպանների քաշը պահելու համար, իսկ առջևի գրպանները պահող երկու սեղմակները և տաբատներին` հետևի: Ես նաև գործվածքից մի փոքր թև ստացա, որը կարված էր կախոցների այն մասերի վրա, որոնք կպչեն իմ մաշկին: Երկու շապիկ կարող են մի փոքր շատ տաքանալ, այնպես որ ես հրաժարվեցի և օգտագործեցի գործվածքների փոքրիկ թևը:
Քայլ 7: mingրագրավորում
Եվ ահա ծածկագիրը: Կան մի քանի հատվածներ, որոնք լավ մեկնաբանված են, բայց ճնշող մեծամասնությունը `ոչ: Եթե տարբեր մասերի վերաբերյալ հարցեր ունեք, կարող եք ինձ տալ տողի համարը (#ներառելով որպես տող թիվ մեկ) կամ ինձ տալ տողի (գործառույթների) պատճենը և այն գործառույթը, որում այն գտնվում է (ինչպես օղակը () կամ compMovePaddle ()) և ես կանեմ ամեն ինչ, որպեսզի դա ձեզ բացատրեմ, այնուհետև մեկնաբանություն ավելացնեմ այն բացատրող ծածկագրին: #ներառել #սահմանել PIN 6 // ասում է, թե որոնք են խաղի մուտքային կապերը int կոճակի համար Pin = 40; // թելադրում է հաշիվը, պահվում է երկակի զանգվածում, քանի որ այն esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // թելադրում է գնդակի ուղղությունը int bvd = 0; // 0 ներքևում, 1 -ը վերև int bhd = 0; // 0 ճիշտ է, 1 ձախ // թելադրում է գնդակների դիրքը int bvp = 8; int bhp = 6; // ստուգում է, արդյոք գնդակը գտնվում է արագ ռեժիմում բուլյան արագ = կեղծ; // ստուգում է, արդյոք դա միավոր է: բուլյան cIsPoint = կեղծ; բուլյան pIsPoint = կեղծ; // թիավարման դիրքեր int cPaddle = 0; int pPaddle = 0; երկար նախորդ Միլիս = 0; երկար նախորդMillisForComp = 0; // արագ և դանդաղ շարժվող գնդակի հետաձգման ժամանակը սահմանել «Int» - ը normInt- ում և fastInt- ը int normInt = 50 միջակայքի համար; int fastInt = 10; // օգտագործվում էր հաղթանակի ստուգման համար: 1 -ը խաղացողի հաղթանակ է, -1 -ը ՝ համակարգչային, և 0 -ը դեռ ոչինչ չի պատահել int win = 0; // վրիպակից ազատվելու համար: օգտագործվում է addOne հայտարարության մեջ և ոչ մի այլ տեղ: int որը = 0; // Այն, ինչ ցուցադրվում է մեկնարկից առաջ, -1- ը փախուստ է int pongPlay = {1, 2, 3, 4, 10, 11, 12, 13, 16, 18, 20, 27, 29, 33, 34, 41, 42, 61, 62, 63, 70, 71, 72, 76, 85, 86, 88, 91, 92, 94, 100, 101, 102, 103, 131, 132, 136, 139, 144, 145, 146, 147, 148, 161, 162, 166, 175, 183, 185, 192, 194, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, -1}; // եթե շահում ես հաղթանակով = {1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 27, 33, 34, 39, 46, 47, 48, 49, 54, 55, 56, 57, 58, 77, 78, 79, 84, 88, 91, 92, 93, 94, 95, 99, 103, 106, 110, 114, 118, 130, 131, 132, 144, 145, 146, 147, 151, 162, 163, 168, 169, 170, 177, 181, 192, 193, 204, 205, 206, 207, -1}; // եթե կորցնում ես կորցնում = {1, 3, 5, 16, 17, 18, 19, 20, 24, 26, 28, 31, 32, 32, 33, 34, 35, 39, 46, 47, 48, 49, 62, 65, 77, 78, 79, 84, 86, 88, 91, 94, 99, 103, 106, 110, 122, 123, 124, 130, 131, 132, 144, 148, 152, 153, 154, 162, 163, 168, 169, 170, 181, 192, 193, 204, 205, 206, 207, 208, -1}; // տեղադրում է led շերտը Adafruit_NeoPixel շերտ = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // կարգավորում, մուտքի համար պտուտակ 40 չի դարձնում, սկսում է ժապավենը, ցուցադրում է // հաղորդագրությունը և ցույց է տալիս այն: void setup () {pinMode (buttonPin, INPUT); strip.begin (); համար (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); ուշացում (5000); while (digitalRead (buttonPin) == LOW) {// Դա թակարդ է! (մինչև կոճակը սեղմելը:)}} void loop () {clearScreen (); // նկարում է թիակները ՝ ցույց տալու հաշիվը (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0))); }} // նկարում է գնդակը մեկնարկային դիրքում strip.setPixelColor (98, շերտ. գույն (255, 255, 255)); strip.show (); // որոշում է, թե արդյոք գնդակը բարձրանում կամ իջնում է (pIsPoint == false && cIsPoint == false) {clearScreen (); անստորագիր երկար հոսանք Millis = millis (); // վերագրում է խաղացողի թիավարման դիրքը pPaddle = checkPaddlePos (); // ստուգում է հաջորդ դիրքի checkNext (); // գնդակի տեղափոխում, եթե (արագ == կեղծ) {եթե (ընթացիկՄիլիս - նախորդՄիլիս> normInt) {նախորդՄիլիս = ընթացիկՄիլիս; moveBall (); }} else if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // նկարել գնդակը, եթե (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } else if (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // համակարգչի թիավարման շարժում compMovePaddle (); // draw's the paddles drawPaddles (); // իրականում ամեն ինչ կարգի բերեց:strip.show (); // ստուգում `արդյոք միավոր է վաստակվել, եթե (pIsPoint == true) {որը = 0; bhd = 0; addOne (); ընդմիջում; } else if (cIsPoint == true) {որը = 1; bhd = 1; addOne (); ընդմիջում; }} if (win == 1) {clearScreen (); համար (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } ուշացում (5000); (int i = 0; i <5; i ++) համար {playerScore = 0; compScore = 0; } հաղթանակ = 0; } else if (win == -1) {clearScreen (); համար (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)) համար; strip.show (); } ուշացում (5000); (int i = 0; i <5; i ++) համար {playerScore = 0; compScore = 0; } հաղթանակ = 0; } pIsPoint = կեղծ; cIsPoint = կեղծ; bvp = 8; bhp = 6; bvd = պատահական (0, 2); // 0 -ը ներքև է, 1 -ը արագ = կեղծ; } // Արհեստական ինտելեկտը խաղի համար void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } else if (bvp = 0 && cPaddle <10) {cPaddle ++; } else if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } else if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // տեղափոխում է գնդակը դատարկ moveBall () {if (bhd == 0) {bhp--; } else if (bhd == 1) {bhp ++; } if (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // զանգվածին ավելացնում է մեկը: Եթե մեկը 0 է, այն ավելացնում է խաղացողի հաշիվը: Եթե դա 1 է, այն ավելացնում է համակարգիչներին void addOne () {if (որը == 0) {// եթե դա խաղացողի հաշիվն է // Ավելացնել մեկը: Սա իմ պարզեցված ձևն է, որը ես գիտեմ: for (int i = 0; i <5; i ++) {// loop if (playerScore == 0) {// եթե այդ արժեքը զրոյական խաղացող էScore = 1; // դարձնել 1 ընդմիջում; // ապա գնա} ուրիշ {// եթե դա 1 playerScore = 0; // դարձնել այն զրոյական և հանգույց}}} այլ դեպքում, եթե (որը == 1) {համար (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; ընդմիջում; } else {compScore = 0; }}} // Ստուգում է ՝ արդյոք որևէ մեկը շահե՞լ է: եթե (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {հաղթանակ = -1; } else if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {հաղթանակ = 1; }} // ստուգում է գնդակները հաջորդ դիրքում void checkNext () {// ստուգում է ՝ արդյոք միավոր է վաստակվել, եթե (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = true; } // եթե միավոր է հավաքվել, ապա բաց թողեք այս նյութի մնացած մասը, եթե (pIsPoint == false || cIsPoint == false) {// ստուգում է գնդակը ուղղահայաց, եթե (bvp+bvd == 15) {bvd = 0; } else if (bvp+bvd == 0) {bvd = 1; } // ստուգում է գնդակը հորիզոնական if (bhp+bhd == 13) {// առաջինը համակարգչի կողմից if (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; } արագ = կեղծ; } else if (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; } else if (bvp == 0 || bvp == 14) {bhd = 1; } արագ = կեղծ; }} այլապես, եթե (bhp+bhd == 1) {// ապա նվագարկիչի կողմից, եթե (bvp> = pPaddle && bvp <= pPaddle+4) {// դա թիակին հարվածում է նորմալ տեղում? // վերադարձ գնդակը: եթե (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; }} այլապես, եթե (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// արդյո՞ք դա հարվածում է անկյունի թիակին, եթե (bvp! = 0 && bvp! = 14) {// դա՞ է ոչ բարձր, ոչ ներքև: // Վերադարձ գնդակը: եթե (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; արագ = ճշմարիտ; } այլ դեպքում, եթե (bvp == 0 || bvp == 14) {// այն բարձր է, թե՞ ցածր: // վերադարձ գնդակը: bhd = 0; արագ = ճշմարիտ; // սահմանեք արժեքը, որպեսզի հետագայում գնդակը արագ շարժվի}}}}} int checkPaddlePos () {// կարդում է կաթսան և համապատասխանաբար որոշում թիակի դիրքը, եթե (analogRead (A15) <93) {վերադարձնել 0; } else if (analogRead (A15) <186) {վերադարձ 1; } else if (analogRead (A15) <279) {վերադարձ 2; } else if (analogRead (A15) <372) {վերադարձ 3; } else if (analogRead (A15) <465) {վերադարձ 4; } else if (analogRead (A15) <558) {վերադարձ 5; } else if (analogRead (A15) <652) {վերադարձ 6; } else if (analogRead (A15) <745) {վերադարձ 7; } else if (analogRead (A15) <837) {վերադարձ 8; } else if (analogRead (A15) <= 931) {վերադարձ 9; } else if (analogRead (A15) <= 2014) {վերադարձ 10; }} void drawPaddles () {// նկարում է թիակները ճիշտ տեղում և ցուցադրում հաշիվը թիակի վրա (int i = 0; i <5; i ++) {if (playerScore == 1) {շերտի համար: setPixelColor (pPaddle+i, շերտ. Գույն (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (199+cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {for (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0))); } strip.show (); }
Քայլ 8: Պատրաստի արտադրանք
Եվ ահա, պատրաստի վերնաշապիկը:
Խորհուրդ ենք տալիս:
Arduino Pinball մեքենա, որն ինքն է խաղում: 13 քայլ (նկարներով)
Arduino Pinball մեքենա, որն ինքն իրեն է խաղում. Լսում եմ, որ հարցնում ես: Միգուցե, եթե դու ինքնավար ռոբոտների մեջ չես, դա կարող է: Ինձ, սակայն, ես ամենից շատ զբաղվում եմ ռոբոտներ կառուցելով, որոնք կարող են հիանալի բաներ անել, և այս մեկը
Ինչպես կարել LED- ները վերնաշապիկի մեջ. 9 քայլ (նկարներով)
Ինչպես LED- ները կարել վերնաշապիկի մեջ. Այս շաբաթ ես այս նախագիծը դասավանդեցի որպես սեմինար ITP ճամբարում: Ես տեսահոլովակ եմ պատրաստել, որպեսզի իմ աշակերտները տեսնեն, թե ինչ եմ անում (ամեն ինչ առցանց է): Քանի որ գեղեցիկ ստացվեց, ես մտածեցի, որ այն նույնպես այստեղ կկիսեմ: Սա կեղտաջրերի միացման նախագիծ է
Ինչպես վերանորոգել կոտրված կամ պատռված ճկուն / ճկուն մալուխներ. 5 քայլ
Ինչպես վերանորոգել կոտրված կամ պատռված ճկուն / ճկուն մալուխներ. Մալուխի իրական չափը 3/8 դյույմ լայնությամբ էր:
Երկակի գույնի դիզայն ՝ ջերմության փոխանցման վինիլային վերնաշապիկի համար. 10 քայլ (նկարներով)
Երկակի դիզայնի ջերմության փոխանցման վինիլային վերնաշապիկի համար. Այս հրահանգը կսովորեցնի ձեզ, թե ինչպես պատրաստել շապիկ երկակի գունավոր վինիլային դիզայնով `օգտագործելով ջերմ մամլիչ: Նյութեր-atերմային փոխանցում վինիլ Վինիլային դանակ Համակարգիչ Vinylmaster ծրագրով atերմ մամլիչ Մկրատներ Weeder T-shirtRulerX-ACTO դանակ
Պոնգը Arduino- ում ՝ Պիրսոնի և aceեյսի կողմից. 5 քայլ (նկարներով)
Pong on the Arduino by Pierson and Jace: Սա ուսանելի է, թե ինչպես կարելի է պոնգ խաղալ arduino- ով: Այն պատմվում է հինգ պարզ քայլով: Հուսով ենք, որ դուք կվայելեք մեր խաղը: