✅ 目的

コントローラの物理ボタン(例:L1、R1、↑、Sボタンなど)が押されたときの入力値(ビット値)を確認し、リアルタイムで出力します。


🧩 使用関数

関数 / イベント 役割
setEventHandler() イベント発生時に呼び出す関数を登録します
eventButton() ボタン入力イベント(押下時)を検知する
sendPing() 定期的なPing送信で接続状態やイベントを活性化

🛠 実装ステップ

  1. eventButton() をトリガーに使って、ボタンが押された際の入力値を検出
  2. setEventHandler() でハンドラー関数を登録
  3. 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()