Arduinoで独自のカスタムショートカットボタンを作成する

Arduinoで独自のカスタムショートカットボタンを作成する

謙虚なArduinoは多くのことを実行できますが、USBキーボードをエミュレートできることをご存知ですか?この簡単な回路で、覚えにくい長いキーボードショートカットを1つのカスタムショートカットキーに組み合わせることができます。最終結果は次のとおりです。





これまでArduinoを使用したことがありませんか?私たちをチェックしてください 入門ガイド 初め。





何が必要

このプロジェクトを作成するために必要なものは次のとおりです。





  • 1 x ArduinoProMicro。
  • モーメンタリボタンまたはキーボードボタン。
  • 10Kオームの抵抗器。
  • 各種フックアップワイヤー。
  • 1 x220オームの抵抗器。
  • 1 x 5mm(0.197インチ)LED。
  • 1 x 5mmLEDホルダー。

このプロジェクトには、非常に特殊なArduinoが必要になります。私は使用しています プロマイクロ 、非常に小型で安価なため、プロセッサ(Atmega32u4)にUSBシリアルが組み込まれたArduinoが必要です。このプロジェクトをUNOやNanoなどの他のArduinoで構築することは可能ですが、BIOSを再フラッシュし、物事を機能させるためにいじくり回すには多くのハードワークが必要です。他のArduinoモデルのクローンは通常はまったく機能しませんが、ProMicroクローンでも問題ありません。

OSOYOO Pro Micro ATmega32U4 5V / 16MHzモジュールボード、2列ピンヘッダー付きArduino用ATmega328 ProMiniに交換 アマゾンで今すぐ購入

使用するボタンごとに、1つのモーメンタリボタン、1つの10Kオーム抵抗、および適切なフックアップワイヤが必要になります。実際のショートカットボタンにはCherryMXメカニカルキーボードスイッチを使用していますが どれか スイッチが一時的でラッチされていない場合は、スイッチで問題ありません。



これを作成する方法によっては、他のいくつかのアイテムが必要になる場合があります。プロトタイプを作成する場合は、 はんだ不要のブレッドボード 。良いものにお金を使う価値があります-彼らは時々非常に信頼できないことがあります。これを箱に入れたい場合は、ストリップボードを購入することをお勧めします。

ビルドプラン

これがどのように機能するかを次に示します。 Arduinoは、USBキーボードのように動作するようにプログラムされます。コンピューターに関する限り、そうです。 Arduinoに接続されたいくつかのボタンは、キーコマンドをコンピューターに送信します。ボタンを1つ押すだけですが、コンピュータはあなたが押したと見なします すべての >> F4 、 例えば。





スイッチの選択

MXシリーズスイッチにはいくつかのバリエーションがあります。 このウェブサイト 優れた入門書を提供しますが、本質的にはノイズと圧力に帰着します。一部のモデルは押すのにより多くの力を必要とし、一部のモデルは押すと機械的な「カチッ」という音を出します。押しても音がしないチェリーMXブラウンを使用しました。それらはすべて同じ寸法なので、心配することなく好きなモデルを選択してください(または組み合わせてください)。

もちろん、いくつかのキーキャップも購入する必要があります。 カスタムデザイン そこから選択する-私たちはから購入しました 英国のKeyboardCo





ケース

私はこのケースを3D印刷しました、そしてあなたはダウンロードすることができます .STL からのファイル シンギバース 。 3Dプリンターを所有していなくても心配しないでください、それでもこれを構築することができます。多くのウェブサイトは、次のような3D印刷サービスを提供しています。 3Dハブ また シェイプウェイズ 。あるいは、これは非常に単純なケースであり、プラカード、パースペックス、木、さらには段ボールで自分で作ることもできます。あなたが本当に倹約したいのであれば、CherryMXはスイッチテスター/サンプラーセットを販売しています アマゾン (( イギリス )。 4つのM5x35mmボルトと4つのM5ナットが必要になります。もちろん、あなたが持っている適切な代替品の代わりにこれらを使用することができます。

Maxキーボードキーキャップ、Cherry MXスイッチ、テスターキット(9スイッチPro Samplerテスターキット) アマゾンで今すぐ購入

独自のケースを作成する場合は、知っておく必要のある重要な詳細が1つあります。CherryMXスイッチは、取り付け穴に押し込むことができます。 14 x 14mm(0.551インチ)の正方形の取り付け穴が必要で、プレートの厚さは1.5mm(0.059インチ)以下です。これらの寸法から離れすぎると、スイッチが正しく取り付けられなくなる可能性があります。

3Dプリントされたケースは、上部と下部の2つの部分に分かれています。 CherryMXスイッチを四角い穴に押し込みます。

スイッチが正しい方向に取り付けられていることを確認してください。上部には「CHERRY」の文字があり、下部には少しノッチがあります。この小さなスロットに3mmLEDを挿入します。

LEDが「逆さま」に取り付けられているように見える場合があります。これは私が使用したキーキャップの場合であり、スイッチにはまったく影響しません。

これで、9個のLEDを備えた9個のスイッチができました。これらの部品を接着する必要はありません。はんだがLEDを保持し、摩擦がスイッチを保持します。

次に、LEDマウントをねじ込みます(今のところLEDは取り外したままにしておきます)。回路が構築されたら、後でケースの組み立てを完了します。

サーキット

この回路はストリップボード上に構築されています。これは、プリント回路基板(PCB)のコストをかけずに、半永久的な回路を構築するのに最適です。これは、銅のトラックが一方向に平行に走っているグラスファイバーです。これらのトラックは、はんだ付けすることも、切断することもできます。トラックの切断は、特別なツールまたは小さなドリルビットを使用して行うことができます。

はんだ付けに自信がありませんか?最初にこれらの単純なプロジェクトを見てください。

ストリップボードのレイアウトは次のとおりです(後続のリード線を除く)。

抵抗器とArduinoの下のトレースを必ずカットしてください。 ストリップボード回路を読み取るのは非常に難しい場合があるため、ブレッドボードバージョンを次に示します。

すべてのコンポーネントをこのような小さなスペースに押し込むのはぴったりです。次のようにストリップボードの角を切り取ります。

これは、ケースの底にきちんと収まるはずです。

トラックが垂直に走っていることを確認してください。

アノードを接続します( 長い脚、ポジティブ )LEDを200オームの抵抗に接続し、次に+5 Vに接続します。カソード( ショートレッグ、ネガティブ )接地する。脚を熱収縮スリーブで覆い、LEDホルダーに押し込みます。接着剤は必要ありませんが、LEDホルダーが押し込み式ではない可能性があるため、これらの手順を調整する必要がある場合があります。

代わりに、ここで2色のLEDを使用することをお勧めします。これにより、2つ以上のスイッチのバンクをセットアップし、バンクごとに異なる色のステータスLEDを使用できます。

次に、キーキャップのすべてのLEDをはんだ付けします。これらはキーを光らせるためだけに使用されるため、必要に応じてスキップできます。デジタルピンに接続する必要はなく、電源のみを接続する必要があります。すべてのアノードを一緒に接続し、すべてのカソードを一緒に接続します。私の過ちから学びましょう-スイッチを配線する前にこれを行う方がはるかに簡単です!アノードを220オームの抵抗を介して+ 5Vに接続し、カソードをアースに接続します。これらのLEDは並列に配線されています。これらのLED専用の回路は次のとおりです。

LEDとArduinoの間の接続をカバーするために、熱収縮チューブの小片を使用します。

Arduinoの電源を入れて、すべてのLEDが機能することをテストします。コードをアップロードする必要はありません。 LEDが機能していない場合は、配線を再確認してください。

次に、スイッチを配線します。これらは10k抵抗を介して接続する必要があります。そうしないと、Arduinoが死んでしまいます。これはデッドショートと呼ばれます-+ 5Vが直接地面に落ち、Arduinoの残りはすべて一吹きの煙になります(私を信じてください、私はすでに1つを殺したのであなたはそうする必要はありません)。 1つのスイッチの回路は次のとおりです。

この回路は、9つのスイッチすべてで同じです。スイッチをデジタルピン2〜10に接続し、それぞれに独自の10K抵抗をグランドに接続します。 Cherry MXスイッチのはんだ付けには注意してください。少し壊れやすいので、いくつかのピンが壊れていました。これらをさらにストリップボードに直接はんだ付けすることもできますが、トレーリングリードも適しています。

配線は以上です。 USBタイプBメスソケットを取り付けることをお勧めしますが、それらの小さなピンははんだ付けが非常に難しい場合があります。これをしたくない場合でも、心配しないでください。 ArduinoのMicroUSBコネクタは、シャーシの穴にきちんと収まります。さまざまなUSBタイプについて少し混乱している場合は、次のことを確認してください。 違いを理解する

最後に、回路が正しいことを再確認してください。ショートはArduinoを簡単に破壊する可能性があり、ストリップボードを使用して簡単に行うことができます。

コード

次に、回路が正しいことをテストします。続行する前にこれを行うことをお勧めします。そうすれば、できる限り今すぐ問題を修正できます。このテストコードをアップロードします(から正しいボードとポートを選択することを忘れないでください ツール >> ボードツール >> メニュー):

const int buttons[] = {2,3,4,5,6,7,8,9,10}; // array of all button pins
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
for(int i = 2; i <11; ++i) {
if(digitalRead(i) == HIGH) {
// software de-bounce improves accuracy
delay(10);
if(digitalRead(i) == HIGH) {
// check switches
Serial.print ('input');
Serial.println(i);
delay(250);
}
}
}
}

回路を変更した場合は、ピンを変更する必要があるかもしれません。

アップロードしたら、シリアルモニターを開きます( 右上 >> シリアルモニター )。 1つずつ、各ボタンを押します。シリアルモニターに、押したボタンの番号が表示されているはずです。 LEDの場合と同様に、コンピュータが電流を流しすぎると不平を言ったり、ボタンを押すとLEDが消えたりした場合は、すぐに切断してください。回路のどこかに短絡があり、回路が正しいことを再確認し、接続間に短絡がないことを確認してください。

すべてが機能している場合は、先に進んで回路をボックスに入れます。回路を所定の位置に保持するために接着剤を少し使用することをお勧めします(ただし、ワイヤーは私のものをうまく保持していました)。蓋もボルトで固定します。

Arduinoをキーボードのように見せることは非常に簡単です。 NanoまたはUNOを使用している場合は、Arduinoを使用して再プログラムします。 デバイスファームウェアの更新 (DFU)。これは通常、新しいファームウェアをArduinoにフラッシュするために使用されます。これを使用して、キーボードのように機能する新しいファームウェアでArduinoをフラッシュします。これは非常に複雑なタスクであるため、ここでは取り上げません。 NS ArduinoのWebサイト このための良いチュートリアルがあります。

Arduino Pro Microを使用すると、この手順が非常に簡単になります。 USBキーボードをエミュレートするために必要なロジックはすでにプロセッサに組み込まれているため、コードを書くのと同じくらい簡単です。

まず、キーを設定します。

int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};

これは、ボタンが接続されているすべてのピンを含む配列です。多かれ少なかれボタンを使用したり、別のピンを使用したりした場合は、ここで値を変更してください。

配列は、志を同じくするものを集めたものです。コンピューターはコードを最適化してコードにすばやくアクセスでき、コード作成プロセスを高速化します。

次に、すべてのピンを入力として初期化します。

void setup() {
// put your setup code here, to run once:
Keyboard.begin(); // setup keyboard
for (int i = 2; i <11; ++i) {
// initilize pins
pinMode(i, INPUT);
}
}

これは、アレイ内のすべてのピンが入力であることをArduinoに通知します。これを行うためにループが使用されるので、書くのではなく pinMode(2、INPUT) 9回、あなたはそれを一度だけ書く必要があります。これはまた呼び出します Keyboard.begin 。これにより、キーボードをエミュレートするために特別に設計された、Arduinoライブラリに組み込まれた関数がセットアップされます。

と呼ばれるメソッドを作成します readButton

boolean readButton(int pin) {
// check and debounce buttons
if (digitalRead(pin) == HIGH) {
delay(10);
if (digitalRead(pin) == HIGH) {
return true;
}
}
return false;
}

これはピンを取り、それが押されているかどうかをチェックします。それは単に戻ります NS また NS 。また、いくつかが含まれています ソフトウェアデバウンス -単純な遅延とその後のスイッチの再チェックにより、ボタンが実際に押されたことを確認します。

ここで、別のforループが内部で呼び出されます void loop()

void loop() {
// put your main code here, to run repeatedly:
for (int i = 2; i <11; ++i) {
// check buttons
if(readButton(i)) {
doAction(i);
}
}
}

繰り返しますが、これは配列内のすべての要素を調べて、押されているかどうかを確認します。それはと呼ばれることによってこれを行います readButton 以前に作成したメソッド。ボタンが押された場合、そのピン番号はと呼ばれる別のメソッドに渡されます doAction

void doAction(int pin) {
// perform tasks
switch (pin) {
case 2:
Keyboard.println('drive.google.com');
break;
case 3:
Keyboard.println('makeuseof.com');
break;
case 4:
// CMD + T (new tab, Chrome)
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('t');
delay(100);
Keyboard.releaseAll();
break;
case 5:
// your task here
break;
case 6:
// your task here
break;
case 7:
// your task here
break;
case 8:
// your task here
break;
case 9:
// your task here
break;
}
}

これは、を使用してピン番号をチェックします スイッチ 声明。 Switchステートメント(呼ばれることもあります スイッチケース )はに似ています もしも ただし、これらは1つのもの(この場合はピン番号)がいくつかの異なる結果の1つと等しいことを確認するのに役立ちます。基本的に、計算ははるかに高速です。

主なコンポーネントは、このswitchステートメント内にあります。 Keyboard.println すべてのキーを物理的に入力したかのように、コンピューターにテキストを書き込みます。 Keyboard.press 1つのキーを押し続けます。を使用してそれらを解放することを忘れないでください Keyboard.releaseAll 少し遅れて!

スイッチでnetflixを見ることができますか

完全なコードは次のとおりです。

int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
void setup() {
// put your setup code here, to run once:
Keyboard.begin(); // setup keyboard
for (int i = 2; i <11; ++i) {
// initilize pins
pinMode(i, INPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 2; i <11; ++i) {
// check buttons
if(readButton(i)) {
doAction(i);
}
}
}
boolean readButton(int pin) {
// check and debounce buttons
if (digitalRead(pin) == HIGH) {
delay(10);
if (digitalRead(pin) == HIGH) {
return true;
}
}
return false;
}
void doAction(int pin) {
// perform tasks
switch (pin) {
case 2:
Keyboard.println('drive.google.com');
break;
case 3:
Keyboard.println('makeuseof.com');
break;
case 4:
// CMD + T (new tab, Chrome)
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('t');
delay(100);
Keyboard.releaseAll();
break;
case 5:
// your task here
break;
case 6:
// your task here
break;
case 7:
// your task here
break;
case 8:
// your task here
break;
case 9:
// your task here
break;
}
}

すべての数字と文字のキーに加えて、Arduinoはと呼ばれる特別なキーのほとんどを押すことができます キーボードモディファイア 。これらは、キーボードショートカットを押す場合に特に便利です。 ArduinoのWebサイトには 役立つリスト

あとは、いくつかのショートカットを作成するだけです。これを次のような既存のショートカットにマップできます すべての + F4 (Windowsでプログラムを閉じる)または Cmd + NS (プログラムmacOSを終了します)。または、必ずお読みください 究極のキーボードショートカットガイド 、Windowsショートカットの作成方法、および すべてのChromebookショートカット 独自のショートカットの作成を開始します。

独自のショートカットボックスを作成しましたか?コメントで教えてください、私はいくつかの写真を見たいです!

私たちがお勧めし、議論するアイテムを気に入っていただければ幸いです。 MUOはアフィリエイトとスポンサーのパートナーシップを持っているので、私たちはあなたの購入のいくつかから収入の一部を受け取ります。これはあなたが支払う価格に影響を与えることはなく、私たちが最高の製品の推奨を提供するのに役立ちます。

共有 共有 つぶやき Eメール FBIがHiveランサムウェアに対して警告を発した理由は次のとおりです

FBIは、特に厄介なランサムウェアについて警告を発しました。これが、Hiveランサムウェアに特に注意する必要がある理由です。

次を読む
関連トピック
  • DIY
  • キーボード
  • キーボードショートカット
  • Arduino
著者について ジョーコバーン(136件の記事が公開されました)

Joeは、英国のリンカーン大学でコンピュータサイエンスを卒業しています。彼はプロのソフトウェア開発者であり、ドローンを飛ばしたり音楽を書いたりしていないときは、写真を撮ったりビデオを制作したりしていることがよくあります。

ジョーコバーンのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください
カテゴリ Diy