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

4WD ռոբոտով շարժվող հեռակառավարման USB խաղային վահանակի միջոցով `6 քայլ
4WD ռոբոտով շարժվող հեռակառավարման USB խաղային վահանակի միջոցով `6 քայլ

Video: 4WD ռոբոտով շարժվող հեռակառավարման USB խաղային վահանակի միջոցով `6 քայլ

Video: 4WD ռոբոտով շարժվող հեռակառավարման USB խաղային վահանակի միջոցով `6 քայլ
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Հունիսի
Anonim
Image
Image

Իմ հաջորդ ռոբոտաշինության նախագծի համար ես ստիպված էի ճարտարապետել/նախագծել իմ սեփական ռոբոտների հարթակը ՝ չնախատեսված հանգամանքների պատճառով:

Նպատակն այն է, որ այն ինքնավար լինի, բայց առաջին հերթին ես պետք է ստուգեի նրա հիմնական վարելու ունակությունը, ուստի ես մտածեցի, որ զվարճալի կողմնակի նախագիծ կլինի վարվելն ու կառավարվելը, կարծես դա RC (ռադիոկառավարվող) մեքենա լինի:, բայց փոխարենը օգտագործեք USB Gamepad:

Արդյունքները եղել են մոտավորապես լավ կամ ավելի լավ, քան ես սպասում էի:

USB Gamepad երթուղով անցնելու առավելությունը ՝ բազմաթիվ ծրագրավորմամբ, այն է, որ ես կարող եմ այն հարմարեցնել և ավելացնել այն, ինչ արդեն արել եմ: Ես RC մեքենա կառուցելու ոչ մի իրական փորձ չունեմ, բայց ես պատկերացնում եմ, որ այն բավականին խրված է այն ամենի հետ, ինչ RC հաղորդիչով (ջոյստիկներ/կոճակներ և այլն) և RC ընդունիչով:

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

Ըստ ցանկության, կարելի է ռոբոտին ավելացնել մի քանի USB տեսախցիկ ՝ կախված դրանցից և դրանց տեղադրությունից, կարող եք ռոբոտին քշել կենդանի տարածքում և մեկ այլ սենյակ, մինչդեռ ինչ -որ այլ տեղ նստած համակարգչի առջև, որին միացված է USB Gamepad- ը: այն

Այս հրահանգը չի լինի ճշմարիտ, մանրամասն, համապարփակ, քայլ առ քայլ, թե ինչպես, բայց ես կփորձեմ հնարավորինս մանրամասն ներկայացնել:

Պարագաներ

Առաջարկվող մասեր. Սրա մեծ մասը ես ստացել եմ Servo City- ից (Actobotics):

2 - 13.5 U- ալիքներ, հիմքի շրջանակի կողմերի համար: Շարժիչները տեղադրված են դրա վրա: Ես գնացի ավելի կարճ բանով, և շարժիչներս տեղադրված են հենց անկյուններում, և դա դժվարացրեց դրանց տեղադրումը:

2 - 12 U- ալիքներ` հիմնական շրջանակի առջևի և հետևի համար:

2 - 15 U- ալիքներ բամպերի համար` առջևի և հետևի

2 - 7 (թե՞ դա 7,5 դյույմ էր) U- ալիքներ առջևի սյուների համար: Սա չափազանց կարևոր չէ, երկարությունները կարող են տարբեր լինել: Դա կախված է նրանից, թե որքան բարձր են հետևի սյուները և որ բարձրության վրա եք ընտրում անկյունը դնելը: U- ալիք, որը կապում է նրանց միջև:

2-(երկարությա՞ն) U- ալիքներ ՝ անկյան տակ գտնվող անդամի համար ՝ առջևից հետևի, միացնելով ուղղաձիգ սյուները: Այս մեկը չափազանց կարևոր է, քանի որ Servo City / Actobotics- ն այս նպատակով վաճառում է 45 աստիճանի անկյունային վահանակներ կամ փակագծեր, բայց դուք պետք է որոշ մաթեմատիկա / ձգան կատարեք `համոզվելու համար, որ ճիշտ երկարություններ եք ստանում:

2-(երկարությա՞ն) U ալիքներ, որոնք կծառայեն որպես ավելի բարձր մակարդակի կողային բամպեր, դրանք կրկին կախված են այն բանից, թե ինչ եք անում հիմքի հետ

2-(երկարությա՞ն) U ալիքներ, որոնք կարող են ծառայել որպես ավելի բարձր մակարդակի առջևի և հետևի բամպերներ, նույնը ՝ վերևում:

1 - (երկարությա՞ն) U- ալիքը ՝ որպես ամենաբարձր անդամը ծառայելու համար, տարածվում է հետևի սյուների վրայով: Այս մեկը կարող է չափազանց կարևոր չլինել, քանի որ կարող եք ամրացնել վերևում կամ ուղղահայաց սյուների դիմաց / հետևում:

12 (մոտ) L- ալիքներ կամ փակագծեր: Դրանք ծառայում են բազմաթիվ նպատակների, բայց էապես ապահովում են կառուցվածքային ամբողջականություն/ամրություն բազային շրջանակի անկյուններին և ուղղաձիգ սյուներին:

4 (+?) 3-անցք դեպի 5-փոս հարթ ալիքներ: Սրանք նաև կառուցվածքային ամրություն են հաղորդում ռոբոտին:

ServoCity- ն վաճառում է երկու հիմնական տիպի լայնածավալ հարթ վահանակներ, որոնք օգտակար են որպես ներքևի սահարան կամ վերև, որտեղ մարտկոցը կամ կարգավորիչները կգնային, կամ նույնիսկ սենսորների ավելի բարձր մակերևույթի համար:

Կա 4 (4.5) «X 12» վահանակ, իսկ ես կարծում եմ, որ մյուսը 9 (9.5?) »X 12 վահանակ է:

Այժմ այստեղ ամեն ինչ հետաքրքիր է դառնում և կարող է շփոթեցնող և թանկ լինել (փոքր մասերը գումարվում են): Բոլոր կապուղիները և այլն, կարող են կցվել միմյանց այս միացնող կտորների միջոցով, որոնցից կան ՍԵՓԱԿԱՆ: Այստեղ ես ցավում եմ, որ չունեմ մասերի համապարփակ, մանրամասն, կոնկրետ ցուցակ:

Եվ բանն այն է, որ դուք իսկապես չգիտեք, թե որոնք կարող են ձեզ անհրաժեշտ լինել, կամ քանիսը … քանի որ շատ տարբերակներ կան, որոնք կարող են համատեղել այս կտորները միասին:

Ես կարող եմ թվարկել, թե ինչ եմ օգտագործել.

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

Հետևյալ երկուսը շատ հարմար են, և ես պարզապես կբաժանեմ դրանք:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Հաջորդը բոլոր պտուտակներն են (պտուտակներ): Ես սկսեցի յուրաքանչյուրի չափի փաթեթով, և ես անցել եմ դրանցից շատերի միջով: Ես օգտագործում էի ավելի երկար պտուտակներ, որտեղ չափը նշանակություն չուներ, և ավելի կարճները պահում էի այնտեղ, որտեղ դրանք ՊԱՐՏԱԴԻՐ էին, քանի որ այլ երկարություն չէր աշխատի:

Ի վերջո, դուք պետք է ձեռք բերեք դրանցից 1 պայուսակ.

www.servocity.com/6-32-nylock-nuts-pack

Ես այդքան շատ չեմ օգտագործել, բայց դրանք (կարծում եմ) շատ կարևոր են `համոզվելու համար, որ ձեր շարժիչները ժամանակի ընթացքում չեն թրթռում շրջանակից: Յուրաքանչյուր երկշարժիչի համար կաշխատեն միայն երկուսը ՝ U ալիքի պատճառով

Ձեզանից կպահանջվի դրանցից առնվազն 4 -ը, գուցե մեկից ավելին ստանաք, եթե մեկին վնաս պատճառեք (հավատացեք ինձ, գուցե մի քանի անգամ միացնում / անջատում եք շարժիչները).

www.servocity.com/heavy-duty-clamping-shaf…

Սովորաբար, շարժիչների առանցքները 6 մմ են, իսկ առանցքները ՝ 1/4 դյույմ (0.25 դյույմ):

Ես կստանայի մի քանի սև պտուտակներ, որոնք ենթադրաբար ավելի ուժեղ էին, և դրանք կօգտագործեի վերը նշված սեղմակների համար, և ՉԻ օգտագործի այն պտուտակները, որոնք գալիս են սեղմակների հետ.

(Կարծում եմ, որ դրանք են):

4 - 1/4 "(0.25") տրամագծով առանցքակալներ

1 - տոպրակ սև 1/4 դյույմանոց բացատներով

4 - սեղմիչ D -Hubs

www.servocity.com/0-770-clamping-d-hubs

4-D- լիսեռներ (#6340621.375 "(1-3/8")

4-6 դյույմանոց ծանր անիվներ

www.servocity.com/6-heavy-duty-wheel

Նկատի ունեցեք, որ ես սիրում եմ այս անիվները, բայց դրանք կոշտ ռետինե եզր ունեն: Կարծես թե նրանք լավ են աշխատում կոշտ հատակների, գորգերի և, հավանաբար, կոշտ բետոնե զբոսանքների վրա: Լավ չի գործի խոտի, ավազի և այլնի վրա:

ՆԱԵՎ, նրանք հակված են պղտորել ձեր գորգը !!!

4 - շարժիչներ.

www.servocity.com/motors-actuators/gear-mo…

Ես շարժվեցի 223 RPM- ով, լավ ներքին արագությամբ, կարող էի նաև դանդաղ շարժման մեջ բավականին հեշտությամբ տեղաշարժել իմ ռոբոտը (ծանր 2 SLA 12V մարտկոցներով):

2 - շարժիչների կոդավորիչներ շարժիչների համար: (Servo City's Roboclaw- ը վարում է միայն 2 կոդավորիչ)

1 - Roboclaw 2X45A շարժիչի վերահսկիչ, համոզվեք, որ այն ձեռք եք բերում կանաչ տերմինալային բլոկներով, այլ ոչ թե կապում…: լավ… յուրաքանչյուրն ունի իր առավելությունները: Խորաթափանցություն.. Ես գուցե ստացել եմ կապում:

Կարծում եմ `դա Սերվո Սիթիից է:

SparkFun- ը վաճառում է Arduino Uno- ն (դա այն է, ինչ ես օգտագործել եմ), ինչպես նաև Redboard Artemis- ը ՝ որպես ձեր դրայվի մենեջեր:

Դուք կցանկանաք Raspberry Pi 3 (թե՞ 4) որպես ձեր բարձր մակարդակի «ուղեղ» և ինտերֆեյս ձեզ համար:

Ձեզ հարկավոր են էլեկտրագծեր, անջատիչներ, ապահովիչներ և շատ ամուր «հետադարձ» դիոդ:

Ես օգտագործել եմ Duracell 12V 14AH խորքային ցիկլի SLA մարտկոց, բայց դուք կարող եք օգտագործել ամեն ինչ:

WԳՈՇԱՈՄ Այս ռոբոտի դիզայնը (ԲԱALL, և ԼԱID, բայց ՇՈORTՏ) ենթադրում է ծանրության մի տեսակ ծանր կենտրոն, ինչպիսին կարող էր ապահովել SLA մարտկոցը: Այն կարող է լավ չանել նոր տեսակի տեխնոլոգիայի մարտկոցների այլ տեսակների հետ: LiPo, Lion և այլն: Այն կարող է հեշտությամբ շրջվել:

Pololu- ից ես ստացա մի քանի տակառի ադապտեր, որպեսզի կարողանամ ինքնուրույն սնուցել Arduino- ն և/կամ Redboard- ը, չնայած որ դրանք միացված կլինեին ազնվամորիին USB- ի միջոցով, քանի որ ես չէի ուզում հույսը դնել ազնվամորու հզորության վրա:. (Հատկապես տեղադրվող տեսախցիկներ, տվիչներ և այլն)

Ձեզ անհրաժեշտ կլինի 12-ից 5 Վ լարման իջեցման լարման կարգավորիչ ՝ ազնվամորիի համար նվազագույնը 5A (?): Մյուսները կարող են ամեն ինչ կարգավորել 7 -ից 15 Վ լարման միջև, այնպես որ անմիջապես SLA մարտկոցին:

Դա մասերի մասին է:

Այն, ինչ ես չէի անի `90 աստիճանի շեղված հանդերձում:

Կրկին, իմ Robotics youtube երգացանկում կան բազմաթիվ տեսանյութեր, որոնք մանրամասն նկարագրում են վերը նշվածներից շատերը:

Քայլ 1: Շինարարություն

Անկեղծ ասած, իմ բոլոր շինարարական քայլերն արդեն YouTube- ի տեսքով են: Դուք կարող եք տեսնել դրանք իմ Robotics երգացանկում ՝ սկսած «Wallace Robot 4» -ից: Նախորդները (Wallace II, Wallace III) նույնպես լավ նյութ ունեն

www.youtube.com/playlist?list=PLNKa8O7lX-w…

Քայլ 2. Փորձարկեք Roboclaw- ը, Motors- ը և Encoders- ը

Roboclaw (BasicMicro) ստեղծողներն ունեն Windows ծրագիր, որը կարող եք օգտագործել ՝ համոզվելու համար, որ շարժիչները և կոդավորիչները ճիշտ եք միացրել Roboclaw- ին: Դուք Roboclaw- ին զուգահեռ կկապեք նույն կողմի շարժիչները: Դուք կարող եք ընտրել կոդավորող լարերը ՝ միայն հետևի կամ առջևի շարժիչների վրա, կամ գուցե նույնիսկ ավելի լավ ՝ ԱՍՏՎԱԱՇՈՆՉ:

Իմ առաջարկության պատճառը կապված է (հետագայում) խրված ռոբոտի ստուգման հետ: Առջևի/հետևի անիվները պտտվող/չթեքվող կարգավիճակի անկյունագծով լինելը կարող է ավելի լավ լինել, քան պարզապես առջևը, կամ պարզապես հետևը:

Ո NOTՇԱԴՐՈԹՅՈՆ. Այն, ինչ ես ՉԵՄ արել, այն է, որ Arduino- ն օգտագործեմ նաև (GPIO կապում) կոդավորիչներին միանալու համար: հարցրեք Roboclaw- ին `երկու կոդավորիչի արժեքների (և արագության) համար:

ՈEՇԱԴՐՈԹՅՈՆ. Ես օգտագործել եմ BasicMicro- ի դիմումը ՝ Roboclaw- ը նախապես կազմաձևելու համար ՝ Ramping Up / Ramping Down: Սա լավ է ապարատային և էլեկտրոնիկայի պաշտպանության համար: Այդ մասին տեսանյութ կա Robotics- ի իմ տեսացանկում:

Ես գրեթե մոռացել էի. Ես նաև գնեցի մի քանի փամփուշտ միակցիչ մալուխներ, որոնք անցնում են շարժիչի մալուխների և Roboclaw- ի միջև: ՈEՇԱԴՐՈԹՅՈՆ. Եթե դա անեք, կնկատեք, որ մալուխի ընդհանուր երկարությունը ԻՐԱԿԱՆՈ LONՄ Է: Բայց ես չէի ուզում որևէ մեկը կտրել, եթե դրա կարիքը չունենայի: Ես (հետագա քայլերի համար) բախվեցի USB- ի հետ շփման խնդիրներին ազնվամորիի և Arduino- ի միջև, հավանաբար EMI աղմուկի պատճառով: բայց ես դրա շուրջ աշխատել եմ ծրագրային ապահովման հետ:

Եթե դա խնդիր դառնա, կարող եք կարճ կտրել լարերը. Կարող եք նաև մետաղական պաշտպանություն գնել (Amazon- ից, 1 տրամագծով):

Վերջին բանը. Սա դեռ պետք է անեմ --- Roboclaw- ի ավտոմատ կազմաձևում կամ ավտոմատ կարգավորում (կոդավորիչների օգտագործմամբ) այնպես, որ ձախ և աջ կողային շարժիչները շարժվեն նույն արագությամբ, և ռոբոտը ուղիղ գնա:

Իմը շատ թեթևակի թեքվում է մոտ 12 ոտնաչափի վրա, բայց ոչ այնքան, որ անհրաժեշտություն զգայի դրա մասին որևէ բան անել:

Քայլ 3. Arduino- ի ավելացում և ծրագրավորում

Ձեզ հարկավոր է տակառի խրոցը և մի քանի լարեր, ինչպես նաև USB մալուխ: Համոզվեք, որ Arduino միակցիչի համար ստացել եք ճիշտը:

Ձեզ հարկավոր է ներբեռնել Arduino IDE- ն:

Ահա Github- ում ռոբոտին վարելիս աշխատող վերջին ուրվագիծը.

github.com/elicorrales/wallace.robot.ardui…

Դուք Arduino- ն կմիացնեք IDE- ով աշխատող ձեր համակարգչին, և էսքիզը գրվածի հիման վրա դուք կօգտագործեք Arduino- ի 10 -րդ և 11 -րդ կապերը Roboclaw- ի հետ սերիական հաղորդակցության համար (Software Serial):

Ես մշակեցի մի պարզ հաղորդակցության արձանագրություն Raspberry Pi- ի և Arduino- ի միջև:

Այն հիմնված է ASCII- բնույթի վրա, ինչը հեշտացնում է վրիպազերծումն ու փորձարկումը ՝ պարզապես օգտագործելով Arduino IDE- ի «սերիական մոնիտոր» պատուհանը:

Հրամանները սկսվում են «0» թվից (զրո) և անհրաժեշտության դեպքում պարզապես բարձրանում են

«20» -ից սկսվող հրամանները Roboclaw- ի անմիջական հրամաններ են, իսկ այդ թվից ներքև գտնվողները ՝ խիստ Arduino- ի հետ կապված հրամաններ:

EMI աղմուկի պատճառով ես կատարելագործեցի հրամանի տողը `ներառելով ստուգիչ գումար:

Այսպիսով, ցանկացած տող ներառում է.

# շարք նշաններ տողում, ներառյալ այս մեկը

ստուգիչ գումարը

Օրինակ, ասեք, որ ցանկանում եք, որ Arduino- ն պատասխանի իր հրամանների ընտրացանկով.

4 0 12 16

«4» -ը չորս նշան է տողում:

«0» - ը MENU հրամանն է:

«12» -ը իմ ընտրած պատահական թիվն է:

«16» -ը 4 + 0 + 12 -ի գումարն է:

Նույն MENU հրամանը կարող է տարբեր լինել.

4 0 20 24

Քանի որ ես ընտրեցի այլ պատահական թիվ, ստուգման գումարը նույնպես տարբեր է:

Օրինակ, ասեք, որ ցանկանում եք առաջ շարժվել 100 % արագությամբ.

5 29 0 134 100

«5» հինգ խորհրդանիշ

«29» FORWARD հրամանը

«0» պատահական թիվը

«134» ստուգիչ գումարը

«100» պարամետր 1 (արագությունն այս դեպքում)

Եթե Arduino- ն չի կարող ստուգել այդ մուտքային տողը, այն պարզապես թողնում է այն / անտեսում այն, ոչ մի պատասխան:

Եթե Arduino- ն չի ստանում շարժման հաջորդ հրամանը X միլիվայրկյանով, այն STOP շարժիչներ է ուղարկում Roboclaw- ին:

Arduino- ն գործարկվում է և սկսում է ինքնաբերական կարգավիճակ ուղարկել USB պորտին … եթե չասվի դադարեցնել դա:

Այս պահին դուք պետք է պատրաստ լինեք փորձելու վերահսկել Roboclaw- ը և հետևել շարժիչների պտույտին, պարզապես IDE- ում «Սերիական մոնիտոր» օգտագործելով:

Քայլ 4: Ավելացնել և ծրագրավորել Raspberry Pi (node.js)

Կրկին, եթե նայեք իմ Robotics երգացանկին, նույնիսկ սկզբից, ես ամեն քայլափոխի անցել եմ, որ ազնվամորին գործի դնեմ:

Միակ բանը, որ ես կարող էի շոշափել, այն է, որ ձեզ հարկավոր կլինի 5 Վ կարգավորիչ, կամ դրա համար ինչ -որ կերպ կառուցեք, կտրեք/փոփոխեք USB մալուխը կամ այլ կերպ աշխատեք Ազնվամորիով:

Այստեղ ՝ Github- ում, այն ամենն է, ինչ ձեզ հարկավոր է Ազնվամորիում ՝ USB- ի միջոցով Arduino- ի հետ հաղորդակցվելու համար:

github.com/elicorrales/wallace.robot.raspb…

Կան նույնիսկ փորձնական սցենարներ:

Կարող եք նայել node.js սերվերի կոդին և կտեսնեք, թե ինչպես է Ազնվամորը փոխակերպում կարճ թվային հրահանգները REST տիպի url տողերի: Դուք կարող եք օգտագործել «curl» ՝ թեստային հրամաններ ուղարկելու համար:

Օրինակ:

ձեր RP3 IP հասցեն ՝ 8084/arduino/api/forward/50

կհանգեցնի, որ շարժիչները վայրկենապես պտտեն անիվները առաջ:

Եթե դա դնեք խեցու սցենարի օղակի մեջ, կտեսնեք, որ անիվները շարունակում են պտտվել:

Node.js ծածկագիրը (server.js) ներառում է նորից միացման գործառույթ, եթե սերիական կոմունալները կորչեն Arduino- ին: Դուք կարող եք դա ստուգել ՝ պարզապես Arduino- ն ազնվամորիից միացնելուց և նորից միացնելուց:

Համոզվեք, որ դուք համապատասխանում եք սերիական baud փոխարժեքին երկուսի միջև:

Քանի որ Arduino- ն տվյալների վատ փաթեթներ է գցում, և քանի որ node.js մակարդակում և զննարկչի javascript մակարդակում ամեն ինչ կոդավորված է բազմաթիվ «դրայվ» հրամաններ ուղարկելու համար, ես կարողացել եմ աշխատել մինչև 2 000 000 baud (2 Մբիթ / վրկ):

Եթե փորձնական սցենարները գործարկվեն և տեսնում եք, որ անիվները պտտվում են, ապա պատրաստ եք հաջորդ քայլին:

Քայլ 5. Վերջնական քայլ - mingրագրավորում / վեբ էջի հաճախորդի օգտագործում

Այս ամենի ազնվամորու հատվածին Github- ի հղման մեջ ներառված են հաճախորդի ֆայլերը:

index.html: index.js. p5.min.js.

Նրանք կարգավորում են USB Gamepad- ը Gamepad API- ի միջոցով (բրաուզերի վրա հիմնված) և դուք պետք է տեսնեք տարբեր կոճակներ և սահիչներ, որոնք առկա են նաև վեբ էջում:

Javascript ծածկագիրը հարցումներ է անում (հարցում) X և Y առանցքի արժեքները ջոյստիկներից մեկի համար: Այն շատ արագ է հարցումներ անցկացնում, և այն ջնջում է այդ բոլոր արժեքները node.js սերվերին ՝ լսելով 8084:

Theոյստիկների չմշակված X- և Y առանցքի արժեքները 0-ից 1-ի սահմաններում են:

Բայց Roboclaw շարժիչի վերահսկիչի գրադարանի գործառույթը, որն օգտագործվում է Arduino- ում `շարժիչները քշելու համար, ակնկալում է -100 -ից 0 (հետընթաց) կամ (0 -ից 100) միջև արժեք:

Սու…. դա է նպատակը ներառել p5.min.js. Պարզապես պատահում է ունենալ այս շատ գեղեցիկ, հարմար քարտեզ () գործառույթը, որտեղ նրան տալիս եք հում արժեքը, դա հում (ընթացիկ) միջակայքն է և նոր, ցանկալի տիրույթը: Եվ դա փոխակերպում է հումքի արժեքը նոր, քարտեզագրված տիրույթի արժեքի:

Մեկ այլ կետ. 100 արագության դեպքում ռոբոտը կարող է շատ բարդ լինել: Ես անընդհատ բախվում էի ինչ -որ բանի: Բայց նույնիսկ երբ դրանով ավելի լավանում ես, այն դեռ հուզիչ է ձախ կամ աջ պտտվելիս:

Ձեր ավելացնելու համար նման կլինի վեբ էջի ընթացիկ Max Speed սահողին: Այդ սահիկը որոշում է, թե որն է ամենաբարձր կամ առավելագույն արժեքը, որին պետք է քարտեզագրեք Xs և Ys ջոստիկները:

Օրինակ:

Ասեք, որ քարտեզագրում եք 0 -> 1 -ից 0 -> 100: Երբ դուք ջիշտիքին դնում եք լրիվ կանգառով, դուք 100 -ում եք: Գուցե չափազանց արագ լինի:

Բայց, եթե այդ արագության սահիկը մի փոքր հետ եք սահում, ապա այժմ քարտեզագրում եք 0 -> 1 -ից 0 -> 80 կամ 70:

Դա նշանակում է, որ դուք ավելի մեծ ազատություն ունեք ՝ ձեր ջիստիկը տեղափոխելու համար ՝ առանց հանգույցին. Js (և Arduino) ուղարկվող արագության այդքան մեծ փոփոխության:

Եվ հավելումը, որը դուք կարող եք անել, այն է, որ առանձնացնել X- ները (պտտել ձախ կամ աջ) Y- ներից (առաջ կամ հետ) `իրենց հասանելի առավելագույն արագությունների մեջ:

Այսպիսով, դուք կարող եք Y- ները թողնել 0 -ից 100, 0 -ից -100 -ի արագ գծային շարժման համար, բայց իջեցնել Xs առավելագույն արագությունը `ավելի վերահսկվող պտտվող շարժման համար: Երկու աշխարհներից լավագույնը:

Քայլ 6. Լրացուցիչ. Drive Robot With Mouse քաշել և / կամ Touch իրադարձություններ

Եթե այսքան հեռու եք հասել, ապա գիտեք, որ ծրագրաշարի շերտերը ՝ սկսած դիտարկիչից և Javascript- ի միջոցով մինչև Raspberry node.js սերվերը, վերջապես arduino- ին, փոխակերպում է Gamepad joystick X- ի և Y- կոորդինատները »: առաջ »(կամ« հետընթաց »և այլն) հրամանները (և դրանց արագության արժեքը):

Ավելին, դուք գիտեք, որ եթե ջոյսթիքների X- ն և Y- ը բացասական են 1 -ից զրոյի, գումարած 1 -ի, դրանք պետք է փոխարկվեն զրոյի և 100 -ի: Դե, առավելագույնը կախված է վեբ էջի առավելագույն արագության կարգավորումից:

Soo… միակ բանը, որ կարելի է անել մկնիկի կամ հպման իրադարձությունների համար (ինչպես սմարթֆոնում), այդ իրադարձությունները ֆիքսելն է, գրավել X- երը և Y- ները:

ԱՅԼ ---- այդ X- ն և Y- ը ՉԻ 1-ի և 1-ի միջև: Նրանք սկսում են 0-ը և ավելանում են դրական, քանի որ դրանք ըստ էության HTML- ի որոշ տարրի պիքսելներ կամ հարաբերական կոորդինատներ են (օրինակ ՝ bootstrap panel) կամ կտավ:

Այսպիսով, կրկին, P5- ի Js գրադարանի «քարտեզ ()» գործառույթը շատ հարմար է մեզ անհրաժեշտի վերագրանցման համար:

Ես վերափոխեցի կոդը ՝ ունենալու երկու տարբեր վեբ էջեր, մեկը Gamepad- ով աշխատասեղանի համար, մյուսը ՝ բջջայինի համար, օգտագործելով հպման իրադարձությունները:

Բացի այդ, X- երը և Y- ները նորից քարտեզագրվելուց հետո դրանք մտնում են նույն ծածկագրի շղթայի մեջ և այլն, ինչպես նաև Xs և Y- երը Gamepad- ից:

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