見出し画像

【工作】Pro microでアナログスティックのみのデバイスを作った備忘録

概要

 PCゲームにおいて,WASD移動が一般的な移動方法である.スキル等の押下するキーが多く必要なゲームも多く,そのようなゲームのために左手デバイスなるものも発売されている.しかし左手デバイスは一般的に高価であり,スティックで移動を賄えるものはなおさらである.

本noteでは,左手デバイスを導入するか悩んだ末に,お試しで自作したアナログスティックのみのデバイスの制作過程を記す.

本デバイスには,”WASDキーにもスキルを振ったために損なわれた移動キー”を賄ってもらう.そのため,ゲーム内で矢印キーに割り振っていた移動を行えるようにする.

ハードウェア

・アナログスティック
・Pro micro互換ボード
・ジャンパ線
・(適当なプラ板)

・はんだごてセット(こて,はんだ)

アナログスティックはX軸(VRX)とY軸(VRY)のほかに押し込みスイッチ(SW)があるものだったが,今回は使用しなかった.

次の表のようにアナログスティックとPro microを繋ぐ.

画像1
画像2

ついでにプラバンとホットボンドでくっつけた.

画像3

ソフトウェア

Arduino IDEをDLしてArduino Leonardoとして書き込む.

無題1

書き込んだコードがこれ.
閾値は適当.Serial.printはなくていい.

#include "Keyboard.h"
const int _UDPIN = A1; // VRY
const int _LRPIN = A2; // VRX
const int _SWPIN = 5; // SW
int _UD = 0; // 上下の値
int _LR = 0; // 左右の値
int TL = 300; //閾値LOW
int TH = 700; //閾値HIGH

void setup() {
Serial.begin(9600);
pinMode(_SWPIN,INPUT) ;

Keyboard.begin();
}

void loop() {
_UD = analogRead(_UDPIN);
_LR = analogRead(_LRPIN);
Serial.print("UP-DOWN:");
Serial.print(_UD, DEC);
Serial.print(" - Left-Rright:");
Serial.println(_LR, DEC);

if (_UD < TL) {
 Serial.println("DOWN");
 Keyboard.press( KEY_DOWN_ARROW );
}
else{
 Keyboard.release( KEY_DOWN_ARROW );
}

if (_LR < TL) {
 Serial.println("RIGHT");
 Keyboard.press( KEY_RIGHT_ARROW );
}
else{
 Keyboard.release( KEY_RIGHT_ARROW );
}

if (_UD > TH) {
 Serial.println("UP");
 Keyboard.press( KEY_UP_ARROW );
}
else{
 Keyboard.release( KEY_UP_ARROW );
}

if (_LR > TH) {
 Serial.println("LEFT");
 Keyboard.press( KEY_LEFT_ARROW );
}
else{
 Keyboard.release( KEY_LEFT_ARROW );
}
delay(100);
}

実際の動作


この記事が気に入ったらサポートをしてみませんか?