
Агуулгын хүснэгт:
2025 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2025-01-23 15:00



Хэрэв та алсын удирдлагатай явах эд анги жолоодож байсан бол үүнийг мэдэхгүй байсан ч холих аргыг ашиглах магадлал өндөр байна. Тодруулбал, хэрэв та гулсалтын жолоодлого эсвэл дифференциал жолоодлоготой тээврийн хэрэгслийг удирдахын тулд ганцхан джойстик эсвэл чимхүүр ашигласан бол та холих аргыг ашигласан болно.
Холих нь явах эд ангийн хоёр талд хичнээн их хүч өгөх ёстойг тодорхойлохын тулд таны джойстик дээрх өгөгдлийг хэрхэн ашиглахыг хэлнэ.
Хэрэв та джойстыг онгойлговол ерөнхийдөө дотор нь хоёр потенциометрийг харах болно. Нэг нь Y тэнхлэгийн дагуу (дээш, доош) одоогийн байрлалаа хэмжих, нөгөө нь X тэнхлэгийн дагуу (хажуу тийш) байрлалаа хэмжих.
Надад энэ сэдвээр албан ёсны сургалт байхгүй ч гэсэн би өмнө нь код холих ёстой байсан бөгөөд саяхан би энэ сэдвийг жаахан гүнзгийрүүлэхийг хүссэн юм.
Нэгдүгээрт, ихэнх RC дамжуулагч нь олон мотор хянагчийн нэгэн адил холих чадвартай байдаг гэдгийг тэмдэглэхийг хүсч байна. Хэрэв та кодоо өөрөө холих шаардлагатай бол энэ мэдээлэл хамгийн ашигтай байх болно. Жишээлбэл, хэрэв та Arduino ашиглан RC хүлээн авагчийн хольцгүй өгөгдлийг уншиж байгаа бол, эсвэл тогооноос аналог өгөгдлийг джойстик дээр уншиж байгаа эсвэл гар утасны програм дээрх дижитал джойстикээс координат уншиж байгаа бол хэлээрэй.
Холих өөр өөр аргуудыг авч үзье.
Алхам 1: холих арга »Үгүй
Эхлээд хэрэв та холихыг огт ашиглахгүй бол юу болохыг харцгаая. Хэрэв та өгөгдлийг нэг тэнхлэгээс явах эд ангиудын нөгөө талд, нөгөө тэнхлэгийг нөгөө тал руу илгээвэл таны машин таны хүссэнээр хариу өгөхгүй болно.
Жишээлбэл, хэрэв та джойстикийг бүхэлд нь шууд урагшлуулбал Y тэнхлэг нь бүрэн тохируулагчтай, X тэнхлэг нь 0 байна. Тиймээс та шууд явахын оронд тойрог хэлбэрээр жолоодох болно.
Алхам 2: Аргын арга »Эргүүлэх

Нэгэн удаа хамт ажилладаг хүн надад дамжуулагчаа 45 градус эргүүлж, ядуу хүний холимогийг авах боломжтой гэж надад хэлсэн. Хэрэв та джойстик дахь хоёр потенциометрийн утгыг сүлжээнд x тэнхлэг гэж үзвэл (хоёр тэнхлэг нь -100 -аас +100 хүртэл), энэ нь маш утга учиртай, учир нь та хоёр тэнхлэг дээр +100 болно. джойстикийг дээш, баруун тийш түлхэх үед. Хэрэв энэ нь таны явах эд анги хоёр сувагтай шууд холбогдож байвал (таны роботын зүүн ба баруун талд) роботыг урагшлуулах болно.
Миний туршиж үзсэн холих анхны арга бол x ба y координатыг торны төв цэгийн эргэн тойронд 45 градус эргүүлэх явдал байв.
Энэ нь сайн ажилладаг, гэхдээ би 100% хүчээр урагшлах боломжгүй, учир нь та эргэх үед хөдөлгөөнийг сүлжээ доторх тойрог хэлбэрээр хязгаарладаг бөгөөд энэ нь та хэзээ ч баруун дээд буланд орж чадахгүй гэсэн үг юм.
Үүний үр дүнд сүлжээний буланг ашиглахгүй болно. Хэрэв та хөдөлгөөнөө хязгаарладаг джойстик/чимхүүр ашиглаж байгаа бол эдгээр хэсэгт хэзээ ч хүрч чадахгүй байгаа бол энэ нь асуудал биш юм, гэхдээ өөрөөр хэлбэл таны хөдөлгөөн бүрэн пропорциональ байхын тулд сүлжээний тэр хэсгийг ямар нэгэн зүйл хийхийг хүсэх болно.
Хэрэв та над шиг харааны чиглэлээр суралцаж байгаа бол энэхүү зааврын эхэнд байгаа видеог үзээд энэ ойлголтыг ойлгоход хялбар байх болно.
Зарим кодын жишээг авч үзье.
МИНИЙ КОДЫН ЖИШЭЭ ТУХАЙ ТАЙЛБАР: Таны төслийн байдлаас шалтгаалан joystick_x болон joystick_y -ийн утгыг хэрхэн олж авахыг би орхиж байна. Мөн би ± 100 -ийн зураглал/хязгаарлалтыг хийх болно, гэхдээ та ХОУХ -ны хувьд 1000-2000, аналог гаралтын хувьд 0 - 255 гэх мэтээр зураглах шаардлагатай байж магадгүй юм.
Arduino -ийн жишээ:
// математикаар эргүүлэх
давхар рад = -45*M_PI/180; int leftThrottle = joystick_x * cos (rad) - joystick_y * sin (rad); int rightThrottle = joystick_y * cos (rad) + joystick_x * sin (rad); // constrain leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = хязгаарлах (rightThrottle, -100, 100);
JavaScript -ийн жишээ:
// математикийн rotatevar rad = -45*Math. PI/180; leftThrottle = joystick_x * Math.cos (rad) - joystick_y * Math.sin (rad); rightThrottle = joystick_y * Math.cos (rad) + joystick_x * Math.sin (rad); // constrainleftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // helper functionvar constrain = function (num, min, max) {return Math.min (Math.max (num, min), max); };
Алхам 3: Аргын арга »Энгийн

Дараа нь бид маш энгийн тэгшитгэлийг олж авсан бөгөөд үүнийг би Shawn Hymel -ийн шинжлэх ухааны SparkFun дахь адал явдалт видеонуудаас олж авсан бөгөөд тэр миний ажиллаж байсантай төстэй төсөл дээр ажиллаж байсан юм.
Энэхүү тэгшитгэл нь урагшлахдаа бүрэн хурдыг авах боломжийг олгодог боловч эргүүлэх аргын нэгэн адил сүлжээний булангийн хэсгүүдийг үл тоомсорлодог. Учир нь зарим тохиолдолд дээд тал нь 100, зарим тохиолдолд дээд тал нь 200 байдаг. Тиймээс та 100 -аас хойшхи аливаа зүйлийг үл тоомсорлохын тулд constrain функцийг ашиглана.
Дашрамд хэлэхэд би энэ энгийн зүйлийг доромжилсон гэж нэрлэхгүй … энгийн байдлын гоо үзэсгэлэн байдаг.
Arduino -ийн жишээ:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // constrain leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = хязгаарлах (rightThrottle, -100, 100);
JavaScript -ийн жишээ:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x; // leftChannel = constrain (leftChannel, -100, 100); rightChannel = хязгаарлах (rightChannel, -100, 100); // helper functionvar constrain = function (num, min, max) {return Math.min (Math.max (num, min), max); };
Алхам 4: Аргын арга »Пропорциональ

Хоёр ертөнцийн тэгшитгэлийг хамгийн сайнаар бүтээнэ гэж найдаж байна. Энд байгаа санаа бол бүх чиглэлд диагоналиар ч гэсэн пропорциональ байх явдал юм, гэхдээ та илүү хол зайд явж байгаа боловч босоо чиглэлд хөдөлж буй зайтай ижил зайтай байна.
Миний жишээн дээр та бүх чиглэлд -200 -аас +200 хүртэлх масштабтай болно. Би үүнийг ± 100 болгож харуулсан, учир нь энэ нь суваг тус бүрийн хүч чадлын эзлэх хувийг илэрхийлдэг боловч та үүнийг ашиглаж байгаа бүх зүйлтэйгээ харьцуулахыг хүсэх болно. таны мотор хянагчийн хайрцаг. Жишээлбэл, хэрэв та PWM дохио илгээж байгаа бол үүнийг 1000-2000 хүртэл, эсвэл аналог дохио илгээж байгаа бол үүнийг 0-255 болгож, чиглэлийг логик гэх мэтээр тохируулж болно.
Arduino -ийн жишээ:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // зарим тохиолдолд хамгийн ихдээ 100, зарим тохиолдолд 200 байна // ялгааг харгалзан үзээд хамгийн их утга нь үргэлж 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - ялгаатай: leftThrottle + diff; rightThrottle = rightTrottle <0? rightThrottle - ялгаатай: rightThrottle + diff; // Газрын зураг нь ± 200 -аас ± 100 хүртэл эсвэл өөр өөр мужид зүү оруулдагThrottle = газрын зураг (зүүнХоол, 0, 200, -100, 100); // constrainleftThrottle = хязгаарлах (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
JavaScript -ийн жишээ:
var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // зарим тохиолдолд хамгийн ихдээ 100, зарим тохиолдолд 200, // ялгааг харгалзан үзье, ингэснээр хамгийн их утга нь үргэлж 200var байх ёстой = Math.abs (Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = leftTrothtle <0? leftThrottle - ялгаатай: leftThrottle + diff; rightThrottle = rightTrottle <0? rightThrottle -ялгаа: rightThrottle + diff; -100, 100); // зүүн хязгаарыг хязгаарлах хамгийн их (тоо, мин), хамгийн их); }; var map = функц (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, газрын зураг; inMin = inMin + inMax; num = num + inMax; inMax = inMax + inMax; inSpan = Math.abs (inMax-inMin); p = (num/inSpan)*100; outMin = outMin + outMax; outMax = outMax + outMax; outSpan = Math.abs (outMax - outMin); газрын зураг = outSpan*(p/100) - (outMax/2); буцаах зураг;};
Зөвлөмж болгож буй:
Хүн холих самбар: 12 алхам (зурагтай)

Хүн холих самбар төрөх нь: Хүн төрөлхтөн анхнаасаа орчлон ертөнцөд эзлэх байр суурь, нөгөө нь өөх тосыг амархан өдөөдөг энгийн аудио холих самбар болох хоёр зүйлийг эрэлхийлж ирсэн. Хүний төрөлт холих зөвлөл нь эдгээр хоёр ажлыг хоёуланг нь гүйцэтгэдэг
JCN: Вектор тэнцвэрт хоол хүнсний компьютерын тухай ойлголт: 9 алхам

JCN: Векторын тэнцвэрт хоол хүнсний компьютерын тухай ойлголт: Бид удахгүй болох видеоны трейлерийг нээх болно " JCN ба сансрын нисэгчид; "Сансар огторгуй дахь хоол хүнс, хөгжилтэй байдлын тухай үлгэр". Төслийн видео хурлаас миний авсан зүйл бол бид орон зайн үзэл баримтлалд анхаарлаа төвлөрүүлж, хөгжилтэй байх явдал юм. Би айж байна
MESOMIX - Автомат будаг холих машин: 21 алхам (зурагтай)

MESOMIX - Автомат будаг холих машин: Та дизайнер уу, зураач уу, эсвэл зурган дээрээ өнгө хаях дуртай бүтээлч хүн үү? агаарт тэмцэж байна. Энэ төхөөрөмжийн хувьд та
2.4Ghz NRF24L01 модулийг ашиглан Arduino ашиглан утасгүй алсын удирдлага - Nrf24l01 4 суваг / Quadcopter -ийн 6 суваг дамжуулагч хүлээн авагч - Rc нисдэг тэрэг - Arduino ашиглан Rc

2.4Ghz NRF24L01 модулийг ашиглан Arduino ашиглан утасгүй удирдлага | Nrf24l01 4 суваг / Quadcopter -ийн 6 суваг дамжуулагч хүлээн авагч | Rc нисдэг тэрэг | Arduino ашиглан Rc онгоц: Rc машин ажиллуулах | Квадрокоптер | Дрон | RC онгоц | RC завь, бидэнд үргэлж хүлээн авагч, дамжуулагч хэрэгтэй байдаг, RC QUADCOPTER -ийн хувьд бидэнд 6 суваг дамжуулагч, хүлээн авагч хэрэгтэй гэж бодъё, энэ төрлийн TX ба RX нь хэтэрхий үнэтэй тул бид үүнийг өөрөө хийх болно
Measurino: Хэмжих дугуйны тухай ойлголт: 9 алхам

Measurino: хэмжих дугуйны тухай ойлголтын баталгаа: Measurino нь дугуйны эргэлтийн тоог тоолж, туулсан зай нь дугуйны радиустай шууд пропорциональ байна. Энэ бол одометрийн үндсэн зарчим бөгөөд би энэ төслийг хэрхэн яаж хадгалахаа судлах зорилгоор эхлүүлсэн