センサーの入力を検知してキーボード・マウス操作する(Arduinoならできる!) | 技プログ
Youtubeでも活動中

チャンネル登録してくれたら喜びます。
リンクはフリーです。共有・拡散は大歓迎!

このボタンで簡単にチャンネル登録!
PR
ご注意

本ブログには、アフィリエイトを用いた広告が掲載された記事が含まれる場合があります。

ご注意

本ブログには、アフィリエイトを用いた広告が掲載された記事が含まれる場合があります。

センサーの入力を検知してキーボード・マウス操作する(Arduinoならできる!)

touchsensoreyecatch

センサー類で何かを検知してLEDを光らせることや、

センサー類で検知してモーターを動かすなどはArduino(マイコン)であれば比較的簡単にできます。

ただし、キーボード操作やマウス操作などはちょっとクセがありますので、

今回ご紹介していきます。

ちなみに今回ご紹介するのは、

タッチセンサー触れたらキーボードで文字を入力する。」というものです。

この記事を読むことでわかること

自己紹介

東証一部上場企業でサラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

2022年5月に転職。現役バリバリの技術者です。
現在は超大手企業の新規事業分野で装置の研究・開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

PR

Arduino完結型だとどんなイメージ?

Arduino完結型は、パソコンを必要としないシステムで動作が完結するイメージです。

例えば、以前記事にしたタクトスイッチを使った実験などです。

この実験は、”タクトスイッチ”と”Arduino”と”LED”、最後に”5V電源”だけあれば動作します。

もちろんArduinoにスケッチと呼ばれるプログラミングコードを書き込むときは

パソコンが必要になりますが、一度書き込んでしまえば、内容はArduino本体に保持されて、

5V電源を投入するだけで勝手に動作します。マイコンの基本動作ですね。

今回やりたいことは、センサーからパソコンを操作することなので

ちょっと今までの内容とは異なります。

今回のテーマだとどんなイメージ?

今回は、パソコンの制御になるのですが、

イメージとしては「Arduinoを仮想キーボードと仮想マウスにする。」という感じです。

もちろんパソコンへの通信が必要になるので、基本はケーブルで「パソコンとArduinoは

つなぎっぱなし」になります。

自分で自作キーボードなんか作る人もいるくらいなので、

Arduinoはすでに情報がたくさんありますし、

なんなら標準で搭載されているライブラリにキーボードやマウス操作もありますので、

割と簡単に制御が可能です。

今回必要になるもの

  • Arduino Leonardまたはpro Micro
  • タッチセンサー
  • ブレッドボード(配線周り)

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だけキーボードやマウス操作できないのか?

というと、プロセッサの違いにあります。

この画像をよく見てください。

ProMicroのプロセッサ拡大図

プロセッサのところに、小さく名前が書いてあります。

このpro Microに書かれている32U4が肝です。

逆を言ってしまえば、32U4が搭載されているArduinoであれば

キーボードやマウス操作可能になります。

タッチセンサー

Arduinoが準備できたところで、センサーの紹介です。

センサーのセットか何かで手元にあったタッチセンサーです。

もちろんこのセンサーは、タクトスイッチでもいいですし、

トグルスイッチでも構いません

とりあえずArduino側にON/OFFを入力させられるものであればなんでもOK。

最悪5VをとりあえずdigitalPinにさしてもまあ何とかなります…

ブレッドボード(配線周り)

配線方法とArduinoに書き込むプログラムを紹介していきます。

センサーの配線周りは、きちんとご自分の持っているセンサーに合わせてくださいね。

Arduinoとセンサーの配線方法

わたしの手元にあったタッチセンサーは、

タッチ面を手前にし、ブレッドボードにさした状態で

左から順に、GND,VCC,SIGとなっていました。

その通り配線したのがこのような感じの配線図です。

センサーの信号線はpin5につなげています。

これでタッチセンサーが反応したら、Pin5がHighになる仕組みです。

タッチセンサーとArduinoの配線

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ではできない。というところが引っかかるポイントかと思いますが、

それ以外は意外とすんなりという感じですよね。

センサーで検知したタイミングでパソコン側に認識させる。というのは

なかなか需要がありそうですので今回記事にしてみました。

コメント

タイトルとURLをコピーしました