Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

「3ボタンのUSB-キーボード」をArduino microでチョチョイと作る

社内のちょっとしたシステムの試験用に「3ボタンのUSB-キーボード」を作る必要が出てきました。
耐久性と予算は度外視、とにかく急ぎで作る必要とのことだったので、こういう場合にはArduino
誂向きにUSBガジェットとして機能するmicroがあるので、チョイチョイとコントローラを作る事ができます。

実際のところ

部品

本体は、前述の通りArduino micro
Arduino - ArduinoBoardMicro

ボタンには格ゲーファンにはお馴染みの三和電子さんを採用。
三角形の奴と
三和電子 OBSF-24TR-G ハメ込み式押しボタン三角 緑
丸ボタン
三和電子 OBSFS-30K/MB 【静音】30φゲームSW 黒ボディマットブルー
信号側はArduinoのデジタルピンに、グランド側は1kΩの抵抗を噛ませてからgndにつなぐだけの超簡単実装です。

詳しい回路図は後日……

箱は千石電商で合う奴を買って*1、ピンバイスとヤスリで穴あけて……こんな感じで組みあがりました。
f:id:shuzo_kino:20160410213344j:plain


スクリプト

スクリプトは以下の通り。

#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:ボタンにそれなりの高さがあるので、選択肢は多くはないです。手持ち測定機くらいになっちゃいます