概要
ラズパイでプログラムを組んでいて、ラジコンを作りました。
ラジコンをゲームのコントローラーでできないか、試している途中で、
「Aボタンはどんな信号なんだ?」と思い、
今回、調べました。
コード
早速、コードです。言語はpythonで書いています。
まずは、各ボタンを調べます。
import pygame
# Pygameの初期化
pygame.init()
# コントローラーの初期化
pygame.joystick.init()
# 最初のジョイスティックを選択
joystick_count = pygame.joystick.get_count()
if joystick_count > 0:
joystick = pygame.joystick.Joystick(0)
joystick.init()
print(f"Detected joystick: {joystick.get_name()}")
else:
print("No joystick detected")
pygame.quit()
exit()
print("Press any button on the controller...")
# イベントループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.JOYBUTTONDOWN:
print(f"Button {event.button} pressed")
elif event.type == pygame.JOYBUTTONUP:
print(f"Button {event.button} released")
elif event.type == pygame.QUIT:
running = False
pygame.quit()
上のコードだと、十字キーや左右のジョイスティックが調べなれなかったので、
以下コードで再度調べます。
import pygame
# Pygameの初期化
pygame.init()
# コントローラーの初期化
pygame.joystick.init()
# 最初のジョイスティックを選択
joystick_count = pygame.joystick.get_count()
if joystick_count > 0:
joystick = pygame.joystick.Joystick(0)
joystick.init()
print(f"Detected joystick: {joystick.get_name()}")
else:
print("No joystick detected")
pygame.quit()
exit()
print("Press any button on the controller...")
# イベントループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.JOYBUTTONDOWN:
print(f"Button {event.button} pressed")
elif event.type == pygame.JOYBUTTONUP:
print(f"Button {event.button} released")
elif event.type == pygame.QUIT:
running = False
# ハットスイッチの状態を取得
hat = joystick.get_hat(0)
print(f"Hat status: {hat}")
# 左のジョイスティックの軸の状態を取得
left_axis_x = joystick.get_axis(0)
left_axis_y = joystick.get_axis(1)
print(f"Left Stick Axis X: {left_axis_x}, Axis Y: {left_axis_y}")
# 右のジョイスティックの軸の状態を取得
right_axis_x = joystick.get_axis(3) # 右スティックの左右
right_axis_y = joystick.get_axis(4) # 右スティックの上下
print(f"Right Stick Axis X: {right_axis_x}, Axis Y: {right_axis_y}")
pygame.quit()
少し解説します。
ボタンの認識にはイベントがあります。
JOYBUTTONDOWN,JOYBUTTONUP,というのが、各ボタンのイベントです。
JOYHATMOTIONというのが、十字キーのイベントです。
JOYAXISMOTIONというのが、ジョイスティックのイベントになります。
マッピング結果
以下がマッピングした結果となります。
| コントローラーのボタン | 信号 |
| A | 0 |
| B | 1 |
| X | 3 |
| Y | 4 |
| LB | 6 |
| RB | 7 |
| LT | 8 |
| RT | 9 |
| – | 10 |
| + | 11 |
| home | 12 |
| L3(左のジョイスティック) | 13 |
| R3(右のジョイスティック) | 14 |
| P1 | 19 |
| P2 | 23 |
| star | なし |
| profile | なし |
| ↑ | 0,1 |
| ↓ | 0,-1 |
| ← | -1,0 |
| → | 1,0 |
| 左ジョイスティック左右 | get_axis(0) |
| 左ジョイスティック上下 | get_axis(1) |
| 右ジョイスティック左右 | get_axis(3) |
| 右ジョイスティック上下 | get_axis(4) |
まとめ
今まで書いたコードはpygameのライブラリです。他のライブラリだと違うみたいです。注意してください。
何かの参考になれば幸いです。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
