สารบัญ:
- ขั้นตอนที่ 1: บัดกรีส่วนหัวของพินเข้ากับพอร์ต I/O เพิ่มเติมของ Arduino
- ขั้นตอนที่ 2: เพิ่ม Arduino Joystick Library ใน IDE ของคุณ
- ขั้นตอนที่ 3: แฟลชโค้ดลงบน Arduino
- ขั้นตอนที่ 4: ทำการเดินสายไฟ
- ขั้นตอนที่ 5: ผูกผู้รับ
- ขั้นตอนที่ 6: ปรับโค้ดให้เข้ากับสถานการณ์ของคุณ
- ขั้นตอนที่ 7: ปรับเทียบจอยสติ๊กจำลอง
วีดีโอ: R/C เป็น USB Bridge: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
แปลงสัญญาณ PPM จากเครื่องรับวิทยุเป็นตำแหน่งจอยสติ๊ก
ใช้เพื่อเล่นเกมโปรดและโปรแกรมจำลองการบินด้วยเครื่องส่งสัญญาณวิทยุ R/C ของคุณ คำแนะนำนี้ใช้ Arduino จาก littleBits และตัวรับ DSMX รวมถึงข้อมูลโค้ดอย่างง่ายเพื่อทำการแปลงนี้
คุณจะต้องการ
- พลัง
- Arduino
- สาย USB
- ส่วนหัวของพิน
- สายจัมเปอร์
- เครื่องรับวิทยุที่มีเอาต์พุต PPM
ขั้นตอนที่ 1: บัดกรีส่วนหัวของพินเข้ากับพอร์ต I/O เพิ่มเติมของ Arduino
ในการจ่ายไฟให้กับเครื่องรับ (RX) จำเป็นต้องเพิ่มส่วนหัวของพินเข้ากับ Arduino สิ่งนี้จะทำให้การเดินสายระหว่าง Bit และ RX ง่ายขึ้นมาก ดู https://discuss.littlebits.cc/t/using-the-additional-i-os-on-the-arduino-bit สำหรับข้อมูลเพิ่มเติม
ขั้นตอนที่ 2: เพิ่ม Arduino Joystick Library ใน IDE ของคุณ
คุณสามารถพบไลบรารี่บน GitHub https://github.com/MHeironimus/ArduinoJoystickLib… ขอบคุณ Matthew Heironimus สำหรับการเขียน
Arduinos บางตัวเท่านั้นที่สามารถเลียนแบบ HID ได้เหมือนจอยสติ๊ก เนื่องจากไมโครคอนโทรลเลอร์ littleBits คือหัวใจของ Arduino Leonardo คุณจึงพร้อมลุย
ขั้นตอนที่ 3: แฟลชโค้ดลงบน Arduino
#include #define inputPin 16#define channel 4 #define lo 800 //ปรับเป็นเอาต์พุตของ RX#define hi 1600 // ปรับเป็นเอาต์พุตของ RX#define filter 10int channel [channels]; int ค่าก่อนหน้า[ช่อง]; ตัวนับ int = 0;จอยสติ๊ก_ จอยสติ๊ก(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, จริง, จริง, เท็จ, เท็จ, เท็จ, เท็จ, จริง, จริง, เท็จ, เท็จ, เท็จ); ตั้งค่าเป็นโมฆะ () { Joystick.setXAxisRange (แท้จริง สวัสดี); Joystick.setYAxisRange(สวัสดี); Joystick.setThrottleRange(สวัสดี); Joystick.setRudderRange(สวัสดี); จอยสติ๊ก.begin(); Serial.begin(9600); pinMode(อินพุทพิน อินพุท); } void loop(){ if(pulseIn(inputPin, HIGH) > 3000) { for(int i = 0; i <= channels-1; i++) { channel=pulseIn(inputPin, HIGH); } for(int i = 0; i <= channels-1; i++) { if((channel> 2000) || (channel <500)) { channel = PreviousValue; } อื่น ๆ { ช่อง = (ค่าก่อนหน้า+ช่อง)/2; เคาน์เตอร์++; } } Joystick.setXAxis(ช่อง[0]); Joystick.setYAxis(ช่อง [1]); จอยสติ๊ก.setThrottle(ช่อง [2]); Joystick.setRudder(ช่อง[3]); } ถ้า (ตัวนับ > ตัวกรอง) { สำหรับ (int i = 0; i <= ช่อง -1; i++) { Serial.print ("ช่อง"); Serial.print(i+1); Serial.print(": "); Serial.println(ช่อง); ค่าก่อนหน้า=ช่อง; } ตัวนับ=0; } }
โปรดทราบว่ารหัสที่เชื่อมระหว่างสัญญาณ R/C และ USB HID ที่จำลองมานั้นมาในรูปแบบที่ง่ายที่สุด ฟังก์ชันที่ใช้ที่นี่ – pulseIn – เป็นฟังก์ชันการบล็อก อ่านที่นี่และที่นี่ วิธีการใช้วิธีการไม่บล็อกโดยใช้การขัดจังหวะ
ขั้นตอนที่ 4: ทำการเดินสายไฟ
เชื่อมต่อสายจัมเปอร์/สายดูปองท์ระหว่าง Bit และ RX ขั้วต่อที่ปลายสายเหล่านี้ต้องเป็นตัวเมีย เราเชื่อมต่อ GND (สีน้ำเงิน), VCC (สีน้ำตาล) และสัญญาณ (สีส้ม) จากพอร์ต PPM ของ RX ถึง GND, VCC และ d16 บน Arduino
ขั้นตอนที่ 5: ผูกผู้รับ
ตัดการเชื่อมต่อ Arduino จากพลังงาน ใส่สายรัดเข้าไปในตำแหน่งขั้วต่อที่มีเครื่องหมาย BIND บน RX เปิดเครื่องส่งวิทยุของคุณและเปลี่ยนเป็นโหมดผูก ถัดไปใช้พลังงานกับ Arduino กระบวนการผูกสำเร็จเมื่อ LED ในตัวรับเปิดขึ้น
ขั้นตอนที่ 6: ปรับโค้ดให้เข้ากับสถานการณ์ของคุณ
ต้องแก้ไขค่าคงที่ hi และ lo ในภาพร่าง Arduino เพื่อสะท้อนผลลัพธ์ที่แท้จริงของเครื่องรับที่คุณใช้
#define lo 800
#define สวัสดี 1600
สัญญาณภายในพัลส์ PPM นั้นเหมาะสมที่สุดตั้งแต่ 1000μs ถึง 2000μs RX ที่ใช้ในค่าเอาต์พุตที่สอนได้นี้ประมาณระหว่าง 800 ถึง 1600 และแตกต่างกันเล็กน้อยในแต่ละช่อง ในการค้นหาว่าตัวรับสัญญาณของคุณมีช่วงใด ให้เปิด Serial Monitor ใน Arduino IDE เพื่อดูผลลัพธ์ของ RX ของคุณ จะมีลักษณะเช่นนี้:
ช่อง 1: 728
ช่อง 2: 729 ช่อง 3: 703 ช่อง 4: 726 ช่อง 1: 1681 ช่อง 2: 1639 ช่อง 3: 1613 ช่อง 4: 1676
เมื่อคุณมีแนวคิดที่ชัดเจนขึ้นเกี่ยวกับช่วงที่เอาต์พุต RX ของคุณ ให้เลือกการประมาณที่ดีสำหรับ hi และ lo แล้วเปลี่ยนค่าคงที่ตามลำดับ จากนั้นอัปโหลดภาพร่างไปยัง Arduino อีกครั้ง
ขั้นตอนที่ 7: ปรับเทียบจอยสติ๊กจำลอง
เชื่อมต่ออุปกรณ์กับคอมพิวเตอร์ของคุณ และใช้ฟังก์ชันการปรับเทียบของระบบปฏิบัติการของคุณเพื่อปรับเทียบจอยสติ๊กที่จำลอง เครื่องมือที่ดีสำหรับ Linux คือ jstest-gtk
การปรับปรุงเพิ่มเติม
- เขียนโค้ดที่ไม่บล็อก (ดูขั้นตอนที่ 3)
- กำหนดช่วงต่อช่อง ไม่ใช่ทั่วโลก (ดูขั้นตอนที่ 6)
อ่านเพิ่มเติม
- เรดคอน CM703
- PPM
แนะนำ:
การแปลงหลอดไฟ AC 230V เป็น USB Power!: 6 ขั้นตอน (พร้อมรูปภาพ)
การแปลงหลอดไฟ AC 230V เป็นพลังงาน USB!: ฉันเจอหลอดไฟเอฟเฟกต์เปลวไฟที่สวยงามบน eBay ซึ่งกะพริบและมีแอนิเมชั่นในตัว โดยปกติแล้วจะใช้พลังงานจากอินพุตไฟ AC 85-265V แต่สำหรับแอปพลิเคชันแบบพกพาเช่น คบเพลิงปลอมหรือตะเกียงนี้ไม่เหมาะ ฉันแก้ไข
Sega Genesis Controller เป็น USB Adapter ราคา $2: 4 ขั้นตอน
Sega Genesis Controller to USB Adapter ราคา $2: อะแดปเตอร์นี้อนุญาตให้ตัวควบคุม Sega Genesis / Mega Drive จำลองเกมแพด XBox 360 คู่สำหรับใช้กับ retroarch หรือซอฟต์แวร์อื่นๆ ใช้ยาเม็ดสีน้ำเงิน stm32f103c8t6 ที่เข้ากันได้กับ Arduino สำหรับอุปกรณ์อิเล็กทรอนิกส์ ส่วนผสม:stm32f103c8t6 blue pilltwo DB9 ม
USB เป็น Serial TTL: 3 ขั้นตอน
USB to Serial TTL: สำหรับโปรเจ็กต์ PIC บางโปรเจ็กต์ของฉัน ฉันต้องการอินเทอร์เฟซแบบอนุกรม (RS232) เพื่อพิมพ์ข้อความบางข้อความบนหน้าจอคอมพิวเตอร์ของฉัน ฉันยังมีคอมพิวเตอร์เดสก์ท็อปที่มีอินเทอร์เฟซ RS232 เดียว แต่ปัจจุบันคอมพิวเตอร์ส่วนใหญ่มีอินเทอร์เฟซ USB แทน คุณสามารถซื้อ dev
Raspberry Pi Ethernet เป็น Wifi Bridge: 7 ขั้นตอน
Raspberry Pi Ethernet to Wifi Bridge: ฉันมีเครือข่ายทดสอบของ Raspberry Pies อุปกรณ์ต่างๆ คอมพิวเตอร์และอุปกรณ์เครือข่ายอื่นๆ ทั้งหมดได้รับการจัดการโดยไฟร์วอลล์/เราเตอร์ที่แพร่หลาย และฉันต้องการเชื่อมต่อกับอินเทอร์เน็ตเพื่อที่ฉันจะได้ ดึงการอัปเดต ซอฟต์แวร์ ฯลฯ น่าเสียดาย
พอร์ต USB ของ NODEMcu ไม่ทำงาน? อัปโหลดโค้ดโดยใช้โมดูล USB เป็น TTL (FTDI) ใน 2 ขั้นตอน: 3 ขั้นตอน
พอร์ต USB ของ NODEMcu ไม่ทำงาน? อัปโหลดรหัสโดยใช้โมดูล USB เป็น TTL (FTDI) ใน 2 ขั้นตอน: เหนื่อยกับการเชื่อมต่อกับสายไฟจำนวนมากจากโมดูล USB เป็น TTL ไปยัง NODEMcu ให้ปฏิบัติตามคำแนะนำนี้เพื่ออัปโหลดรหัสในเวลาเพียง 2 ขั้นตอน หากพอร์ต USB ของ NODEMcu ใช้งานไม่ได้ อย่าเพิ่งตกใจ เป็นเพียงชิปไดรเวอร์ USB หรือขั้วต่อ USB