aaa_tuのアイコン画像
aaa_tu 2021年02月23日作成 (2021年02月23日更新)
製作品 製作品 閲覧数 2728
aaa_tu 2021年02月23日作成 (2021年02月23日更新) 製作品 製作品 閲覧数 2728

小さなマイコンボードSeeduino Xiaoで、簡単にジョイスティックマウスをつくる

小さなマイコンボードSeeduino Xiaoで、簡単にジョイスティックマウスをつくる

さて、Seeeduino Xiaoという、とても安価(600円くらい)で小さいマイコンボードがあります。

Adafruitが提供するhidライブラリを使うことで、簡単にUSBキーボードやマウスとして動かすことができるので、このマイコンを使って、プレステのコントローラーなどに使われるジョイスティックをマウス化してみました。

部品

ジョイスティックは、Arduinoなどで簡単に使えるモジュールになっているものを使いました。

2軸ジョイスティックモジュール(秋月電子)

X軸とY軸に可変抵抗が付いているので、アナログ入力で読み取ればスティックの方向を取ることができます。

接続方法

Seeeduino Xiaoは、小さい割にI/Oが充実しているので、配線を交差させずに接続できます。

Xiao ジョイスティック
GND --- GND
3V3 --- 5V
A10 --- VRX
A9 --- VRY
A8 --- SW

セットアップ

プログラムはCircuitPythonで書いてみることにしました。Seeeduino XiaoでCircuitPython使う方法は、公式にわかりやすいチュートリアルがあります。

SeeeduinoXIAOでCircuitPythonをインストールして動作させる

今回はhidのライブラリも必要なので、CircuitPython Libraries のページからライブラリ詰め合わせをダウンロードして、adafruit_hidフォルダを探して、CIRCUITPYドライブにこのように配置します。
キャプションを入力できます

プログラム

こちらが、ジョイスティックのアナログ値を読み取って、マウス操作として出力するプログラムです。CIRCUITPYドライブのルートに入れます。

main.py

import time import board import usb_hid from adafruit_hid.mouse import Mouse from analogio import AnalogIn mouse = Mouse(usb_hid.devices) A9 = AnalogIn(board.A9) A10 = AnalogIn(board.A10) speed = 15 while True: x_factor = ((A10.value / 65535) - 0.5) * 2 y_factor = ((A9.value / 65535) - 0.5) * 2 mouse.move(x=int(x_factor * speed), y=int(y_factor * speed)) time.sleep(0.01)

完成!

ログインしてコメントを投稿する