Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Radio qəbuledicisindən PPM siqnallarını joystick mövqelərinə çevirir
R/C radio ötürücünüzlə ən sevdiyiniz oyunları və uçuş simulyatorlarını oynamaq üçün istifadə edin. Bu Təlimat, bu çevrilməni həyata keçirmək üçün LittleBits -dən bir Arduino və DSMX qəbuledicisi və sadə bir kod parçasından istifadə edir.
Sizə lazım olacaq
- Güc
- Arduino
- USB kabellər
- pin başlıqları
- tullanan tel
- PPM çıxışı olan bir radio qəbuledicisi.
Addım 1: Arduinonun Əlavə I/O Portlarına Lehim Pin Başlıqları
Alıcını (RX) gücləndirmək üçün Arduinoya pin başlıqlarının əlavə edilməsi lazımdır. Bu da Bit və RX arasındakı naqilləri çox asanlaşdıracaq. Daha çox məlumat üçün https://discuss.littlebits.cc/t/using-the-additional-i-os-on-the-arduino-bit səhifəsinə baxın.
Addım 2: Arduino Joystick Kitabxanasını IDE -yə əlavə edin
Kitabxananı GitHub -da tapa bilərsiniz, https://github.com/MHeironimus/ArduinoJoystickLib… Yazdığınız üçün təşəkkür edirəm, Matthew Heironimus.
Yalnız müəyyən Arduinolar bir joystick kimi bir HID təqlid edə bilər. LittleBits mikrodenetleyicisi ürəkdə bir Arduino Leonardo olduğu üçün getməyiniz yaxşıdır.
Addım 3: Kodu Arduino üzərinə yandırın
#include #define inputPin 16#kanalları təyin edin 4 #define lo 800 // RX çıxışına uyğunlaşdırın#hi 1600 təyin edin // RX çıxışına uyğunlaşdırın#filtri təyin edin 10 kanal [kanallar]; int previousValue [kanallar]; int counter = 0; Joystick_ Joystick (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, doğru, doğru, yalan, yalan, yalan, yalan, yalan, doğru, doğru, yalan, yalan); void setup () {Joystick.setXAxisRange salam); Joystick.setYAxisRange (bax, salam); Joystick.setThrottleRange (bax, salam); Joystick.setRudderRange (bax, salam); Joystick.begin (); Serial.begin (9600); pinMode (girişPin, GİRİŞ); } void loop () {if (pulseIn (inputPin, HIGH)> 3000) {for (int i = 0; i <= kanallar-1; i ++) {kanal = pulseIn (inputPin, HIGH); } üçün (int i = 0; i <= kanallar-1; i ++) {əgər ((kanal > 2000) || (kanal <500)) {kanal = əvvəlkiValue ; } başqa {kanal = (əvvəlkiValue +kanal )/2; sayğac ++; }} Joystick.setXAxis (kanal [0]); Joystick.setYAxis (kanal [1]); Joystick.setThrottle (kanal [2]); Joystick.setRudder (kanal [3]); } if (sayğac> filtr) {üçün (int i = 0; i <= kanallar-1; i ++) {Serial.print ("kanal"); Serial.çap (i+1); Serial.print (":"); Serial.println (kanal ); əvvəlkiValue = kanal ; } sayğac = 0; }}
Unutmayın ki, R/C siqnalı ilə təqlid edilmiş USB HID arasında körpü olan kod ən sadə formada gəlir. Burada istifadə olunan funksiya - pulseIn - bloklama funksiyasıdır. Burada və burada fasilələrdən istifadə edərək bloklanmayan bir yanaşmanın necə tətbiq ediləcəyini oxuyun.
Addım 4: Kabel çəkin
Keçid telini / DuPont kabellərini Bit və RX arasına bağlayın. Bu kabellərin ucundakı bağlayıcıların dişi olması lazımdır. RX -in PPM portundan GND (mavi), VCC (qəhvəyi) və siqnalı (narıncı) Arduino üzərindəki GND, VCC və d16 -ya bağlayırıq.
Addım 5: Alıcını bağlayın
Arduino'yu gücdən ayırın. Bağlayıcı kəməri RX -də BIND işarələnmiş bağlayıcı yerinə qoyun. Radio ötürücünüzü yandırın və bağlama rejiminə keçirin. Sonra Arduinoya güc tətbiq edin. Alıcıdakı LED yandıqda bağlama prosesi uğurlu oldu.
Addım 6: Kodu şəraitə uyğunlaşdırın
Arduino eskizindəki hi və lo sabitləri, istifadə etdiyiniz alıcının faktiki çıxışını əks etdirmək üçün dəyişdirilməlidir.
#800 təyin edin
#salam 1600
PPM nəbzinin içindəki siqnallar ideal olaraq 1000μs -dən 2000μs -ə qədərdir. Bu Təlimatlandırılan çıxışlarda istifadə olunan RX təxminən 800 ilə 1600 arasında dəyişir və hər kanalda bir qədər fərqlidir. Alıcınızın hansı diapazonda olduğunu öyrənmək üçün RX -in çıxışını görmək üçün Arduino IDE -də Serial Monitoru açın. Buna bənzər görünəcək:
kanal 1: 728
kanal 2: 729 kanal 3: 703 kanal 4: 726 kanal 1: 1681 kanal 2: 1639 kanal 3: 1613 kanal 4: 1676
RX -in çıxdığı diapazon haqqında daha aydın təsəvvür əldə etdikdən sonra hi və lo üçün yaxşı yaxınlaşmaları seçin və sabitləri buna uyğun olaraq dəyişdirin. Sonra eskizi yenidən Arduino -ya yükləyin.
Addım 7: Emulated Joystick'i kalibr edin
Cihazı kompüterinizə bağlayın və təqlid olunan joysticki kalibr etmək üçün OS -nin kalibrləmə funksiyasından istifadə edin. Linux üçün yaxşı bir vasitə jstest-gtk-dir.
Əlavə təkmilləşdirmələr
- Bloklamayan kod yazın (3-cü addıma baxın)
- Qlobal olaraq deyil, hər kanal üçün diapazon təyin edin (bax: Adım 6)
Əlavə oxu
- Redcon CM703
- PPM