社内のちょっとしたシステムの試験用に「3ボタンのUSB-キーボード」を作る必要が出てきました。
耐久性と予算は度外視、とにかく急ぎで作る必要とのことだったので、こういう場合にはArduino。
誂向きにUSBガジェットとして機能するmicroがあるので、チョイチョイとコントローラを作る事ができます。
実際のところ
部品
本体は、前述の通りArduino micro
Arduino - ArduinoBoardMicro
ボタンには格ゲーファンにはお馴染みの三和電子さんを採用。
三角形の奴と
三和電子 OBSF-24TR-G ハメ込み式押しボタン三角 緑
丸ボタン
三和電子 OBSFS-30K/MB 【静音】30φゲームSW 黒ボディマットブルー
信号側はArduinoのデジタルピンに、グランド側は1kΩの抵抗を噛ませてからgndにつなぐだけの超簡単実装です。
詳しい回路図は後日……
箱は千石電商で合う奴を買って*1、ピンバイスとヤスリで穴あけて……こんな感じで組みあがりました。
スクリプト
スクリプトは以下の通り。
#define buttonPin_UP 6 #define buttonPin_RUN 5 #define buttonPin_DOWN 4 #define code_UP '8' #define code_RUN '5' #define code_DOWN '2' int buttonAction(int pinName, char action) { if (digitalRead(pinName) == 0) // if the button goes low { Keyboard.write(action); delay(200);// 早すぎるとバッファあふれするので、ディレイを持たせる } } void setup() { DDRD = DDRD | B10001100; // 4,5,6 to input PORTD = B01110000; // 4,5,6 to HIGH } void loop() { buttonAction(buttonPin_RUN, code_RUN); //実行を優先する。 buttonAction(buttonPin_UP, code_UP); buttonAction(buttonPin_DOWN, code_DOWN); }
参考もと
*1:ボタンにそれなりの高さがあるので、選択肢は多くはないです。手持ち測定機くらいになっちゃいます