XP11 ZIBOにRevsim TQを接続する その2 [X-Plane]
OCUSBMAPPER経由でXP11のZIBO737とRevolutionSimproductsのTQをつなげます。
以下がOCUSBMAPPERのスクリプト。
if文だけの超シンプル構成(笑)
ATがdisarmだったら、RevsimTQのポテンショメーターの値をXP11に渡す。
ATがarmだったら、sim上のTQの位置とRevsimTQの位置を比べて、それに応じた値をモーターへ入力せよ。
というだけの簡単なスクリプト。
これでスロットルの動作はOK。
以下、動作状況。
次回はフラップかな。
以下がOCUSBMAPPERのスクリプト。
if文だけの超シンプル構成(笑)
ATがdisarmだったら、RevsimTQのポテンショメーターの値をXP11に渡す。
ATがarmだったら、sim上のTQの位置とRevsimTQの位置を比べて、それに応じた値をモーターへ入力せよ。
というだけの簡単なスクリプト。
これでスロットルの動作はOK。
--*************************************************************************************-- --** CONSTANTS --*************************************************************************************-- DCMOTORS_DEVICE = 0 --*************************************************************************************-- --** FIND X-PLANE COMMANDS --*************************************************************************************-- simDR_tq_pos = find_dataref("sim/cockpit2/engine/actuators/throttle_ratio") simDR_at_pos = find_dataref("laminar/B738/autopilot/autothrottle_arm_pos") --*************************************************************************************-- --** FIND CUSTOM DATAREFS --*************************************************************************************-- dcmDR_input_analog = find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/input/analog") dcmDR_output_motor = find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/output/motor") --*************************************************************************************-- --** SYSTEM FUNCTIONS --*************************************************************************************-- function process_tq() if (simDR_at_pos == 0) then simDR_tq_pos[0] = dcmDR_input_analog[5] / 242 simDR_tq_pos[1] = dcmDR_input_analog[1] / 242 end if (simDR_at_pos == 1) then -- tq position revsim_left_tq_pos = dcmDR_input_analog[5] / 242 left_tq_pos1 = simDR_tq_pos[0] + 0.05 left_tq_pos2 = simDR_tq_pos[0] - 0.05 revsim_right_tq_pos = dcmDR_input_analog[1] / 242 right_tq_pos1 = simDR_tq_pos[1] + 0.05 right_tq_pos2 = simDR_tq_pos[1] - 0.05 -- left tq up if (left_tq_pos1 > revsim_left_tq_pos) then dcmDR_output_motor[1] = 45 if (left_tq_pos2 < revsim_left_tq_pos) then dcmDR_output_motor[1] = 0 end end -- left tq down if (left_tq_pos2 < revsim_left_tq_pos) then dcmDR_output_motor[1] = 170 if (left_tq_pos1 > revsim_left_tq_pos) then dcmDR_output_motor[1] = 0 end end -- right tq up if (right_tq_pos1 > revsim_right_tq_pos) then dcmDR_output_motor[2] = 45 if (right_tq_pos2 < revsim_right_tq_pos) then dcmDR_output_motor[2] = 0 end end -- right tq down if (right_tq_pos2 < revsim_right_tq_pos) then dcmDR_output_motor[2] = 170 if (right_tq_pos1 > revsim_right_tq_pos) then dcmDR_output_motor[2] = 0 end end end end --*************************************************************************************-- --** XLUA EVENT CALLBACKS --*************************************************************************************-- function before_physics() process_tq() end
以下、動作状況。
次回はフラップかな。
2019-10-20 22:07
nice!(0)
コメント(0)
コメント 0