สารบัญ:
- ขั้นตอนที่ 1: วิธีการผสม » ไม่มี
- ขั้นตอนที่ 2: วิธี » หมุน
- ขั้นตอนที่ 3: วิธีการ » Simple
- ขั้นตอนที่ 4: วิธีการ » สัดส่วน
วีดีโอ: ทำความเข้าใจการผสมช่อง: 4 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
หากคุณเคยขับแชสซีของรีโมทคอนโทรล มีโอกาสดีที่คุณจะใช้มิกซ์เสียง แม้ว่าคุณจะไม่รู้ก็ตาม โดยเฉพาะอย่างยิ่ง หากคุณเคยใช้จอยสติ๊กหรือไม้กันสั่นเพียงตัวเดียวในการควบคุมรถที่ใช้พวงมาลัยแบบลื่นไถลหรือพวงมาลัยแบบเฟืองท้าย แสดงว่าคุณได้ใช้การมิกซ์เสียง
การผสมเป็นเพียงวิธีการใช้ข้อมูลจากจอยสติ๊กของคุณเพื่อกำหนดว่าควรจ่ายพลังงานให้กับแต่ละด้านของแชสซีเท่าใด
หากคุณเปิดจอยสติ๊ก โดยทั่วไป คุณจะเห็นโพเทนชิโอมิเตอร์สองตัวอยู่ข้างใน อันหนึ่งเพื่อวัดตำแหน่งปัจจุบันของคุณตามแนวแกน Y (ขึ้นและลง) และอีกอันเพื่อวัดตำแหน่งที่คุณอยู่ตามแนวแกน X (จากด้านหนึ่งไปอีกด้านหนึ่ง)
แม้ว่าฉันจะไม่มีการฝึกอบรมอย่างเป็นทางการในหัวข้อนี้ แต่ฉันก็เคยผสมโค้ดมาก่อนและเมื่อเร็วๆ นี้ ฉันต้องการเจาะลึกลงไปในหัวข้อนี้อีกเล็กน้อย
อันดับแรก ฉันต้องการทราบว่าเครื่องส่งสัญญาณ RC ส่วนใหญ่มีความสามารถในการผสมเช่นเดียวกับตัวควบคุมมอเตอร์หลายตัว ข้อมูลนี้จะมีประโยชน์มากที่สุดหากคุณต้องผสมโค้ดของคุณเอง ตัวอย่างเช่น หากคุณกำลังใช้ Arduino เพื่ออ่านข้อมูลแบบไม่ผสมจากเครื่องรับ RC หรือคุณกำลังอ่านข้อมูลแอนะล็อกจากหม้อในจอยสติ๊ก หรือหากคุณกำลังอ่านพิกัดจากจอยสติ๊กดิจิทัลในแอปบนอุปกรณ์เคลื่อนที่
มาดูวิธีการผสมต่างๆ กัน
ขั้นตอนที่ 1: วิธีการผสม » ไม่มี
ก่อนอื่น มาดูกันว่าจะเกิดอะไรขึ้นถ้าคุณไม่ใช้มิกซ์เลย หากคุณเพียงแค่ส่งข้อมูลจากแกนหนึ่งไปยังด้านหนึ่งของแชสซีและอีกแกนหนึ่งไปยังอีกด้านหนึ่ง รถของคุณจะไม่ตอบสนองตามที่คุณต้องการ
ตัวอย่างเช่น หากคุณกดจอยสติ๊กไปจนสุดทาง แกน Y จะเค้นเต็มที่และแกน X อยู่ที่ 0 ดังนั้น คุณจะขับรถเป็นวงกลมแทนที่จะเดินตรง
ขั้นตอนที่ 2: วิธี » หมุน
เพื่อนร่วมงานคนหนึ่งเคยบอกฉันว่า คุณสามารถหมุนเครื่องส่งของคุณ 45 องศาเพื่อให้คนจนได้ผสมปนเปกัน หากคุณคิดว่าค่าจากโพเทนชิโอมิเตอร์สองตัวในจอยสติ๊กเป็นแกน x กับ y บนตาราง (โดยที่ทั้งสองแกนมีช่วง -100 ถึง +100) ถือว่าสมเหตุสมผลมากเพราะคุณจะไปที่ +100 บนแกนทั้งสอง ขณะที่คุณดันจอยสติ๊กขึ้นและไปทางขวา ดังนั้นหากแมปนี้ตรงกับช่องแชสซีสองช่องของคุณ (ด้านซ้ายและด้านขวาของหุ่นยนต์ของคุณ) มันจะทำให้หุ่นยนต์ของคุณก้าวไปข้างหน้า
วิธีแรกในการผสมที่ฉันเคยลองคือหมุนพิกัด x และ y ทางคณิตศาสตร์ 45 องศารอบจุดศูนย์กลางของตาราง
วิธีนี้ใช้ได้ แต่ฉันไม่สามารถก้าวไปข้างหน้าด้วยกำลัง 100% ได้ เพราะเมื่อคุณหมุน การเคลื่อนไหวโดยรวมจะถูกจำกัดให้เป็นวงกลมภายในตาราง ซึ่งหมายความว่าคุณจะไม่มีวันเข้าไปในมุมขวาบนนั้นจริงๆ
นอกจากนี้ยังส่งผลให้มุมของกริดไม่ถูกใช้งาน นี่ไม่ใช่ปัญหาหากคุณใช้จอยสติ๊ก/กิมเปิลซึ่งจำกัดการเคลื่อนไหวของคุณเพื่อไม่ให้พื้นที่เหล่านั้นเข้าถึงได้ แต่มิฉะนั้น คุณจะต้องการส่วนนั้นของตารางทำบางสิ่งเพื่อให้การเคลื่อนไหวของคุณรู้สึกได้สัดส่วนโดยสมบูรณ์
หากคุณเป็นผู้เรียนรู้ด้วยภาพเหมือนฉันเอง แนวคิดนี้อาจง่ายกว่าที่จะเรียนรู้โดยการดูวิดีโอที่จุดเริ่มต้นของคำแนะนำนี้
มาดูตัวอย่างโค้ดกันบ้าง
หมายเหตุเกี่ยวกับตัวอย่างโค้ดของฉัน: ฉันกำลังคิดว่าคุณจะได้รับค่า joystick_x และ joystick_y อย่างไร เนื่องจากค่านี้จะเปลี่ยนไปตามโปรเจ็กต์ของคุณ นอกจากนี้ ฉันจะทำการแมป/จำกัดที่ ±100 แต่คุณอาจต้องจับคู่กับ 1000 - 2000 สำหรับ PWM หรือ 0 - 255 สำหรับเอาต์พุตแบบแอนะล็อก ฯลฯ ฉันมักจะจำกัด… เผื่อไว้
ตัวอย่าง Arduino:
//หมุนทางคณิตศาสตร์
รัศมีสองเท่า = -45*M_PI/180; int leftThrottle = joystick_x * cos(rad) - joystick_y * บาป (rad); int rightThrottle = joystick_y * cos(rad) + joystick_x * บาป (rad); //จำกัด leftThrottle = จำกัด (leftThrottle, -100, 100); rightThrottle = ข้อ จำกัด (rightThrottle, -100, 100);
ตัวอย่างจาวาสคริปต์:
//rotationvar rad ทางคณิตศาสตร์ = -45*Math. PI/180; leftThrottle = joystick_x * Math.cos (rad) - joystick_y * Math.sin (ราด); rightThrottle = joystick_y * Math.cos(rad) + joystick_x * Math.sin(rad);//constrainleftThrottle = บังคับ (leftThrottle, -100, 100); rightThrottle = บังคับ (rightThrottle, -100, 100); // helper functionvar constrain = ฟังก์ชัน (num, min, max) { return Math.min (Math.max (num, min), max); };
ขั้นตอนที่ 3: วิธีการ » Simple
ต่อไป เรามีสมการง่ายๆ ที่ตอนแรกฉันหยิบขึ้นมาจากหนึ่งในวิดีโอเรื่อง Adventures in Science SparkFun ของ Shawn Hymel ที่เขาบังเอิญทำโปรเจ็กต์ที่คล้ายกันมากกับที่ฉันทำอยู่
สมการนี้ช่วยให้คุณใช้ความเร็วเต็มที่เมื่อพุ่งไปข้างหน้า แต่เหมือนกับวิธีการหมุน โดยไม่สนใจพื้นที่มุมของตาราง เนื่องจากในบางกรณี ค่าสูงสุดคือ 100 และในบางกรณี ค่าสูงสุดคือ 200 ดังนั้น คุณจะใช้ฟังก์ชันจำกัดเพื่อละเว้นสิ่งใดหลังจาก 100
และอีกอย่าง ฉันไม่ได้เรียกสิ่งนี้ว่าง่ายๆ อย่างเสื่อมเสีย… มีความสวยงามในความเรียบง่าย
ตัวอย่าง Arduino:
int leftThrottle = จอยสติ๊ก_y + จอยสติ๊ก_x;
int rightThrottle = joystick_y - จอยสติ๊ก_x; //จำกัด leftThrottle = จำกัด (leftThrottle, -100, 100); rightThrottle = ข้อ จำกัด (rightThrottle, -100, 100);
ตัวอย่างจาวาสคริปต์:
var leftChannel = joystick_y + จอยสติ๊ก_x;
var rightChannel = joystick_y - joystick_x; // จำกัด leftChannel = จำกัด (leftChannel, -100, 100); rightChannel = ข้อ จำกัด (rightChannel, -100, 100); // helper functionvar constrain = ฟังก์ชัน (num, min, max) { return Math.min (Math.max (num, min), max); };
ขั้นตอนที่ 4: วิธีการ » สัดส่วน
ฉันหลุดพ้นจากวิธีง่าย ๆ โดยหวังว่าจะทำให้สมการทั้งสองโลกดีที่สุด แนวคิดในที่นี้คือการทำให้เป็นสัดส่วนอย่างสมบูรณ์ในทุกทิศทางแม้ในแนวทแยง แม้ว่าคุณจะเคลื่อนที่ในระยะทางที่ไกลกว่า แต่ก็มีช่วงเดียวกันกับเมื่อคุณเคลื่อนที่ในแนวตั้งซึ่งมีระยะทางน้อยกว่า
คุณลงเอยด้วยมาตราส่วน -200 ถึง +200 ในทุกทิศทางในตัวอย่างของฉัน ฉันจับคู่ค่านั้นกับ ±100 เพราะมันแสดงถึงเปอร์เซ็นต์ของกำลังที่ส่งไปยังแต่ละช่องสัญญาณ อย่างไรก็ตาม คุณจะต้องแมปกับสิ่งใดก็ตามที่คุณใช้งานได้ กรณีสำหรับตัวควบคุมมอเตอร์ของคุณ ตัวอย่างเช่น หากคุณกำลังส่งสัญญาณ PWM คุณอาจแมปสิ่งนั้นกับ 1,000 ถึง 2000 หรือหากคุณกำลังส่งสัญญาณแอนะล็อก คุณอาจแมปไปที่ 0-255 และกำหนดทิศทางเป็นบูลีน เป็นต้น
ตัวอย่าง Arduino:
int leftThrottle = จอยสติ๊ก_y + จอยสติ๊ก_x;
int rightThrottle = joystick_y - joystick_x;// ในบางกรณี ค่าสูงสุดคือ 100 ในบางกรณีคือ 200// มาพิจารณาความแตกต่างกัน ดังนั้นค่าสูงสุดจะเป็น 200int diff = abs(abs(joystick_y) - abs(joystick_x) เสมอ);leftThrottle = leftThrottle < 0 ? leftThrottle - diff: leftThrottle + diff;rightThrottle = rightThrottle < 0 ? rightThrottle - diff: rightThrottle + diff; // แผนที่จาก ±200 ถึง ± 100 หรือช่วงใดก็ได้ที่คุณต้องการleftThrottle = map(leftThrottle, 0, 200, -100, 100); rightThrottle = map(rightThrottle, 0, 200, -100, 100); //constrainleftThrottle = จำกัด (leftThrottle, -100, 100); rightThrottle = จำกัด (rightThrottle, -100, 100);
ตัวอย่างจาวาสคริปต์:
var leftThrottle = joystick_y + joystick_x;var rightThrottle = joystick_y - joystick_x;// ในบางกรณีค่าสูงสุดคือ 100 ในบางกรณีคือ 200 // ลองแยกความแตกต่างเพื่อให้ค่าสูงสุดเสมอ 200var diff = Math.abs(Math.abs(joystick_y) - Math.abs(joystick_x));leftThrottle = leftThrottle < 0 ? leftThrottle - diff: leftThrottle + diff;rightThrottle = rightThrottle < 0 ? rightThrottle - diff: rightThrottle + diff;// แผนที่จาก ±200 กลับลงมาที่ ±100 หรืออะไรก็ได้ที่คุณต้องการleftThrottle = map (leftThrottle, -200, 200, -100, 100); rightThrottle = map (rightThrottle, -200, 200, -100, 100); //constrain leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // ฟังก์ชันตัวช่วยบางส่วน var constrain = function (num, min, max) { return Math.min (Math. สูงสุด (จำนวน, นาที), สูงสุด); }; var map = ฟังก์ชัน (num, inMin, inMax, outMin, outMax){ var p, inSpan, outSpan, mapped; inMin = inMin + inMax; num = num + inMax; inMax = inMax + inMax; inSpan = Math.abs (inMax-inMin); p = (จำนวน/ช่วงนิ้ว)*100; outMin = outMin + outMax; outMax = outMax + outMax; outSpan = Math.abs (outMax - outMin); แมป = outSpan*(p/100) - (outMax/2); แมปกลับมา;};
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-