コントローラの物理ボタン(例:L1、R1、↑、Sボタンなど)が押されたときの入力値(ビット値)を確認し、リアルタイムで出力します。
| 関数 / イベント | 役割 |
|---|---|
setEventHandler() |
イベント発生時に呼び出す関数を登録します |
eventButton() |
ボタン入力イベント(押下時)を検知する |
sendPing() |
定期的なPing送信で接続状態やイベントを活性化 |
eventButton() をトリガーに使って、ボタンが押された際の入力値を検出setEventHandler() でハンドラー関数を登録sendPing() を送信して、コントローラと通信維持from time import sleep
from CodingRider.drone import *
from CodingRider.protocol import *
def eventButton(button):
print("eventButton() / " +
"Button: 0b{0:16}, Event: {1:6}".format(bin(button.button)[2:].zfill(16),
button.event.name))
if __name__ == '__main__':
drone = Drone()
drone.open()
# イベントハンドリング関数登録
drone.setEventHandler(DataType.Button, eventButton)
drone.sendPing(DeviceType.Controller)
for i in range(10, 0, -1):
print(i)
sleep(1)
drone.close()
🎮 ジョイスティック入力値のリアルタイム出力
コントローラのジョイスティックの入力方向・強さをリアルタイムで読み取り、ドローン制御やログ出力に活用する。
| 関数 / イベント | 説明 |
|---|---|
eventJoystick() |
ジョイスティック入力イベントを取得 |
setEventHandler() |
イベント発生時に処理する関数を登録 |
sendPing() |
通信状態維持・イベント受信を促進(定期送信が必要) |
from time import sleep
from CodingRider.drone import *
from CodingRider.protocol import *
def eventJoystick(joystick):
print("eventJoystick() / " +
"L: ({0:4}, {1:4}), {2:5}, {3:5} / ".format(joystick.left.x, joystick.left.y,
joystick.left.direction.name, joystick.left.event.name) +
"R: ({0:4}, {1:4}), {2:5}, {3:5}".format(joystick.right.x, joystick.right.y,
joystick.right.direction.name, joystick.right.event.name))
if __name__ == '__main__':
drone = Drone()
drone.open()
# イベントハンドリング関数登録
drone.setEventHandler(DataType.Joystick, eventJoystick)
drone.sendPing(DeviceType.Controller)
for i in range(10, 0, -1):
print(i)
sleep(1)
drone.close()