まるぼ実験場

アプリの開発日記を載せるサイトでしたが、ただの技術ブログになりました。

続・アーケード風ジョイスティック自作

前回はアケコン品薄時代に対抗すべく、単品売りしているジョイスティックをPCに繋げて活用するという(斜め上な気がしなくもない)手法を提案したところだが、
marubodiary.hateblo.jp

今回はさらなる進化を遂げたのだった……。

外箱作りました

天板サイズは12cm*12cmの正方形、高さは7cm……のつもりだった。
ホームセンターのカットサービスで依頼したのに寸法ミスられて天板の長さが大体11cmになってた件について。まぁちょっと大きめに依頼してたから問題ないけども。

最初は全部ボンドでくっつけようと思っていたのだが、それだとメンテしたいときに困るくね?ということに気づいて、天板はマグネットでくっつけるように。工具なしで開けやすく、戻すときにもぴったり戻しやすくなった。

あと気休め程度かもだけど、箱の底面にもプレー中のズレ防止に滑り止めマットをカットして貼り付けた。

コマンド表も入れられる!?便利な多目的スペース

100均で見つけたA7サイズカードケースが丁度良い大きさだったので、それを前面に貼り付けただけである。
コマンド表やお好みのイラスト入れられたりと活用方法は色々あすはず。
既製品のアケコンの天板って絵を変えられるとかカスタマイズしやすいやつがあったりするし、そんな感じのイメージ……。
やってて思いついたけど、MDFを柱だけにして全側面をカードケースにしてみても面白かったかもしれない。

ArduinoをProMicroに

実は内部もちょっと弄ってたり。

LeonardoからProMicroにして基板のコストとサイズをダウン。
小型化して筐体の中に組み込みやすくなりました!!そして持ち運びにも便利(?)

ブレッドボードに空いていたスペースにトグルスイッチを追加して新機能も追加。
ソースコードの書き換えなしにWASD操作と方向キー操作をいつでも切り替えできるようになりました!すぐに1P2Pが切り替えられる!便利!!

トグルスイッチ追加版ソースコード
#include <Keyboard.h>

//セイミツ工業LS-32-01使用、ハーネスを右上とする
const int PIN_A = 2; //緑
const int PIN_B = 3; //黒 
const int PIN_C = 4; //赤
const int PIN_D = 5; //黄
const int PIN_SW = 7; //トグルスイッチ用

void setup() {
  // put your setup code here, to run once:
  pinMode(PIN_A, INPUT_PULLUP);
  pinMode(PIN_B, INPUT_PULLUP);
  pinMode(PIN_C, INPUT_PULLUP);
  pinMode(PIN_D, INPUT_PULLUP);
  pinMode(PIN_SW, INPUT_PULLUP);

  Keyboard.begin();
}

void loop() {
  // put your main code here, to run repeatedly:
  int val_a,val_b,val_c,val_d;
  int switchstate;
  
  val_a = digitalRead(PIN_A);
  val_b = digitalRead(PIN_B);
  val_c = digitalRead(PIN_C);
  val_d = digitalRead(PIN_D);
  switchstate = digitalRead(PIN_SW);

  if(switchstate == HIGH){
    val_b == 0 ? Keyboard.press(KEY_UP_ARROW) : Keyboard.release(KEY_UP_ARROW);
    val_a == 0 ? Keyboard.press(KEY_DOWN_ARROW) : Keyboard.release(KEY_DOWN_ARROW);
    val_d == 0 ? Keyboard.press(KEY_LEFT_ARROW) : Keyboard.release(KEY_LEFT_ARROW);
    val_c == 0 ? Keyboard.press(KEY_RIGHT_ARROW) : Keyboard.release(KEY_RIGHT_ARROW);
  }else if(switchstate == LOW){
    val_b == 0 ? Keyboard.press('w') : Keyboard.release('w');
    val_a == 0 ? Keyboard.press('s') : Keyboard.release('s');
    val_d == 0 ? Keyboard.press('a') : Keyboard.release('a');
    val_c == 0 ? Keyboard.press('d') : Keyboard.release('d');
  }
  
  delay(1);
}

ここまでの実制作期間は2日ほど。自分にしては珍しく勢いで作りきった!
こういうのは置いとけばおいとくほど面倒になってしまうたちなのでさっさと形にしてしまうに限る。一度作ってみることで分かることも多いので。
先述のプラスチックカードケースを全面に使うとかのアイデアもそのうちやってみたいなぁ。
格ゲー沼よりアケコン制作の沼に落ちかけてる
思えばこの人、肝心のソフトは買ってないのになんでコントローラーから先に作ってるんでしょうね……。