![Kanal Qarışıqlığını Anlamaq: 4 Adım (Şəkillərlə) Kanal Qarışıqlığını Anlamaq: 4 Adım (Şəkillərlə)](https://i.howwhatproduce.com/images/003/image-6912-30-j.webp)
Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:56
![Image Image](https://i.howwhatproduce.com/images/003/image-6912-32-j.webp)
![](https://i.ytimg.com/vi/t1NSeMTVRH8/hqdefault.jpg)
![Qarışdırma Metodu »Yoxdur Qarışdırma Metodu »Yoxdur](https://i.howwhatproduce.com/images/003/image-6912-33-j.webp)
Heç bir uzaqdan idarə şassisini idarə etmisinizsə, bilməsəniz də qarışdırmaqdan istifadə etmək şansınız çoxdur. Xüsusilə, sürüşmə sükanı və ya diferensial sükanı istifadə edən bir avtomobili idarə etmək üçün tək bir joystick və ya gimble istifadə etmisinizsə, qarışdırmaqdan istifadə etmisiniz.
Qarışdırmaq, şassinin hər tərəfinə nə qədər güc veriləcəyini təyin etmək üçün joystickinizdəki məlumatların necə istifadə edildiyini göstərir.
Bir joystick açsanız, ümumiyyətlə içərisində iki potansiyometr görəcəksiniz. Biri Y oxu boyunca (yuxarı və aşağı), digəri isə X oxu boyunca (yan -yana) harada olduğunuzu ölçmək üçün.
Mövzu ilə bağlı rəsmi bir təhsilim olmasa da əvvəllər kod qarışdırmaq məcburiyyətində qaldım və bu yaxınlarda mövzuya bir az daha dərindən girmək istədim.
Əvvəlcə qeyd etmək istəyirəm ki, əksər RC ötürücüləri bir çox motor nəzarətçiləri kimi qarışdırma qabiliyyətinə malikdir. Kodunuzu özünüz qarışdırmaq məcburiyyətindəsinizsə bu məlumatlar ən faydalı olacaq. Məsələn, bir RC qəbuledicisindən qarışdırılmamış məlumatları oxumaq üçün bir Arduino istifadə edirsinizsə və ya qablardan analoq məlumatları joystickdə oxuyursunuzsa və ya mobil tətbiqdə rəqəmsal joystickdən koordinatları oxuyursunuzsa deyin.
Fərqli qarışdırma yanaşmalarına nəzər salaq.
Addım 1: Qarışdırma Metodu »Yoxdur
Əvvəlcə qarışdırmağı ümumiyyətlə istifadə etməsəniz nə olacağını nəzərdən keçirək. Veriləri yalnız bir oxdan şassinin bir tərəfinə, digər oxu digər tərəfə göndərsəniz, avtomobiliniz istədiyiniz şəkildə cavab verməz.
Məsələn, joysticki düz bir şəkildə irəli itələsəniz, Y oxu tam qazdadır və X oxu 0 -dadır. Deməli, düz getmək əvəzinə dairələrdə sürmək olardı.
Addım 2: Metod Metodu »Döndür
![Metod Metod »Döndür Metod Metod »Döndür](https://i.howwhatproduce.com/images/003/image-6912-34-j.webp)
Bir dəfə bir iş yoldaşı mənə dedi ki, yoxsul bir adamın qarışığı üçün vericinizi 45 dərəcə döndərə bilərsiniz. Bir joystickdəki iki potensiometrdən alınan dəyərləri bir şəbəkədəki x y y oxu olaraq düşünürsünüzsə (hər iki oxda -100 ilə +100 aralığında), bu çox məntiqlidir, çünki hər iki oxda +100 -ə gedirsiniz. joysticki yuxarı və sağa itələyərkən. Beləliklə, bu, iki şassi kanalınıza (robotunuzun sol və sağ tərəfləri) birbaşa uyğun gəlirsə, bu, robotunuzun irəli getməsini təmin edər.
Buna görə sınadığım ilk qarışdırma üsulu, x və y koordinatlarını ızgaranın mərkəz nöqtəsi ətrafında 45 dərəcə riyazi olaraq döndərmək idi.
Bu yaxşı işləyir, amma 100% güclə irəliyə gedə bilmərəm, çünki dönərkən ümumi hərəkət ızgara içərisindəki bir dairə ilə məhdudlaşır, yəni heç vaxt o sağ küncün içinə girə bilməzsən.
Bu da şəbəkənin künclərindən istifadə edilməməsi ilə nəticələnir. Hərəkətinizi məhdudlaşdıran bir joystick/gimple istifadə edirsinizsə, bu heç bir yerə çatmır, amma əks halda hərəkətlərinizin tamamilə mütənasib hiss etməsi üçün ızgaranın o hissəsinin bir şey etməsini istəyəcəksinizsə bu problem deyil.
Əgər mənim kimi bir vizual öyrənən olsanız, bu təlimatın əvvəlindəki videoya baxaraq bu anlayışı öyrənmək daha asan ola bilər.
Bəzi kod nümunələrinə baxaq.
KOD NÜMUNƏLƏRİM HAQQINDA QEYDLƏR: Layihənizdən asılı olaraq dəyişəcəyi kimi joystick_x və joystick_y dəyərlərini necə əldə etdiyinizi yazmıram. Həm də ± 100 ilə eşleyeceğim/məhdudlaşdıracağam, amma ehtimal ki, PWM üçün 1000-2000 və ya analog çıxış üçün 0 - 255 və s. Mən həmişə məhdudlaşdırıram … hər halda.
Arduino nümunəsi:
// riyazi olaraq döndür
ikiqat rad = -45*M_PI/180; int leftThrottle = joystick_x * cos (rad) - joystick_y * sin (rad); int rightThrottle = joystick_y * cos (rad) + joystick_x * sin (rad); // məhdudlaşdırmaq solThrottle = məhdudlaşdırmaq (leftThrottle, -100, 100); rightThrottle = məhdudlaşdırmaq (rightThrottle, -100, 100);
JavaScript nümunəsi:
// riyazi 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 = məhdudlaşdır (solThrottle, -100, 100); rightThrottle = məhdudlaşdır (rightThrottle, -100, 100); // helper functionvar constrain = function (sayı, min, maksimum) {return Math.min (Math.max (sayı, min), maksimum); };
Addım 3: Metod Metodu »Sadə
![Metod Metod »Sadə Metod Metod »Sadə](https://i.howwhatproduce.com/images/003/image-6912-35-j.webp)
Növbəti dəfə Shawn Hymel'in Science SparkFundakı macəralarından birini aldığım və üzərində işlədiyimə çox oxşar bir layihə üzərində işlədiyi çox sadə bir tənliyə sahibik.
Bu tənlik irəliləyərkən tam sürətə çatmağınıza imkan verir, ancaq fırlanma metodu kimi, ızgaranın künc sahələrini nəzərə almır. Bunun səbəbi, bəzi hallarda maksimum 100, bəzi hallarda maksimum 200 olmasıdır. Buna görə də 100 -dən sonra heç bir şeyi nəzərə almamaq üçün bir məhdudlaşdırma funksiyasından istifadə edərdiniz.
Yeri gəlmişkən, bu sadəliyi aşağılayıcı adlandırmıram … sadəliyin bir gözəlliyi var.
Arduino nümunəsi:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // məhdudlaşdırmaq solThrottle = məhdudlaşdırmaq (leftThrottle, -100, 100); rightThrottle = məhdudlaşdırmaq (rightThrottle, -100, 100);
JavaScript nümunəsi:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x; // leftChannel = constrain (leftChannel, -100, 100); rightChannel = məhdudlaşdırın (rightChannel, -100, 100); // helper functionvar constrain = function (sayı, min, maksimum) {return Math.min (Math.max (sayı, min), maksimum); };
Addım 4: Metod Metodu »Mütənasib
![Metod Metod »Mütənasib Metod Metod »Mütənasib](https://i.howwhatproduce.com/images/003/image-6912-36-j.webp)
Hər iki dünya tənliyinin ən yaxşısını etmək ümidi ilə sadə bir üsulla yola çıxdım. Buradakı fikir, daha böyük bir məsafədə hərəkət etməyinizə baxmayaraq, hətta daha kiçik bir məsafədə, şaquli olaraq hərəkət edərkən eyni aralığa sahib olmasına baxmayaraq, çapraz olaraq bütün istiqamətlərdə tam mütənasib olmaqdır.
Nümunələrimdə bütün istiqamətlərdə -200 ilə +200 arasında bir miqyas alırsınız, bunu hər bir kanala gedən gücün faizini əks etdirdiyi üçün ± 100 olaraq göstərirəm - ancaq istifadə etdiyiniz işlə əlaqələndirmək istəyəcəksiniz. motor nəzarətçiniz üçün korpus. Məsələn, bir PWM siqnalı göndərirsinizsə, bunu 1000 ilə 2000 arasında müqayisə edə bilərsiniz və ya analoq siqnal göndərirsinizsə, onu 0-255-ə uyğunlaşdıra və istiqaməti boolean kimi təyin edə bilərsiniz.
Arduino nümunəsi:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // bəzi hallarda maksimum 100, bəzi hallarda 200 olur // fərqi nəzərə alaraq maksimum həmişə 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - fərq: leftThrottle + fərq; rightThrottle = rightThrottle <0? rightThrottle - fərq: rightThrottle + fərq; // ± 200 -dən ± 100 -ə qədər olan xəritələr və ya hər hansı bir aralığa ignftThrottle = map (leftThrottle, 0, 200, -100, 100); rightThrottle = map (rightThrottle, 0, 200, -100, 100); // constrainleftThrottle = məhdudlaşdırmaq (leftThrottle, -100, 100); rightThrottle = məhdudlaşdırmaq (rightThrottle, -100, 100);
JavaScript nümunəsi:
var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // bəzi hallarda maksimum 100 -dir, bəzi hallarda 200 -dir, // fərqi nəzərə alaq ki, maksimum həmişə 200var olsun = Math.abs (Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - fərq: leftThrottle + fərq; rightThrottle = rightThrottle <0? rightThrottle -fərq: rightThrottle + diff; // ± 200 -dən ± 100 -ə qədər aşağıya və ya hər hansı bir şeyi iynə tutmaqThrottle = map (leftThrottle, -200, 200, -100, 100); rightThrottle = map (rightThrottle, -200, 200, -100, 100); // leftThrottle = məhdudlaşdırmaq (leftThrottle, -100, 100); rightThrottle = məhdudlaşdırmaq (rightThrottle, -100, 100); // bəzi köməkçi funksiyaların constrain = funksiyası (sayı, min, maksimum) {qayıt Math.min (Math. maksimum (sayı, min), maksimum); }; var map = funksiyası (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, eşlenen; inMin = inMin + inMax; sayı = sayı + inMax; inMax = inMax + inMax; inSpan = Math.abs (inMax-inMin); p = (num/inSpan)*100; outMin = outMin + outMax; outMax = outMax + outMax; outSpan = Math.abs (outMax - outMin); mapped = outSpan*(p/100) - (outMax/2); geri döndürüldü;};
Tövsiyə:
Android Tətbiqini AWS IOT ilə necə bağlamaq və Səs Tanıma API -sini Anlamaq: 3 addım
![Android Tətbiqini AWS IOT ilə necə bağlamaq və Səs Tanıma API -sini Anlamaq: 3 addım Android Tətbiqini AWS IOT ilə necə bağlamaq və Səs Tanıma API -sini Anlamaq: 3 addım](https://i.howwhatproduce.com/images/002/image-3907-19-j.webp)
AWS IOT ilə Android Tətbiqini Necə Bağlamaq və Səs Tanıma API -sini Anlamaq: Bu təlimat istifadəçiyə Android Tətbiqini AWS IOT serverinə necə bağlamağı və Qəhvə Maşını idarə edən səs tanıma API -sini başa düşməyi öyrədir. Tətbiq Qəhvə Maşını Alexa vasitəsilə idarə edir Səs Xidməti, hər tətbiqin
Arduino ilə 2.4Ghz NRF24L01 Modulundan istifadə edən Simsiz Uzaqdan - Nrf24l01 4 Kanal / Quadcopter üçün 6 Kanal Verici Alıcısı - Rc Helikopteri - Arduino istifadə edərək Rc təyyar
![Arduino ilə 2.4Ghz NRF24L01 Modulundan istifadə edən Simsiz Uzaqdan - Nrf24l01 4 Kanal / Quadcopter üçün 6 Kanal Verici Alıcısı - Rc Helikopteri - Arduino istifadə edərək Rc təyyar Arduino ilə 2.4Ghz NRF24L01 Modulundan istifadə edən Simsiz Uzaqdan - Nrf24l01 4 Kanal / Quadcopter üçün 6 Kanal Verici Alıcısı - Rc Helikopteri - Arduino istifadə edərək Rc təyyar](https://i.howwhatproduce.com/images/003/image-7044-j.webp)
Arduino ilə 2.4Ghz NRF24L01 Modulundan istifadə edən Simsiz Uzaqdan | Nrf24l01 4 Kanal / Quadcopter üçün 6 Kanal Verici Alıcısı | Rc Helikopteri | Arduino istifadə edərək Rc Plane: Rc avtomobili idarə etmək | Quadcopter | Drone | RC təyyarəsi | RC qayığı, həmişə bir alıcıya və ötürücüyə ehtiyacımız var, RC QUADCOPTER üçün 6 kanallı bir vericiyə və alıcıya ehtiyacımız olduğunu və bu tip TX və RX -in çox bahalı olduğunu düşünürük, buna görə də özümüzdə hazırlayacağıq
Kondisionerin Uzaqdan idarəetmə IR Protokolunu Anlamaq: 9 Addım (Şəkillərlə birlikdə)
![Kondisionerin Uzaqdan idarəetmə IR Protokolunu Anlamaq: 9 Addım (Şəkillərlə birlikdə) Kondisionerin Uzaqdan idarəetmə IR Protokolunu Anlamaq: 9 Addım (Şəkillərlə birlikdə)](https://i.howwhatproduce.com/images/006/image-17476-13-j.webp)
Kondisionerin Uzaqdan idarəetmə IR Protokolunu Anlamaq: Artıq bir müddətdir ki, IR protokollarını öyrənirəm. IR siqnallarını necə göndərmək və qəbul etmək olar. Bu nöqtədə qalan tək şey, AC uzaqdan idarəetmə cihazlarının İR protokoludur
Kartof Batareyası: Kimya və Elektrik Enerjisini Anlamaq: 13 Addım (Şəkillərlə)
![Kartof Batareyası: Kimya və Elektrik Enerjisini Anlamaq: 13 Addım (Şəkillərlə) Kartof Batareyası: Kimya və Elektrik Enerjisini Anlamaq: 13 Addım (Şəkillərlə)](https://i.howwhatproduce.com/images/002/image-4478-97-j.webp)
Kartof Batareyası: Kimya və Elektrik Enerjisini Anlamaq: Bir ampulü yalnız bir kartofla gücləndirə biləcəyinizi bilirdinizmi? İki metal arasındakı kimyəvi enerji elektrik enerjisinə çevrilir və kartofun köməyi ilə bir dövrə yaradır! Bu ola biləcək kiçik bir elektrik yükü yaradır
PIC mikro nəzarətçiləri üçün ICSP -ni anlamaq: 4 addım (şəkillərlə)
![PIC mikro nəzarətçiləri üçün ICSP -ni anlamaq: 4 addım (şəkillərlə) PIC mikro nəzarətçiləri üçün ICSP -ni anlamaq: 4 addım (şəkillərlə)](https://i.howwhatproduce.com/images/002/image-3283-93-j.webp)
PIC Microcontrollers üçün ICSP -ni anlamaq: Mikro nəzarətçiləri proqramlaşdırmaq çətin deyil. Bir proqramçı qurmaq böyük bir elektronika layihəsi edir. Bu təlimatın məqsədi Microchip PIC ilə istifadə edilən sadə 'dövrə ardıcıl proqramlaşdırma' metodunu izah etməkdir