練習ボタンという名の一時停止専用機を作る

Youtube で一時停止ができるボタンが欲しいと思いまして。

というのも、私、Youtubeの某映像を見てセリフを書き起こしする事が多く、いちいちマウスをあてて一時停止をしたり、キーを押して停止する(意外とキーを見てしまう)のが試行を停止させるなぁと、常々思っていたわけです。

なので、手元に別出しのボタンがあり、一時停止中は点滅するような機材があれば・・・と思ってたのですが。これって、クイズの練習にも使えるのでは?と。
つまり、映像に合わせてボタンを押すと一時停止とランプが点滅する機材があれば、映像の中の解答者と対決ができるわけです。これは楽しい。

時々ですが、押しボタンだけ売って下さいという方もいらっしゃいます。そういう方にも新しいソリューションを提供できる可能性があるぞ、これは!

というわけで、作ってみることにしました。

一時停止に使えるボタン(ショートカットキー)が色々あるのですが、スペースキーだとフォーカスのあたる位置によって機能が変わるので、今回は「k」を使うことにします。つまり、ボタンを押すと「k」が入力されるキーボードを作るというわけ。(Youtubeとニコニコ動画が共通してkなのでという理由です)
で、できればランプも点滅させたいので、一回目のボタンで点滅、もう一度ボタンを押すと消灯とする様にしました。PC側からのフィードバックが無いので、一回目が停止か再生かはマウスなどで調整することにして、ボタンでは制御しません。

本体は手元に沢山ある早押しボタンを使います。この中にすべてを収める事にします。

USB経由でこれをキーボードとして認識させるには、2つの方法があるかなぁと

A:ワンボタンキーボード
最近とても流行っています。ここから買えます
1つだけのキーボードで色々な処理を登録できる。もちろん複数の文字列や複数のキー操作を、USB接続された1つのキーで操作できるという、面白いガジェット(というのか?)です。ただ、今回はランプを点灯させたいし、今後のいろんな展開を考えて、もう少し複雑な事ができる様にしておきたいと思いまして。

B:Arduino ProMicro
Arduino のラインナップの中で、PCなどとUSB接続した際に、HID(キーボード)として認識してくれるものがあります。その中からなるべく小さなPromini を使ってみたいと思います。(参考にした記事は以下になります)

Arduino Leonardo(Pro Micro)のHID(キーボード)機能を使う
Arduino Pro MicroにキーパッドをつなげてPCの入力装置に

【購入】
そもそもPromicro はSparkfan の互換機です。
https://www.switch-science.com/catalog/1623/

Amazonでもさらにこの互換機を売っています。5V版を購入しました。

【スケッチ】
サンプルを参考に、ボタンを押したら「k」が入力されて、ランプが点滅。もう一度ボタンを押したら「k」が入力されて、ランプが消灯されるという、簡単なスケッチを書きました。

#include <Keyboard.h>
#include <MsTimer2.h>

#define Button 9
#define Lamp 8

int a=0;
void flash() {
static boolean output = HIGH; // プログラム起動前に1回だけLOW(1)で初期化
digitalWrite(Lamp, output); // WIN番ピン(LED)に出力する
output = !output; // 現在のoutput内容を反転
}

void setup() {
Keyboard.begin();
pinMode(Button, INPUT_PULLUP);
digitalWrite(Lamp,LOW);
pinMode(Lamp, OUTPUT);
}

void loop() {
if((digitalRead(Button) == LOW) && (a==0)){
Keyboard.write('k');
a =1 ;
MsTimer2::set(200, flash); // 100ms毎にflash( )割込み関数を呼び出
MsTimer2::start(); // タイマー割り込み開始
delay(200);
while(digitalRead(Button) == LOW);
}
if((digitalRead(Button) == LOW) && (a!=0)){
Keyboard.write('k');
a =0 ;
MsTimer2::stop();
digitalWrite(Lamp,LOW);
delay(200);
while(digitalRead(Button) == LOW);
}}
【コンパイル】
ここがミソ。そもそも、互換機なのでボードの登録から始めなければならない・・・ということに気が付かず。
何回やっても、Keyboadが存在しません エラーが出て。Keyboard.hは含めているはずなのにという。

結論から言って、ボードをいつものクセでProMiniにしてたからなのですね。

互換機なので、ボードマネージャーにSparkfanのボードを追加しなければならないと知りまして。[ファイル]-[環境設定] から<設定タブ>で<追加のボードマネージャのURL>にhttps://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

を貼り付ける。※ 詳細参照

[ツール] - [ボード] - [ボードマネージャ] で Sparkfan AVR Boards を捜し、インストール

ProMicro が現れるので、これを選択。
5V版を選択することをお忘れなく。

で、めでたくコンパイルができるという。

かなり面倒な作業に四苦八苦しました。
必ずしも、この作業をせずともよいというのもありますが、
(MCU さえ合っていればスケッチの転送はできるので、例えば 5V / 3.3V いずれでも "Arduino Leonardo" を選んでスケッチをコンパイル&転送する事も可能)

今回はちゃんとした手順を踏んでみました。
前述のワンボタンキーボードの使い方も参考になるかと思います。
※ ワンボタンキーボードのスケッチを改造してランプ光らせるというのありなんですけどね・・・。

【筐体加工】

内部の配線がゴチャついてますが、ステレオコネクタを外さなかったからでして。実際は、GND 8番 9番 の3線しかつながってません。GNDが共通で、ボタン9番、ランプ8番。

microUSB typeB のコネクタは、簡単にもげやすいことで有名です。エポキシ系接着剤で固めないといけませんが、自分用なので今回はこれでよしとします。
基盤の固定はホットメルトで。

コネクタ口は平面にする場所が無いので、タテ向きにしました。手作業なのでナナメってますが、実用には問題なしと。ステレオコネクタが見えますが、使えません。

【接続】
つないだ動画はこちら。

あ、これ面白い! なんかいい!クイズをやらない私でも、ハマりそうな感じです。
マウスの位置に関係なく一時停止ができますし、しっかりボタンが押せるから、なかなか便利。
【販売??】
商品化したら面白いかなぁと思ってます。難しくないから通常在庫品として。でまあ、これをスマホにも繋がる様にするのが、次の目標です。まずは研究。価格的には2000+2000 くらいになるかと・・・。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です