Агуулгын хүснэгт:
- Хангамж
- Алхам 1: RX болон Arduino -г холбоно уу
- Алхам 2: Зарим PPM дохио авах
- Алхам 3: Дамжуулагчийг тохируулах
- Алхам 4: Жойстикийг ажиллуулах
- Алхам 5: Arduino -г кодлох
Видео: Arduino дээр суурилсан (JETI) PPM -ээс FSX -ийн USB Joystick хөрвүүлэгч: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:01
Би JETI DC-16 дамжуулагчаа 2-р горимоос 1-р горимд шилжүүлэхээр шийдсэн бөгөөд энэ нь үндсэндээ тохируулагч ба цахилгаан шатыг зүүнээс баруун тийш, эсрэгээр шилжүүлдэг. Тархиндаа зүүн/баруун төөрөлдсөний улмаас би загваруудынхаа нэгийг унагахыг хүсээгүй тул FSX дээр бага зэрэг дадлага хийх боломжтой юу гэж бодож байлаа.
Би JETI дамжуулагчийг уншиж, туршиж үзсэн нь хайрцагнаас гадна Joystick горимыг дэмждэг боловч тэнхлэг, унтраалга өгөхдөө бүрэн уян хатан байдлыг хүсч, TX -ийг жинхэнэ загвартай адил ашиглахыг хүсч байсан. Хүлээн авагчийн гаралтыг ашигласнаар DC-16 дахь дохионы боловсруулалтыг идэвхжүүлж, тэнд програмчилж болох холигч, нислэгийн үе шат, хос тарифыг ашиглах боломжтой болно.
Саяхан би USB HID оролтын төхөөрөмж болох Joystick -ийг Pro Micro шиг хямдхан Arduino -оос хэрхэн яаж хийх тухай сайхан заавар оллоо.
www.instructables.com/id/Create-a-Joystick…
Энэ нь онгоц / нисдэг тэрэг / FSX -ийн бүх зүйлийг удирдахад шаардлагатай бүх зүйлийг идэвхжүүлэх болно! Олон тооны тэнхлэг, товчлуурууд боломжтой.
Надад нөөц JETI RSAT2 байсан тул би үүнийг Arduino -той холбож, Joystick номын сангийн хамт жижиг PPM задлагчийг туршиж үзэхээр шийдсэн.
Эдгээр алхмуудыг дагаж байгаа хүн Arduino -ийг холбох, програмчлах талаар сайн мэддэг гэж би бодож байна. Би эвдрэл, гэмтэлд ямар ч баталгаа өгөхгүй!
Хангамж
Танд хэрэгтэй болно…
- Joystick номын сангийн дэмждэг аливаа Arduino, би Sparkfun Pro Micro 5V / 16 MHz ашигладаг
- Arduino IDE -ийн хамгийн сүүлийн хувилбар
- JETI RSAT2 гэх мэт PPM дохио өгдөг аливаа RC хүлээн авагч
- хэдэн холбогч утас (мин. 3)
- Arduino IDE дээр суулгасан Joystick номын сан
- arduino-timer номын сан:
Алхам 1: RX болон Arduino -г холбоно уу
Цахилгааны утас нь бараг л ойлгомжтой байдаг. Би Arduino -г зөвхөн USB -ээс тэжээхээр шийдсэн, учир нь энэ нь Joystick төхөөрөмжийг дуурайдаг. Энэ нь Arduino -ийг 5V -ээр хангах бөгөөд үүнийг RC хүлээн авагчийг тэжээхэд ашиглаж болно.
Би зохицуулалттай гаралтыг хангадаг Pin VCC, хамгийн ойрын Gnd зүүг ашигласан - үүнийг PPM -ийн холбогч + ба зүү рүү холбоно уу. Arduino -ийг асаахад хүлээн авагч одоо асаж байна.
PPM дохионы хувьд би тэдгээрийг таслахын тулд тасалдлыг ашиглахаар шийдсэн. Тасалдах боломжтой, жишээ нь. Pin 3 дээр, зүгээр л тэнд холбоно уу - arduino дээр "уугуул RC зүү" байхгүй, гэхдээ хүлээн авагчийн дохиог унших өөр өөр арга байж магадгүй юм.
RX хүчдэлийн дохиоллыг идэвхгүй болгох шаардлагатай болсон, учир нь USB тэжээлтэй VCC хүчдэл нь зөвхөн 4.5 В орчим байх боловч нэлээд тогтвортой тул ямар ч асуудалгүй болно.
Алхам 2: Зарим PPM дохио авах
Хүлээн авагч ба TX -ийг асаахад би зураг дээр үзүүлсэн шиг PPM дохиог авч байсан. 16 суваг, үүрд давтагдана. Хэрэв RSAT дээрх Failsafe идэвхгүй болж, дамжуулагч унтарсан бол PPM гаралт идэвхгүй болно.
PPM -ийн талаарх дэлгэрэнгүй мэдээллийг эндээс авах боломжтой.
- https://en.wikipedia.org/wiki/Pulse-position_modul…
- https://wiki.rc-network.de/index.php/PPM
Энэ тохиолдолд би бодит зүйл нисдэггүй тул онолын цаг хугацааг анхаарч үзээгүй бөгөөд саваа бүрэн зүүнээс баруун тийш шилжүүлэхдээ хүлээн авагч маань яг юу гаргаж байгааг осциллограф дээр олж мэдсэн (TX -ийн стандарт тохиргоо). -100% нь 600μs урттай импульс, +100% -аас 1600μs -тэй тохирч байх шиг байна. Би бас Arduino код дээрээ түр зогсоох импульсийн уртыг (400µs) анхаарч үзээгүй боловч фрэймийн зайг мин гэж тооцсон. 3000µs.
Алхам 3: Дамжуулагчийг тохируулах
Зөвхөн хяналтын гадаргуугийн бодит байрлалыг мэдэх шаардлагатай байдаг тул RC функц бүрт нэг суваг / "servo" хангалттай байдаг. Тиймээс дамжуулагчийн тохиргоог энгийн RC загвартай төстэй байдлаар хийж болно. Айлерон, лифт, залуур, тохируулагчийн үндсэн үүрэг нь тус бүрдээ нэг servo дамжуулагч суваг шаарддаг. Би бас хавхлага, тоормос, араа нэмсэн бөгөөд одоог хүртэл 9 суваг үнэгүй үлдээсэн. Flaps -ийг нислэгийн үе шатанд оруулсан бөгөөд саваа, гулсагч эсвэл товчлуураар шууд удирддаггүй болохыг анхаарна уу.
Алхам 4: Жойстикийг ажиллуулах
Joystick номын санг ашиглахад тун хялбар бөгөөд зарим жишээ, туршилтыг өгдөг. Эхлээд Arduino -ийг зохих Joystick гэж илрүүлсэн эсэхийг шалгах нь зүйтэй бөгөөд энэ хэсэгт оруулсан заавар, номын сан нь сайн удирдамж өгдөг.
Төхөөрөмж ба принтерийн хяналтын самбар дээр Arduino нь "Sparkfun Pro Micro" хэлбэрээр гарч ирсэн бөгөөд джойстик тестийн цонхонд 7 тэнхлэг, дэмжигдсэн олон товчлуур харагдаж байв. Arduino -д програмчлах үед малгай унтраалгыг ч ашиглаж болно.
Алхам 5: Arduino -г кодлох
PPM дохиог бодитоор задлан шинжилж, Joystick -ийн тэнхлэг, товчлууруудад хуваарилах нь л дутагдаж байна. Би дараахь зураглалыг хийхээр шийдсэн.
Суваг / Чиг үүрэг / Joystick -ийн даалгавар:
- Тохируулагч -> Тохируулагч тэнхлэг
- Aileron -> X тэнхлэг
- Лифт -> Y тэнхлэг
- Руль -> X эргэлтийн тэнхлэг
- Flaps -> Y эргэлтийн тэнхлэг
- Тоормос -> Z тэнхлэг
- Gear -> Товчлуур 0
Араагаа доошлуулах үед Joystick -ийн эхний товчлуурыг дарах бөгөөд араа дээш өргөхөд гарна. Гэсэн хэдий ч, энэ нь FSX -ийн хувьд FSUIPC -ийг шаардах болно, FSX нь араагаа солих товчлуурыг л хүлээж авах болно, энэ нь миний загварт яг таарч байгаа зүйл биш юм.
Би кодын одоогийн хувилбарыг маш олон сэтгэгдлүүдээр өгсөн бөгөөд энэ нь надад маш сайн тусалж байна. Та даалгавраа өөрчлөх эсвэл шинэ функцүүдийг нэмж болно. Сүүлийн 9 RC суваг одоогоор ашиглагдаагүй байна.
Тохиргоог хийхийн тулд Joystick ангийг үндсэн тэнхлэгийн мужийг тодорхойлох замаар эхлүүлэх шаардлагатай.
/ * Тэнхлэгийн мужийг тохируулах (толгой хэсэгт тодорхойлогдсон, 0 - 1000) */
Joystick.setXAxisRange (CHANNEL_MIN, CHANNEL_MAX); Joystick.setYAxisRange (CHANNEL_MIN, CHANNEL_MAX); …
0 -ээс 1000 хүртэлх утгыг ашигласнаар импульсийн уртыг (600 - 1600µs) дахин хэмжихгүйгээр джойстикийн утгуудтай шууд харьцуулах боломжтой болно.
DIN 3 -ийг дижитал оролт, таталт идэвхжүүлсэн, тасалдал хавсаргасан байдлаар эхлүүлсэн болно.
pinMode (PPM_PIN, INPUT_PULLUP);
attachInterrupt (digitalPinToInterrupt (PPM_PIN), PPM_Pin_Changed, CHANGE);
Дебаг хийх зорилгоор би arduino-timer номын санг ашиглан Цуваа интерфэйсээр дамжуулан зарим хэвлэмэл материалыг нэмж оруулсан болно.
хэрэв (SERIAL_PRINT_INTERVAL> 0) {
scheduler.every (SERIAL_PRINT_INTERVAL, (void*) -> bool {SerialPrintChannels (); true return;}); }
Пиний логик утга өөрчлөгдөх бүрт зүү тасалдлыг дуудах болно, ингэснээр PPM дохионы ирмэг бүрийн хувьд. Импульсийн уртыг micros () ашиглан энгийн цаг хугацаанд нь үнэлнэ үү.
uint32_t curTime = micros ();
uint32_t pulseLength = curTime - edgeTime; uint8_t curState = digitalRead (PPM_PIN);
Одоогийн зүүг үнэлж, импульсийн урт ба өнгөрсөн импульсийг нэгтгэснээр шинэ импульсийг ангилж болно. Дараах болзол нь хүрээ хоорондын зайг илрүүлэх болно.
if (lastState == 0 && pulseLength> 3000 && pulseLength <6000)
Дараагийн импульсийн хувьд импульсийн уртыг тайрах ба хазайлгах замаар импульсийн уртыг тэнхлэгийн төлөвт оруулна.
uint16_t rxLength = импульсийн урт;
rxLength = (rxLength> 1600)? 1600: rxLength; rxLength = (rxLength <600)? 600: rxLength; rxChannels [curChannel] = rxLength - 600;
RxChannels массив нь эцэст нь 0 - 1000 хүртэлх 16 утгыг агуулдаг бөгөөд энэ нь зөөгч / гулсагч болон товчлуурын байрлалыг заана.
16 сувгийг хүлээн авсны дараа Joystick -ийн зураглалыг хийнэ.
/ * тэнхлэгүүд */
Joystick.setThrottle (сувгууд [0]); Joystick.setXAxis (сувгууд [1]); Joystick.setYAxis (1000 - суваг [2]); Joystick.setRxAxis (сувгууд [3]); Joystick.setRyAxis (сувгууд [4]); Joystick.setZAxis (1000 - суваг [5]); / * товчлуурууд */ Joystick.setButton (0, (сувгууд [6] <500? 1: 0)); / * USB -ээр өгөгдлийг шинэчлэх */ Joystick.sendState ();
Би кодын зарим тэнхлэгийг эргүүлсэн бөгөөд энэ нь зайлшгүй биш юм, учир нь тэнхлэгийг servo чиглэл эсвэл FSX дахь даалгаврыг эргүүлэх замаар эргүүлж болно. Гэсэн хэдий ч, би servo чиглэл, мөн FSX -ийн анхны даалгаврыг хадгалахаар шийдсэн.
Товчлуурыг босоо суваг 7 -ээр асааж эсвэл унтраана.
Төлөвлөгчийг тэмдэглэхээ бүү мартаарай … эс бөгөөс дибаг хийх хэвлэмэл харагдахгүй болно.
void loop () {
scheduler.tick (); }
Миний хавсаргасан дэлгэцийн агшинд 1 -р суваг 1000 (бүрэн тохируулагч) -аас 0 (идэвхгүй) руу шилжсэнийг та харж байна.
FSX нь бусад Joystick -ийн нэгэн адил Arduino -ийг илрүүлэх тул товчлуур, сүхээ онгойлгож хөөрөхөд хөгжилтэй байгаарай!
Энэ хандлагын надад хамгийн их таалагдсан зүйл бол та дамжуулагчаа жинхэнэ загвартай адил ашиглаж болно. нислэгийн үе шатыг ашиглах гэх мэт.
Зөвлөмж болгож буй:
Санал хүсэлт зохицуулагчтай гайхалтай Blynk UI бүхий Esp8266 дээр суурилсан Boost хөрвүүлэгч: 6 алхам
Санал хүсэлтийг зохицуулагчтай гайхалтай Blynk UI бүхий Esp8266 дээр суурилсан Boost хөрвүүлэгч: Энэхүү төсөлд би DC хүчдэлийг хэрхэн яаж нэмэгдүүлэх үр дүнтэй, түгээмэл аргыг танд үзүүлэх болно. Nodemcu -ийн тусламжтайгаар өргөлтийн хөрвүүлэгч бүтээх нь хичнээн хялбар болохыг би танд үзүүлэх болно. Үүнийг бүтээцгээе. Энэ нь дэлгэц дээрх вольтметр ба санал хүсэлтийг агуулдаг
Raspberry Pi эсвэл бусад Linux / unix дээр суурилсан компьютер дээр дэлгэцгүй / дэлгэцгүй (толгойгүй) ажиллуулах: 6 алхам
Raspberry Pi эсвэл бусад Linux / unix дээр суурилсан компьютер дээр дэлгэцгүй / дэлгэцгүй (толгойгүй) ажиллуулах: Ихэнх хүмүүс Raspberry PI худалдаж авахдаа компьютерийн дэлгэц хэрэгтэй гэж боддог. Компьютерийн шаардлагагүй дэлгэц, гар дээр мөнгөө бүү үр. Компьютер хооронд гар, дэлгэц шилжүүлэхэд цагаа дэмий үрэх хэрэггүй. Үгүй бол ТВ битгий уя
SAMD21 дээр суурилсан самбарыг USB портоор тоног төхөөрөмжийн цуваа порт болгох: 3 алхам
SAMD21 дээр суурилсан самбарыг USB портоор тоног төхөөрөмжийн цуваа порт болгоно!: Arduino (эсвэл бусад нийцтэй) USB портыг дууриамал цуваа порт болгон ашиглах нь өнөө үед стандарт болсон. Энэ нь манай дуртай самбараас өгөгдлийг дибаг хийх, илгээх, хүлээн авахад маш хэрэгтэй байдаг
Arduino дээр суурилсан контактгүй хэт улаан туяаны термометр - Arduino ашиглан IR суурилсан термометр: 4 алхам
Arduino дээр суурилсан контактгүй хэт улаан туяаны термометр | Arduino ашиглан IR суурилсан термометр: Сайн байна уу залуусаа энэ зааварчилгаанд бид arduino ашиглан контактгүй термометр хийх болно. Заримдаа шингэн/хатуу бодисын температур хэт өндөр эсвэл бага байдаг тул түүнтэй холбоо тогтооход хэцүү байдаг. тэр үед температур
ESP8266 дээр суурилсан Sonoff ухаалаг унтраалга дээр MicroPython програмыг хэрхэн яаж гэрэлтүүлэх вэ: 3 алхам (зурагтай)
ESP8266 дээр суурилсан Sonoff ухаалаг шилжүүлэгч дээр MicroPython Firmware -ийг хэрхэн яаж гэрэлтүүлэх вэ? Sonoff нь ITEAD -ийн боловсруулсан Smart Home -ийн төхөөрөмжийн шугам юм. Энэ шугамын хамгийн уян хатан, хямд төхөөрөмжүүдийн нэг бол Sonoff Basic ба Sonoff Dual юм. Эдгээр нь ESP8266 агуу чип дээр суурилсан Wi-Fi идэвхжүүлсэн унтраалга юм. Хэзээ