Სარჩევი:

4WD რობოტიანი დისტანციური დისტანციური USB Gamepad: 6 ნაბიჯი
4WD რობოტიანი დისტანციური დისტანციური USB Gamepad: 6 ნაბიჯი

ვიდეო: 4WD რობოტიანი დისტანციური დისტანციური USB Gamepad: 6 ნაბიჯი

ვიდეო: 4WD რობოტიანი დისტანციური დისტანციური USB Gamepad: 6 ნაბიჯი
ვიდეო: ЛАДА 4WD - ПЕРВЫЙ ВЫЕЗД 2024, ივნისი
Anonim
Image
Image

ჩემი შემდეგი რობოტექნიკის პროექტისთვის, იძულებული გავხდი არქიტექტორი/შემუშავებულიყო ჩემი საკუთარი რობოტის პლატფორმა გაუთვალისწინებელი გარემოებების გამო.

მიზანი არის ის იყოს ავტონომიური, მაგრამ პირველ რიგში, მე უნდა შემემოწმებინა მისი ძირითადი მართვის უნარი, ამიტომ ვიფიქრე, რომ სახალისო გვერდითი პროექტი იქნებოდა ისე მოქცევა და კონტროლი, როგორც ეს იყო RC (რადიო კონტროლირებადი) მანქანა, მაგრამ სამაგიეროდ გამოიყენეთ USB Gamepad.

შედეგები იმაზე კარგი ან უკეთესი იყო ვიდრე ველოდი.

USB Gamepad მარშრუტის გავლის უპირატესობა, უამრავი პროგრამირებით არის ის, რომ შემიძლია მისი მორგება და დამატება იმაზე, რაც უკვე გავაკეთე. მე არ მაქვს RC ავტომობილის მშენებლობის რაიმე რეალური გამოცდილება, მაგრამ მე წარმომიდგენია, რომ ის საკმაოდ მიჯაჭვულია რა RC გადამცემთან (ჯოისტიკები/ღილაკები და ა.შ.) და RC მიმღები.

მაგალითად, მე დავამატე გარკვეული აღიარება იმისა, რომ რობოტი შეეჯახა კედელს, მხოლოდ იმის გამო, რომ პროგრამულმა პროგრამამ გამოავლინა მაღალი დენებისა და დაბალი კოდირების სიჩქარის მნიშვნელობები.

სურვილისამებრ, შეგიძლიათ დაამატოთ რამდენიმე USB კამერა რობოტს, იმის მიხედვით თუ რამდენი და მათი განლაგება, შეგიძლიათ რობოტი მართოთ საცხოვრებელ ადგილას და სხვა ოთახში, კომპიუტერის წინ სხვაგან ჯდომისას, რომელსაც აქვს USB Gamepad დაკავშირებული. ის

ეს ინსტრუქცია არ იქნება ჭეშმარიტი, დეტალური, ყოვლისმომცველი, ეტაპობრივად როგორ, მაგრამ შევეცდები რაც შეიძლება მეტი დეტალი მოგაწოდოთ.

მარაგები

შემოთავაზებული ნაწილები: ამის უმეტესობა მე მივიღე სერვო სიტიდან (აქტობიტიკა).

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 - C -clamping 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 საავტომობილო კონტროლერი, დარწმუნდით, რომ თქვენ მიიღებთ ერთს მწვანე ტერმინალის ბლოკებით და არა ქინძისთავებით…. კარგად… თითოეულს აქვს თავისი უპირატესობა. Hindsight.. შეიძლება ქინძისთავები მივიღე.

ვფიქრობ, ეს სერვო სიტიდან არის.

SparkFun ყიდის Arduino Uno- ს (ეს არის ის, რაც მე გამოვიყენე) და ასევე Redboard Artemis როგორც თქვენი დისკის მენეჯერი.

თქვენ გსურთ ჟოლო Pi 3 (ან 4?), როგორც თქვენი მაღალი დონის "ტვინი" და ინტერფეისი თქვენთვის.

თქვენ დაგჭირდებათ გაყვანილობა, გადამრთველები, დაუკრავენ და ძალიან გამძლე "flyback" დიოდი.

მე გამოვიყენე Duracell 12V 14AH ღრმა ციკლის SLA ბატარეა, მაგრამ თქვენ შეგიძლიათ გამოიყენოთ ყველაფერი.

გაფრთხილება! ამ რობოტის დიზაინი (მაღალი და ფართო, მაგრამ მოკლე) ითვალისწინებს სიმძიმის ერთგვარ მძიმე ცენტრს, როგორიცაა SLA ბატარეა. ეს შეიძლება არ იყოს კარგად იმ სხვა ტიპის ახალი ტექნოლოგიის ბატარეის პაკეტებთან. LiPo, Lion და ა.შ. მას ადვილად გადააგდებდა.

Pololu– დან მე მივიღე რამდენიმე ლულის შესაერთებელი გადამყვანი, რომ დამოუკიდებლად შემეძლო Arduino– ს და/ან დაფის დაფარვა, მიუხედავად იმისა, რომ ისინი ჟესბეს USB- ის საშუალებით იქნებოდა დაკავშირებული, რადგან არ მინდოდა ჟოლოს ენერგიაზე დაყრდნობა. რა (განსაკუთრებით სამონტაჟო კამერები, სენსორები და ა.

თქვენ დაგჭირდებათ 12-დან 5 ვ-მდე ძაბვის მარეგულირებელი, მინიმუმ 5 ა (?) ჟოლოსთვის. დანარჩენებს შეუძლიათ ნებისმიერი რამის დამუშავება 7 -დან 15 ვ -მდე, ასე პირდაპირ SLA ბატარეაზე.

ეს დაახლოებით ნაწილების შესახებ.

რასაც მე არ გავაკეთებ - 90 გრადუსიანი დახრილი გადაცემა.

ისევ და ისევ, ჩემს Robotics youtube- ის დასაკრავ სიაში ბევრი ვიდეოა, სადაც აღწერილია ზემოაღნიშნულის უმეტესობა.

ნაბიჯი 1: მშენებლობა

გულწრფელად რომ ვთქვათ, ჩემი ყველა სამშენებლო ნაბიჯი უკვე არის youtubes სახით. თქვენ შეგიძლიათ ნახოთ ისინი ჩემს Robotics დასაკრავ სიაში, დაწყებული "Wallace Robot 4" -ით. წინა მასალებს (Wallace II, Wallace III) ასევე აქვთ კარგი მასალა

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

ნაბიჯი 2: შეამოწმეთ Roboclaw, Motors და Encoders

Roboclaw– ის შემქმნელებს (BasicMicro) აქვთ Windows პროგრამა, რომლის საშუალებითაც შეგიძლიათ დარწმუნდეთ, რომ ძრავები და კოდირები სწორად არის მიერთებული Roboclaw– ში. თქვენ დააკავშირებთ ერთსა და იმავე ძრავას რობოკლავის პარალელურად. თქვენ შეგიძლიათ გამოიყენოთ კოდირების მავთულები, მხოლოდ უკანა ძრავებზე, ან წინა ძრავებზე, ან შესაძლოა უკეთესიც - დიაგონალურად.

ჩემი წინადადების მიზეზი დაკავშირებულია (შემდგომში) ჩარჩენილი რობოტის შემოწმებასთან. დიაგონალზე სტატუსის არსებობა, თუ წინა/უკანა ბორბლები მოტრიალებულია/არ ბრუნავს, შეიძლება იყოს უკეთესი, ვიდრე წინა, ან მხოლოდ უკანა.

შენიშვნა: რაც მე არ გამიკეთებია არის Arduino– ს გამოყენება ასევე (GPIO ქინძისთავებით) დამშიფრებლებთან - თუ ეს გააკეთეთ, თქვენ გექნებათ Roboclaw– ის დამუშავების 2 დამშიფრებელი, შემდეგ კი Arduino– ს მოუწევს დანარჩენი ორი, და მხოლოდ გამოკითხეთ Roboclaw მისი ორი კოდირების მნიშვნელობისთვის (და სიჩქარისთვის).

შენიშვნა: მე გამოვიყენე BasicMicro– ს პროგრამა Roboclaw– ის წინასწარ კონფიგურაციისთვის Ramping Up / Ramping Down. ეს კარგია ტექნიკისა და ელექტრონიკის დასაცავად. ამის შესახებ არის ვიდეო ჩემს Robotics დასაკრავ სიაში.

კინაღამ დამავიწყდა: მე ასევე შევიძინე ტყვიის შესაერთებელი კაბელები, რომლებიც მიდის საავტომობილო კაბელებსა და რობოკლავს შორის. შენიშვნა: თუ ამას გააკეთებთ, შეამჩნევთ, რომ კაბელის მთლიანი სიგრძე მართლაც გრძელია. მაგრამ მე არ მინდოდა რაიმე მომეჭრა თუ არ დამჭირდებოდა. მე (შემდგომი ნაბიჯებისთვის) წავაწყდი USB– სთან კომუნიკაციის პრობლემებს ჟოლოსა და არდუინოს შორის, ალბათ EMI ხმაურის გამო.. მაგრამ მე ვმუშაობ პროგრამულ უზრუნველყოფაზე.

თუ ის პრობლემად იქცევა, შეგიძლიათ მოკლედ შეწყვიტოთ მავთულები - ასევე შეგიძლიათ შეიძინოთ ლითონის დამცავი (ამაზონიდან, 1 დიამეტრით).

ბოლო რამ: ეს მე ჯერ უნდა გავაკეთო --- Roboclaw– ის ავტომატური კონფიგურაცია ან ავტომატური დაყენება (კოდირების გამოყენებით) ისე, რომ მარცხენა და მარჯვენა ძრავები მოძრაობდეს ერთი სიჩქარით და რობოტი მიდის პირდაპირ.

ჩემი ძალიან მრუდეა დაახლოებით 12 ფუტზე, მაგრამ არა საკმარისად, რომ ვიგრძენი რაიმეს გაკეთების აუცილებლობა.

ნაბიჯი 3: არდუინოს დამატება და დაპროგრამება

თქვენ დაგჭირდებათ ლულის დანამატი და გაყვანილობა, ასევე USB კაბელი. დარწმუნდით, რომ მიიღეთ სწორი Arduino კონექტორისთვის.

თქვენ უნდა გადმოწეროთ Arduino IDE.

აქ Github– ში არის უახლესი ესკიზი, რომელიც ახორციელებს რობოტის მართვას:

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

თქვენ დაუკავშირებთ Arduino– ს თქვენს კომპიუტერს IDE– ით და ესკიზის დაწერის საფუძველზე თქვენ გამოიყენებთ Arduino– ს მე –10 და მე –11 პინებს Roboclaw– თან სერიული კომუნიკაციისათვის (პროგრამული სერია).

მე შევიმუშავე მარტივი საკომუნიკაციო პროტოკოლი Raspberry Pi- სა და Arduino- ს შორის.

ის დაფუძნებულია ASCII სიმბოლოზე, რაც აადვილებს შეცდომების გამართვას და გამოცდას Arduino IDE- ს "სერიული მონიტორის" ფანჯრის გამოყენებით.

ბრძანებები იწყება რიცხვიდან "0" (ნულოვანი) და საჭიროებისამებრ იზრდება

"20"-ში დაწყებული ბრძანებები არის პირდაპირი Roboclaw ბრძანებები, ხოლო ქვემოთ მოცემული რიცხვები მკაცრად არდუინოსთან დაკავშირებული ბრძანებებია.

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– ს არ შეუძლია შეამოწმოს შემომავალი სტრიქონი, ის უბრალოდ ჩამოაგდებს მას / იგნორირებას უკეთებს, არ პასუხობს.

თუ არდუინო არ მიიღებს მოძრაობის შემდგომ ბრძანებას X მილიწამში, ის აგზავნის STOP ძრავებს რობოკლავში.

Arduino იწყებს მუშაობას და იწყებს ავტომატური სტატუსის გაგზავნას USB პორტში … თუ არ გითხრათ, შეწყვიტეთ ამის გაკეთება.

ამ დროს თქვენ მზად უნდა იყოთ რობოკლავის გაკონტროლება და ძრავის შემობრუნება, მხოლოდ IDE- ზე "სერიული მონიტორის" გამოყენებით.

ნაბიჯი 4: Raspberry Pi- ს დამატება და დაპროგრამება (node.js)

კიდევ ერთხელ, თუ გადახედავთ ჩემს Robotics კრებულს, თუნდაც თავიდანვე, მე გადავდგი ყველა ნაბიჯი ჟოლოს ასაწყობად.

ერთი რამ, რისი თქმაც შემიძლია, არის ის, რომ თქვენ დაგჭირდებათ 5 ვ რეგულატორი, ან როგორმე ააშენეთ, გაჭერით/შეცვალეთ USB კაბელი მისთვის, ან გაააქტიურეთ ჟოლო სხვა გზით.

აქ Github– ში არის ყველაფერი რაც თქვენ გჭირდებათ ჟოლოში Arduino– თან USB– ით კომუნიკაციისთვის.

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

საცდელი სკრიპტებიც კი არსებობს.

შეგიძლიათ გადახედოთ node.js სერვერის კოდს და დაინახავთ, თუ როგორ გარდაქმნის ჟოლო ჟოლოს ციფრულ ინსტრუქციებს REST ტიპის url სტრიქონებად. თქვენ შეგიძლიათ გამოიყენოთ "curl" საცდელი ბრძანებების გასაგზავნად.

მაგალითი:

თქვენი RP3 IP მისამართი: 8084/arduino/api/forward/50

გამოიწვევს ძრავების მომენტალურ ბრუნვას ბორბლებზე წინ.

თუ ამას სკრიპტის მარყუჟში ჩადებთ, დაინახავთ, რომ ბორბლები კვლავ ბრუნავს.

Node.js კოდი (server.js) მოიცავს ხელახალი კავშირის ფუნქციას იმ შემთხვევაში, თუ სერიული კომუნიკაციები დაიკარგება არდუინოსთან. თქვენ შეგიძლიათ შეამოწმოთ ეს მხოლოდ Arduino- ს ჟოლოდან გათიშვით და ხელახლა ჩართვით.

დარწმუნდით, რომ თქვენ შეესაბამება სერიულ ბაუდს ორს შორის.

იმის გამო, რომ არდუინომ ჩააგდო მონაცემების ცუდი პაკეტები, და რადგან node.js დონეზე და ბრაუზერის JavaScript დონეზე, ყველაფერი დაშიფრულია მრავალი "დისკის" ბრძანების გასაგზავნად, მე შემეძლო გაშვება 2 000 000 ბაუდამდე. (2 Mbps).

თუ გამოცდის სკრიპტებს გაუშვებთ და ხედავთ, რომ ბორბლები ბრუნავს, მაშინ მზად ხართ შემდეგი ნაბიჯისათვის.

ნაბიჯი 5: საბოლოო ნაბიჯი - პროგრამირება / ვებ გვერდის კლიენტის გამოყენება

ამ ყველაფრის ჟოლოს ნაწილის Github ბმულში შედის კლიენტის ფაილები.

index.html. ინდექსი. js. p5.min.js.

ისინი ამუშავებენ USB Gamepad– ს Gamepad API– ს საშუალებით (ბრაუზერზე დაფუძნებული) და თქვენ უნდა ნახოთ სხვადასხვა ღილაკები და სლაიდერი ასევე ხელმისაწვდომია ვებ გვერდზე.

Javascript კოდი ითხოვს (გამოკითხვას) X- და Y- ღერძის მნიშვნელობებს ერთ-ერთი ჯოისტიკისთვის.. (იმის მიხედვით, თუ რა ჯოისტიკები/გეიმპედი გაქვთ, შეიძლება დაგჭირდეთ კოდის შეცვლა). ის ძალიან სწრაფად იკითხება და ყველა იმ მნიშვნელობას იშორებს node.js სერვერზე, რომელიც უსმენს 8084 -ზე.

ჯოისტიკების ნედლი X და Y ღერძი მნიშვნელობები 0-დან 1-მდეა.

მაგრამ Roboclaw საავტომობილო კონტროლერის ბიბლიოთეკის ფუნქცია, რომელიც გამოიყენება Arduino– ში ძრავების მართვისთვის, ელოდება მნიშვნელობას -100 – დან 0 – მდე (უკან) ან (0 – დან 100 – მდე) წინ.

სუ…. ეს არის p5.min.js. უბრალოდ ხდება, რომ ეს ძალიან ლამაზი, მოსახერხებელი რუქის () ფუნქციაა, სადაც თქვენ მიანიჭებთ მას ნედლ მნიშვნელობას, ეს არის ნედლი (მიმდინარე) დიაპაზონი და ახალი, სასურველი დიაპაზონი. და ის გარდაქმნის ნედლეულ მნიშვნელობას ღირებულებად ახალ, ასახულ დიაპაზონში.

კიდევ ერთი წერტილი: 100 სიჩქარით, რობოტი შეიძლება იყოს ძალიან სახიფათო. გამუდმებით რაღაცას ვაწყდებოდი. მაგრამ მაშინაც კი, როდესაც თქვენ უკეთესები ხდებით, ის მაინც მგრძნობიარეა მარცხნივ ან მარჯვნივ ბრუნვისას.

რაღაცის დასამატებლად თქვენ გექნებათ მსგავსი მაქსიმალური სიჩქარის სლაიდერი ვებ გვერდზე. ეს სლაიდერი განსაზღვრავს რა არის ყველაზე მაღალი ან მაქსიმალური მნიშვნელობა, რომელზედაც თქვენ ასახავთ ჯოისტიკებს Xs და Ys.

მაგალითი:

თქვით, რომ ადგენთ 0 -> 1 -დან 0 -> 100. როდესაც ჯოისტიკს ბოლომდე უბიძგებთ, თქვენ 100 -ზე ხართ. შეიძლება ძალიან სწრაფად.

მაგრამ, თუ თქვენ გადააადგილებთ ამ Max Speed სლაიდერს ოდნავ უკან, ახლა თქვენ ადგენთ 0 -> 1 -დან 0 -> 80 ან 70.

ეს ნიშნავს, რომ თქვენ გაქვთ მეტი თავისუფლება თქვენი ჯოისტიკის გადასაადგილებლად კვანძში. Js (და არდუინოში) გაგზავნილი სიჩქარის ასეთი დიდი ცვლილების გარეშე.

გარდა ამისა, თქვენ შეგიძლიათ გამოყოთ Xs (გადაატრიალეთ მარცხნივ ან მარჯვნივ) Y- დან (წინ ან უკან) საკუთარ მაქსიმალურ სიჩქარეზე.

ამრიგად, თქვენ შეგიძლიათ დატოვოთ Ys 0 -დან 100 -მდე, 0 -დან -100 -მდე სწრაფი ხაზოვანი მოძრაობისთვის, მაგრამ შეამციროთ Xs მაქსიმალური სიჩქარე უფრო კონტროლირებადი ბრუნვის მოძრაობისთვის. საუკეთესო ორივე სამყაროში.

ნაბიჯი 6: სურვილისამებრ: მართეთ რობოტი თაგვის გადაადგილებით და / ან შეხებით მოვლენებით

თუ აქამდე მიდიხართ, თქვენ იცით, რომ პროგრამული უზრუნველყოფის ფენები იწყება ბრაუზერიდან და იშლება Javascript– ით და Raspberry node.js სერვერზე, ბოლოს arduino– ზე, გარდაქმნის Gamepad ჯოისტიკის X- და Y- კოორდინატებს " წინ "(ან" უკან "და ა.შ.) ბრძანებები (და მათი სიჩქარის მნიშვნელობა).

გარდა ამისა, თქვენ იცით, რომ მაშინ, როდესაც ჯოისტიკების Xs და Ys არის უარყოფითი 1, ნულიდან პლუს 1 -მდე, ისინი უნდა გადაკეთდეს ნულამდე და 100 -მდე. ისე, მაქსიმალური დამოკიდებულია ვებ გვერდის მაქსიმალური სიჩქარის პარამეტრზე.

ასე რომ … ერთადერთი, რაც უნდა გააკეთოთ იმისათვის, რომ გამოიყენოთ მაუსი, ან შეეხოთ მოვლენებს (როგორც სმარტფონზე), არის ამ მოვლენების გადაღება, დაიჭიროთ X და Y.

მაგრამ ---- ის X და Y არ არის უარყოფით 1 და 1. ისინი იწყებენ 0 და იზრდებიან დადებითად, რადგან ისინი არსებითად არის HTML ელემენტის პიქსელები ან ეკრანის ნათესავი კოორდინატები (როგორიცაა ჩამტვირთავი პანელი) ან ტილო.

ასე რომ, ისევ და ისევ, P5- ის Js ბიბლიოთეკის "რუკა ()" ფუნქცია ძალიან მოსახერხებელია ხელახლა რუკაზე, რაც ჩვენ გვჭირდება.

მე გადავაკეთე კოდი, რომ ჰქონოდა ორი განსხვავებული ვებ გვერდი, ერთი დესკტოპისთვის Gamepad– ის გამოყენებით, მეორე მობილურით, სენსორული მოვლენების გამოყენებით.

ასევე, მას შემდეგ რაც Xs და Ys ხელახლა იქნება ასახული, ისინი იკვებება იმავე კოდის ჯაჭვში და ა.შ., ისევე როგორც Xs და Ys Gamepad– დან.

გირჩევთ: