目次
本記事で使用するもの
記事を見て、気に入ったものがあれば、是非チェックをしてみてください。
Arduino Microについて
本サイトで、「Arduino Micro」を扱うのは、今回が初めてなので、まずは「Arduino Micro」について、最も基本的なArduinoボードである「Arduino Uno R3」と比較しながら、紹介をしたいと思います。
大きさ
「Arduino Micro」の大きさは、長さ48[mm]、幅18[mm]となっており、「Arduino Uno R3」と比べると、非常にコンパクトです。
形状
「Arduino Uno R3」の入出力ピンはメス型となっているため、オス型のピンを差し込んで、回路を作成します。
それに対して、「Arduino Micro」の入出力ピンの形状はオス型になっており、ブレッドボードやメス型のピンに差し込んで回路を作成します。
PCと通信を行うためのUSBコネクタの形状も「Arduino Uno R3」と異なっており、MicroBと呼ばれる形状のものになっています。
機能
「Arduino Micro」の基本的な使い方は、「Arduino Uno R3」と同じで、スケッチを書き込むことによって、ピンの入出力を制御し、外部の部品を動かしたり、データを読み取ったりすることができます。
それに加えて、「Arduino Micro」は、デフォルトの状態で、HID(Human Interface Device)として利用することが可能となっており、キーボードやマウスで行っているようなコントロールを簡単に行うことができます。
今回の記事では、上記の特性を活かし、キーボードが行っているような入力を、「Arduino Micro」とタクトスイッチを利用することによって行いたいと思います。
スイッチを押して文字を入力する
まずは、スイッチを押したら、指定した文字を入力するといったことを行いたいと思います。
空のスケッチを書き込む
最初に、空のスケッチを書き込むことで、しっかり書き込みができるかどうかの確認をしつつ、回路作成時の安全を確保したいと思います。
まず、「Arduino Micro」とPCを以下の画像のように接続します。
すると、ボードの裏側にあるLEDが点灯します。
この時点で、LEDが点灯していない場合は、USBケーブルがしっかりと接続されているか、確認してみてください。
次に、「Arduino IDE」を開き、空のスケッチ(「ファイル」タブの「New Sketch」をクリックしたときに出てくる何の処理も書かれていないスケッチ)を書き込みます。
このとき、ボードの選択欄は「Arduino Micro」を選択します。
ボードが認識されない場合は、接続がしっかり行われているか、ケーブルが充電専用のものではないかなど確認を行ってみてください。
書き込んだ際、以下のようなオレンジ色の文が、出力画面に表示されますが、エラーではないため問題ありません。
回路を作成する
上記の書き込みができましたら、回路の作成をします。
今回は小さめのブレッドボードと背の低いジャンパーワイヤーを使用することで、回路をコンパクトにしてみました。
部品の大まかな種類と繋がり方さえ同じであれば、同じように動作するため、以下のように大きめのブレッドボードを使ったり、ジャンパーワイヤーの種類や経路が異なっていても問題ありません。
スケッチを書き込む
回路の作成が終わりましたら、以下のようなスケッチを書き込んでください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
/* ArduinoMicroで操作(1,キー入力); 2024/06/27 keyboard_test スケッチの詳細はこちら↓ https://mecha-norimaki.com/arduino_micro_01/ 2024/02/11 定数の名前を変更しました。 2024/03/22 入力ピンの設定をする際に記述したfor文の条件内に必要のない()があったため削除しました。 2024/06/27 コメントを編集しました。 */ //ライブラリの読みこみ #include <Keyboard.h> //キー入力を行うスイッチに繋がっているピンを指定 const int keySwitches[] = { 2, 3, 4 }; //USBを繋げた瞬間暴走してしまうような状態を止めるためのピンを指定 const int pausePin = 13; void setup() { //pausePinに指定したピンを入力ピンとして設定(デフォルト設定なので省略しても良い) pinMode(pausePin, INPUT); //pausePinに指定したピンがHIGHのとき空の文を無限に行い以降の文を実行しないようにする while (digitalRead(pausePin)) {} //キー入力を行うスイッチに繋がっているピンをプルアップ付きの入力ピンとして設定する for (int i = 0; i < sizeof(keySwitches) / sizeof(keySwitches[0]); i++) { pinMode(keySwitches[i], INPUT_PULLUP); } //キーボードとして利用するための初期設定 Keyboard.begin(); } void loop() { //keySwitches[0]のスイッチが押されたら、「aキー」が押されているという情報を送り、離されたらその情報を取り消す if (!digitalRead(keySwitches[0])) { Keyboard.press('a'); } else { Keyboard.release('a'); } //keySwitches[1]のスイッチが押されたら「shiftキー」と「aキー」が押されているという情報を一瞬だけ送り、その後200[ms]待機する if (!digitalRead(keySwitches[1])) { Keyboard.write('A'); delay(200); } //keySwitches[2]のスイッチが押されたら「Apple」となるようにキー入力の情報を送り、その後200[ms]待機する if (!digitalRead(keySwitches[2])) { Keyboard.print("Apple"); delay(200); } } |
スケッチを書き込んだ後に、キーボードの入力が勝手に行われる場合は、USBケーブルを抜いてください。
その後、回路とスケッチが間違っていないかの確認を行います。
間違って書き込んだスケッチによる操作により、修正したスケッチの書き込みが困難な場合は対策を次の節である「スケッチの解説」にて説明していますので、先にそちらをご覧ください。
回路とスケッチが正しい場合、押したスイッチに応じて文字の入力が行われます。
以下に入力できる欄を作ったので、試しにキー入力を行ってみてください。
入力される文字は、入力モード(半角英数字やひらがな入力など)の影響を受けます。
「a」、「A」、「Apple」と入力したい場合は、入力モードを半角英数字にします。
スイッチを押したのに入力が行われない場合は、回路とスケッチが間違っていないか確認をしてみてください。
スケッチの解説
暴走を止めるための文
今回のスケッチは、単純な文字入力のみなので、スケッチが書き込めない状態になるほど、暴走することはないと思いますが、対策をするための処理を行っているので、それについて説明をしたいと思います。
まず、スケッチの初めにある以下の文で、「pausePin」という定数を用意して暴走を止めるためのピンの番号を格納しています。
20 21 |
//USBを繋げた瞬間暴走してしまうような状態を止めるためのピンを指定 const int pausePin = 13; |
次に、「void setup()」の中にある、以下の文で「pausePin」に指定したピンを入力ピンとして設定しています。
25 26 |
//pausePinに指定したピンを入力ピンとして設定(デフォルト設定なので省略しても良い) pinMode(pausePin, INPUT); |
ここまでは、よくある入力ピンの初期設定です。
続いて、「void setup()」の中で以下のような文を記述しています。
28 29 |
//pausePinに指定したピンがHIGHのとき空の文を無限に行い以降の文を実行しないようにする while (digitalRead(pausePin)) {} |
while()文というのは、( )内がtrueの場合、{ }内の処理を繰り返し行う文です。
今回は、( )内に「digitalRead(pausePin)」と記述しているので、「pausePin」に指定したピンが、「HIGH」のとき、繰り返しの処理が行われます。
そして、今回繰り返しの処理は、空になっており、何も行わないという処理を繰り返すことになります。
これにより、「pausePin」で指定した番号のピンが「HIGH」のとき、ずっと何も行わない処理を繰り返すため、以降の文に暴走させてしまう原因となる文があったとしても、それが実行されなくなるということになります。
上記の文が正しく書き込めていれば、PCとの接続前に「pausePin」に指定したピン(上記の場合だと13番ピン)と5Vピンを接続することで、暴走を止めることができます。
スケッチが間違っていて、上記の方法が機能しない場合は、リセットボタンを使うことによって、暴走を止めてスケッチを書き込むことができます。
ただし、結構コツがいるため、何度か挑戦する必要があるかもしれません。
以下に、その方法を書いておきます。
まず、新規スケッチを作成し、空のスケッチを用意します。
その後、リセットボタンを押しっぱなしにした状態でPCと接続し、ボードの選択欄を開きます。
ここから先は、スピード勝負になるため、一通り方法を読んでから実行してください。
上記の状態からリセットボタンを離すと、「Arduino Micro」が認識されるため、追加されたボードを選択して、書き込みを実行し、もう一度リセットボタンを押しっぱなしにします。
ここで、追加されたボードが「Arduino Micro」になっていない場合は、右下にあるアイコンをクリックすると、「Arduino Micro」として認識されるはずです。
「Arduino Micro」はリセットボタンを離してから、8秒後に処理を開始するため、上記の動作は8秒以内に行う必要があります。
書き込みを実行すると、コンパイルが行われて、その後、書き込みが行われます。
上記の書き込み実行の後、コンパイル完了のポップアップが、右下に表示されたら、リセットボタンを離します。
上手くいけば、これで空のスケッチが書き込まれるため、暴走を止めることができます。
キー入力を行うための初期設定
Arduinoをキーボードとして、扱うためのライブラリが、標準ライブラリとして存在するため、それを利用します。
まず、スケッチの初めにある以下の文により、「Keyboardライブラリ」を読み込みます。
14 15 |
//ライブラリの読みこみ #include <Keyboard.h> |
続いて、「void setup()」の中にある以下の文により、キーボードの初期設定を行います。
36 37 |
//キーボードとして利用するための初期設定 Keyboard.begin(); |
「Keyboard.begin()」は( )内に、特定の文を記述することによって、キーボードの種類を指定することができます。
以下に、( )内に記述する文と対応するキーボードの種類の表を示します。
記述する文 | キーボードの種類 |
KeyboardLayout_de_DE | ドイツ用 |
KeyboardLayout_en_US | アメリカ用 |
KeyboardLayout_es_ES | スペイン用 |
KeyboardLayout_fr_FR | フランス用 |
KeyboardLayout_it_IT | イタリア用 |
KeyboardLayout_sv_SE | スウェーデン用 |
KeyboardLayout_da_DK | デンマーク用 |
今回のように、( )内が空の場合は、アメリカ用のキーボード(USキーボード)として働きます。
表を見ていただくと分かるように、日本用のキーボード(JISキーボード)は、残念ながら用意されていません。
よって、今回は英数字の配列が、日本用のキーボード(JISキーボード)と同じであり、日本でも多く使用されているアメリカ用のキーボード(USキーボード)として設定をおこなっています。
スイッチを扱うための初期設定
今回はスイッチが、押されたら文字を入力するといったことを行うため、スイッチを扱うための設定も行っています。
まず、スケッチの初めにある以下の文により、キー入力を行うスイッチに繋がっているピンの番号を配列としてまとめています。
17 18 |
//キー入力を行うスイッチに繋がっているピンを指定 const int keySwitches[] = { 2, 3, 4 }; |
続いて、「void setup()」の中で以下のような文を記述しています。
31 32 33 34 |
//キー入力を行うスイッチに繋がっているピンをプルアップ付きの入力ピンとして設定する for (int i = 0; i < (sizeof(keySwitches) / sizeof(keySwitches[0])); i++) { pinMode(keySwitches[i], INPUT_PULLUP); } |
ここで出てくる「sizeof()」という関数は、( )内に記述したデータのサイズをバイト単位で返します。
上記の文の場合、「sizeof(keySwitches[0])」は、int型の変数1個分のサイズである「2」という数値を返し、「sizeof(keySwitches)」はint型の変数3個分のサイズである「6」という値を返します。
ここで、配列全体のサイズと配列のデータ1個分のサイズが分かれば、配列にいくつの要素が入っているか計算することができます。
そこで今回のスケッチでは、上記の計算により配列の要素数を確認し、さらに「for文」で要素の数だけ処理を繰り返すことにより、配列にまとめた番号のピンをすべてプルアップ付きの入力ピンとして設定しています。
タクトスイッチやプルアップ付きの入力ピンについて、良く分からないという方は、以下の記事で説明していますので、是非、ご覧になってください。
文字の入力を行う処理
文字を入力するための関数は、いくつかあるので、順番に説明していきたいと思います。
まず、「void loop()」の中で、以下のような文が記述されています。
42 43 44 45 46 47 |
//keySwitches[0]のスイッチが押されたら、「aキー」が押されているという情報を送り、離されたらその情報を取り消す if (!digitalRead(keySwitches[0])) { Keyboard.press('a'); } else { Keyboard.release('a'); } |
ここで、「Keyboard.press()」は、( )内で指定した文字のキーが押されているという情報を送ります。
送られるのは、どのキーが押されているかという情報なので、同じ「Keyboard.press(’a’)」という処理でも、入力モードによっては、「a」以外に「あ」や「ち」と入力される場合があります。
ここで指定した文字は、大文字、小文字を区別し「’A’」のように大文字の場合は、「shiftキー」と「aキー」が同時に押されているという情報を送ります。
記号についても入力可能ですが、PCのキーボード設定を、日本語キーボード(106/109)と設定している場合、一部の記号が正しく入力されません。
続いて、「Keyboard.release()」は、指定した文字のキーが押されているという情報を取り消します。
実は、「Keyboard.press()」で指定された文字のキーは、ずっと押されっぱなしの状態であると認識されます。
「Keyboard.release()」は、指定した文字のキーを離したと認識させることができるため、「Keyboard.press()」と合わせて使用されます。
また、「Keyboard.press()」を実行してから、「Keyboard.release()」を実行するまでの時間を空けることによって、長押しをしているような動作をさせることもできます。
今回のスケッチでは、「keySwitches[0]」のスイッチが押されたら、「aキー」が押されているという情報を送り、離されたらその情報を取り消しています。
これにより、「keySwitches[0]」のスイッチが、キーボードの「aキー」と同じような働きをするようになります。
次に、「void loop()」の中で、以下のような文が記述されています。
49 50 51 52 53 |
//keySwitches[1]のスイッチが押されたら「shiftキー」と「aキー」が押されているという情報を一瞬だけ送り、その後200[ms]待機する if (!digitalRead(keySwitches[1])) { Keyboard.write('A'); delay(200); } |
ここで、記述されている「Keyboard.write()」は、指定した文字のキーが押されているという情報を一瞬だけ送ります。
「Keyboard.press()」と「Keyboard.release()」を、ひとまとめにしたような関数で、キーボードのキーを押してすぐ離すのと同じような情報を送ることができます。
今回のスケッチでは、keySwitches[1]のスイッチが押されたら「shiftキー」と「aキー」が押されているという情報を一瞬だけ送り、その後200[ms]待機するということを行っています。
ここで、keySwitches[1]のスイッチを長押しした場合は、先程の「keySwitches[0]」のスイッチと異なり、200[ms]の間隔でキーが連打されているような入力になります。
最後に、「void loop()」の中で、以下のような文が記述されています。
55 56 57 58 59 |
//keySwitches[2]のスイッチが押されたら「Apple」となるようにキー入力の情報を送り、その後200[ms]待機する if (!digitalRead(keySwitches[2])) { Keyboard.print("Apple"); delay(200); } |
ここで、記述されている「Keyboard.print()」は、指定した文字列になるようにキー入力の情報を送ります。
この関数も送られるのは、どのキーが押されているかという情報なので、同じ「Keyboard.print(“Apple”)」という処理でも、入力モードによっては、「Apple」以外に「ちせせりい」と入力される場合があります。
今回のスケッチでは、「keySwitches[2]」のスイッチが押されたら「Apple」となるようにキー入力の情報を送り、その後200[ms]待機するということを行っています。
文字列をいっぺんに入力できるため便利ですが、入力速度の調整を行うことができず、環境によっては上手く入力の処理が行えないことがあります。
私の環境では、メモ帳で上記の処理を行うと、入力の処理が上手くいかずに、文字が途中で途切れてしまうようなことが起こりました。
入力速度を調整して、文字列を出力するということについては、次回の記事で行いたいと思います。
文字以外の入力を行う
続いて、「backspace」や「ctrl」キーなど文字以外のキー入力を行いたいと思います。
スケッチを書き込む
回路はそのままで以下のようなスケッチを書き込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
/* ArduinoMicroで操作(1,キー入力); 2024/06/27 keyboard_test_2 スケッチの詳細はこちら↓ https://mecha-norimaki.com/arduino_micro_01/ 2024/02/11 定数の名前を変更しました。 2024/03/22 入力ピンの設定をする際に記述したfor文の条件内に必要のない()があったため削除しました。 2024/06/27 チャタリング対策のため「while (!digitalRead(keySwitches[~])) {}」の後にdelay(200)を追加しました。 2024/06/27 コメントを編集しました。 */ //ライブラリの読みこみ #include <Keyboard.h> //キー入力を行うスイッチに繋がっているピンを指定 const int keySwitches[] = { 2, 3, 4 }; //USBを繋げた瞬間暴走してしまうような状態を止めるためのピンを指定 const int pausePin = 13; void setup() { //pausePinに指定したピンを入力ピンとして設定(デフォルト設定なので省略しても良い) pinMode(pausePin, INPUT); //pausePinに指定したピンがHIGHのとき空の文を無限に行い以降の文を実行しないようにする while (digitalRead(pausePin)) {} //キー入力を行うスイッチに繋がっているピンをプルアップ付きの入力ピンとして設定する for (int i = 0; i < sizeof(keySwitches) / sizeof(keySwitches[0]); i++) { pinMode(keySwitches[i], INPUT_PULLUP); } //キーボードとして利用するための初期設定 Keyboard.begin(); } void loop() { //keySwitches[0]のスイッチが押されたら「backspaceキー」が押されているという情報を送り、離されたらその情報を取り消す if (!digitalRead(keySwitches[0])) { Keyboard.press(KEY_BACKSPACE); } else { Keyboard.release(KEY_BACKSPACE); } //keySwitches[1]のスイッチが押されたら「ctrl+z」を入力する if (!digitalRead(keySwitches[1])) { Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('z'); delay(100); Keyboard.releaseAll(); while (!digitalRead(keySwitches[1])) {} delay(200); } //keySwitches[2]のスイッチが押されたら行の選択を行う if (!digitalRead(keySwitches[2])) { Keyboard.write(KEY_HOME); delay(100); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press(KEY_END); delay(100); Keyboard.releaseAll(); while (!digitalRead(keySwitches[2])) {} delay(200); } } |
スケッチを書き込んだ後に、キーボードの入力が勝手に行われる場合は、USBケーブルを抜いてください。
その後、スケッチが間違っていないかの確認を行います。
先程と同様、USBに接続した瞬間暴走し、修正したスケッチの書き込みが困難な場合は、接続前に「pausePin」に指定したピン(上記の場合だと13番ピン)と5Vピンを接続することで、暴走を止めることができます。
回路とスケッチが正しい場合、押したスイッチに応じてキー入力が行われます。
以下に入力できる欄を作ったので、試しにキー入力を行ってみてください。
スケッチの解説
文字以外の入力を行う処理
「Keyboard.press()」、「Keyboard.release()」、「Keyboard.write()」の( )内に特定の文を記述すると、文字以外のキー入力を行うことができます。
以下に、( )内に記述する文と対応するキーの種類(Windows)の表を示します。
記述する文 | 入力されるキー |
KEY_LEFT_CTRL | ctrlキー(左) |
KEY_LEFT_SHIFT | shiftキー(左) |
KEY_LEFT_ALT | altキー(左) |
KEY_LEFT_GUI | Windowsキー(左) |
KEY_RIGHT_CTRL | ctrlキー(右) |
KEY_RIGHT_SHIFT | shiftキー(右) |
KEY_RIGHT_ALT | altキー(右) |
KEY_RIGHT_GUI | Windowsキー(右) |
記述する文 | 入力されるキー |
KEY_UP_ARROW | 上方向キー(↑) |
KEY_DOWN_ARROW | 下方向キー(↓) |
KEY_LEFT_ARROW | 左方向キー(←) |
KEY_RIGHT_ARROW | 右方向キー(→) |
KEY_BACKSPACE | backspaceキー |
KEY_TAB | tabキー |
KEY_RETURN | enterキー |
KEY_MENU | menuキー |
KEY_ESC | escキー |
KEY_INSERT | insertキー |
KEY_DELETE | deleteキー |
KEY_PAGE_UP | page upキー |
KEY_PAGE_DOWN | page downキー |
KEY_HOME | homeキー |
KEY_END | endキー |
KEY_CAPS_LOCK | caps lockキー |
KEY_PRINT_SCREEN | print screenキー |
KEY_SCROLL_LOCK | scroll lockキー |
KEY_PAUSE | pauseキー |
記述する文 | 入力されるキー |
KEY_NUM_LOCK | num lockキー |
KEY_KP_SLASH | /キー |
KEY_KP_ASTERISK | *キー |
KEY_KP_MINUS | -キー |
KEY_KP_PLUS | +キー |
KEY_KP_ENTER | enterキー |
KEY_RETURN | enterキー |
KEY_KP_1 | 1キー |
KEY_KP_2 | 2キー |
KEY_KP_3 | 3キー |
KEY_KP_4 | 4キー |
KEY_KP_5 | 5キー |
KEY_KP_6 | 6キー |
KEY_KP_7 | 7キー |
KEY_KP_8 | 8キー |
KEY_KP_9 | 9キー |
KEY_KP_0 | 0キー |
KEY_KP_DOT | .キー |
記述する文 | 入力されるキー |
KEY_F1 | F1キー |
KEY_F2 | F2キー |
KEY_F3 | F3キー |
KEY_F4 | F4キー |
KEY_F5 | F5キー |
KEY_F6 | F6キー |
KEY_F7 | F7キー |
KEY_F8 | F8キー |
KEY_F9 | F9キー |
KEY_F10 | F10キー |
KEY_F11 | F11キー |
KEY_F12 | F12キー |
KEY_F13 | F13キー |
KEY_F14 | F14キー |
KEY_F15 | F15キー |
KEY_F16 | F16キー |
KEY_F17 | F17キー |
KEY_F18 | F18キー |
KEY_F19 | F19キー |
KEY_F20 | F20キー |
KEY_F21 | F21キー |
KEY_F22 | F22キー |
KEY_F23 | F23キー |
KEY_F24 | F24キー |
今回のスケッチでは、以下のような文により、「keySwitches[0]」のスイッチが押されたら、「backspaceキー」が押されているという情報を送り、離されたらその情報を取り消すということを行っています。
43 44 45 46 47 48 |
//keySwitches[0]のスイッチが押されたら「backspaceキー」が押されているという情報を送り、離されたらその情報を取り消す if (!digitalRead(keySwitches[0])) { Keyboard.press(KEY_BACKSPACE); } else { Keyboard.release(KEY_BACKSPACE); } |
これにより、「keySwitches[0]」のスイッチが、キーボードの「backspaceキー」と同じような働きをするようになります。
同時押しを行う処理
「Keyboard.press()」は指定したキーを押しっぱなしにしていると認識されるため、複数のキーを同時に入力するときに役立ちます。
今回のスケッチでは、以下のような文により、keySwitches[1]のスイッチが押されたら「ctrl+z」を入力するということを行っています。
50 51 52 53 54 55 56 57 |
//keySwitches[1]のスイッチが押されたら「ctrl+z」を入力する if (!digitalRead(keySwitches[1])) { Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('z'); delay(100); Keyboard.releaseAll(); while (!digitalRead(keySwitches[1])) {} } |
ここで、「Keyboard.releaseAll()」は、すべてのキーに対して、押されているという情報を取り消します。
上記の文では、「Keyboard.press()」により、「ctrlキー」と「zキー」が押されているという情報を送った後、処理を待つために100[ms]だけ待機し、その後、すべてのキーに対して、押されているという情報を取り消しています。
これにより、「ctrlキー」と「zキー」が押されて、離されたと認識させることができます。
その後記述している「while文」では、スイッチが押されている間、空のループ処理を行い、長押しの際にもう一度入力が行われることや同時に他の処理が行われることを防いでいます。
また、最後の「delay(200)」はチャタリングにより、もう一度処理が行われてしまうことを防ぐために記述しています。
一連の入力を行う処理
単純なショートカットキーの入力だけでなく、一連の操作をするようなスケッチを書きこめば、キーボードでの入力よりも簡単かつ速く入力することができます。
今回のスケッチでは、以下のような文により、keySwitches[2]のスイッチが押されたら行の選択をするためのキー入力を行っています。
60 61 62 63 64 65 66 67 68 69 |
//keySwitches[2]のスイッチが押されたら行の選択を行う if (!digitalRead(keySwitches[2])) { Keyboard.write(KEY_HOME); delay(100); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press(KEY_END); delay(100); Keyboard.releaseAll(); while (!digitalRead(keySwitches[2])) {} } |
上記の文は、keySwitches[2]のスイッチが押されたら、「homeキー」で行の先頭にカーソルを移動させ、次に「shiftキー」と「endキー」により、選択をしながら行の末まで移動させるという処理を行っています。
上記のように、便利だけどキーボードで入力するのが少し面倒な処理もスイッチ1つで実行することができます。
また、もっと長い処理をすることも可能なため、簡単な作業であればスイッチを押すだけで自動化みたいなことも可能です。
終わりに
皆さん、うまくキー入力を行うことができたでしょうか。
Arduinoは、ロボットを動かしたり、センサから情報を受けとって処理をしたりするときに使われるイメージが強いと思いますが、「Arduino Micro」のようにHIDとして利用することができるArduinoボードであれば、今回のようにPCの操作を行うことにも利用できます。
今後はもう少し「Arduino Micro」を使った操作についての記事を書いていこうと思うので、ArduinoでPCなどの操作を行いたいという方は、引き続きサイトをご覧になってくれると嬉しいです。
次回の記事では、キー入力の速度を制御して、文を入力するといったことを行いたいと思います。
本記事はここまでです。ご清覧ありがとうございました。
広告
今回の主役である「Arduino Micro」です。
まだ持っていないという方は、この機会に是非購入を検討してみてください。
「Arduino Micro」とPCと接続するためのケーブルです。
MicroBタイプのUSBケーブルが無い場合は、合わせて購入を検討してみてください。
今回使用したカラフルなスイッチのセットです。
スイッチを色で判別したいときや見た目をカラフルしたいときにおすすめです。
今回使用したコンパクトなブレッドボードとジャンパーワイヤーのセットです。
コンパクトな回路を作成する際に役立ちます。
楽天モーションウィジェットとGoogleアドセンス広告です。
気になる商品がございましたら、チェックをしてみてください。