読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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