センサー類で何かを検知してLEDを光らせることや、
センサー類で検知してモーターを動かすなどはArduino(マイコン)であれば比較的簡単にできます。
ただし、キーボード操作やマウス操作などはちょっとクセがありますので、
今回ご紹介していきます。
ちなみに今回ご紹介するのは、
「タッチセンサーに触れたらキーボードで文字を入力する。」というものです。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
Arduino完結型だとどんなイメージ?
Arduino完結型は、パソコンを必要としないシステムで動作が完結するイメージです。
例えば、以前記事にしたタクトスイッチを使った実験などです。
この実験は、”タクトスイッチ”と”Arduino”と”LED”、最後に”5V電源”だけあれば動作します。
もちろんArduinoにスケッチと呼ばれるプログラミングコードを書き込むときは
パソコンが必要になりますが、一度書き込んでしまえば、内容はArduino本体に保持されて、
5V電源を投入するだけで勝手に動作します。マイコンの基本動作ですね。
今回やりたいことは、センサーからパソコンを操作することなので
ちょっと今までの内容とは異なります。
今回のテーマだとどんなイメージ?
今回は、パソコンの制御になるのですが、
イメージとしては「Arduinoを仮想キーボードと仮想マウスにする。」という感じです。
もちろんパソコンへの通信が必要になるので、基本はケーブルで「パソコンとArduinoは
つなぎっぱなし」になります。
自分で自作キーボードなんか作る人もいるくらいなので、
Arduinoはすでに情報がたくさんありますし、
なんなら標準で搭載されているライブラリにキーボードやマウス操作もありますので、
割と簡単に制御が可能です。
今回必要になるもの
Arduino LeonardまたはArduino pro Micro
ここはすごく重要です。
Arduinoならなんでもキーボードやマウス操作ができるわけではありません。
具体的な例を出すと、ArduinoUNOやArduino pro miniなどは
通常使用できません。(やりようはあるみたいですが、お手軽にはできないらしい。)
ですから、ちょっと遊んでみたい人はArduino Leonardか、Arduino pro Microを
購入してください。
↓Leonard(現在のamazonの価格をチェック!)
↓pro Micro(現在のamazonの価格をチェック!)
ちなみに、Arduino pro miniとArduino pro Microで見た目はほぼいっしょで、
Arduino pro miniだけキーボードやマウス操作できないのか?
というと、プロセッサの違いにあります。
この画像をよく見てください。
プロセッサのところに、小さく名前が書いてあります。
このpro Microに書かれている32U4が肝です。
逆を言ってしまえば、32U4が搭載されているArduinoであれば
キーボードやマウス操作可能になります。
タッチセンサー
Arduinoが準備できたところで、センサーの紹介です。
センサーのセットか何かで手元にあったタッチセンサーです。
もちろんこのセンサーは、タクトスイッチでもいいですし、
トグルスイッチでも構いません。
とりあえずArduino側にON/OFFを入力させられるものであればなんでもOK。
最悪5VをとりあえずdigitalPinにさしてもまあ何とかなります…
ブレッドボード(配線周り)
配線方法とArduinoに書き込むプログラムを紹介していきます。
センサーの配線周りは、きちんとご自分の持っているセンサーに合わせてくださいね。
Arduinoとセンサーの配線方法
わたしの手元にあったタッチセンサーは、
タッチ面を手前にし、ブレッドボードにさした状態で
左から順に、GND,VCC,SIGとなっていました。
その通り配線したのがこのような感じの配線図です。
センサーの信号線はpin5につなげています。
これでタッチセンサーが反応したら、Pin5がHighになる仕組みです。
Arduinoに書き込むスケッチ(プログラム)
それではArduinoでキーボード操作するためのスケッチ(プログラム)を紹介します。
先ほど配線のところでもお伝えしましたが、
わたしの場合はセンサーが接続されているのが5番pinなので5番pinを監視しています。
(※もちろん変更していただいても配線ごと変更すれば動きます。)
#include <Keyboard.h>;
const int sensorPin=5;
int counter=0;
void setup() {
Keyboard.begin();
pinMode(sensorPin,INPUT_PULLUP);
}
void loop() {
if(digitalRead(sensorPin)==LOW){
counter=0;
}
else{
if(counter==0){
counter++;
Keyboard.println("auchi!!");
Keyboard.write('\n');
delay(100);
}
}
}
しょっぱなに記述したKeyboard.hですが、
こちらは標準のライブラリなので、書けばとおります。
ここで通らない場合は、ライブラリを更新するか、もしくはArduinoが対応しているか
つまり、32U4のプロセッサを搭載しているか確認してください。
繰り返しになりますが、Arduino UNOなどはプロセッサが異なるのでそのまま使用できません。
書き込み時にエラーになります。
次に、定義しているcounterですが、
こちらはセンサー入力があった時に1回だけ検知するために使用します。
センサーに長い入力があった場合でも1回とするためですね。
人によってタッチする長さは異なるでしょうが、回数としては1回なので。
loopの中でのif文ですが、
こちらはタッチされた瞬間にキーボードで文字入力をし、
直後に改行動作をしています。
counterを1上げているのは、連続でキー操作されるのを防ぐためです。
また、センサーに出力がない場合は、counterを0にして初期化しています。
初期化することにより、センサーへの入力があった時に1回だけif文のTrueに入ります。
まとめ
今回はArduino pro microを使用して、キーボード操作をしてみました。
Arduino UNOではできない。というところが引っかかるポイントかと思いますが、
それ以外は意外とすんなりという感じですよね。
センサーで検知したタイミングでパソコン側に認識させる。というのは
なかなか需要がありそうですので今回記事にしてみました。
コメント