LoginSignup
10
6

More than 3 years have passed since last update.

【Arduino】一定時間毎にピクピク動いて、PCの画面ロックを防ぐ

Last updated at Posted at 2018-04-24

1. 概要

ArduinoLeonard互換機を使ってUSBマウスとして認識させ、
一定時間毎にピクピク動いて、PCの画面ロックを防いでみました。

1-1. 何故こんなことをしなくてはならないのか

普段、端末Aで設計書やらメールを見ながら、端末Bでコーディングしています。
なので基本的に端末Bをずっと触っているのですが、そのせいで操作されない端末Aが頻繁に画面ロックになり、とにかく解除がめんどくさい

ロック設定も変更できないし、訳あって自作アプリケーションも動かせない...
アプリケーションがダメなら最後は物理。というわけで作ってみました。

2. 作り方

2-1. 本体(ArduinoLeonardo互換機)

マウスをエミュレートする以上、HID(Human Interface Device)として認識される必要があるのですが、ATmega32U4を積んだArduinoなら簡単にできると書いてあったので、互換機を買ってみました。


(左:ArduinoLeonardo互換機 約1700円 右:併せて買ってしまったdigispark 約250円)

チップは違いますが、今回の用途だとコスパ的にもdigisparkのほうが良さそうですね。

2-2. スケッチ

前提条件として、ライブラリマネージャからMouseをインストールしておきます。

コードはほとんどやることないです。最低限こんなもんでどうでしょうか。

mover.ino
#include <Mouse.h>
#define LEDPIN 13

/** 移動させるピクセル */
const int MOVING_PIXEL = 1;
/** 待機時間(ms) */
const unsigned long WAITING_TIME = 299000; // 4分59秒

/**
 * 起動時処理
 */
void setup() {

  pinMode(LEDPIN, OUTPUT);
  Mouse.begin();

}

/**
 * 常駐処理
 */
void loop() {

  // マウスを移動
  Mouse.move(MOVING_PIXEL, 0, 0);
  delay(1);
  Mouse.move(-MOVING_PIXEL, 0, 0);

  // 必要に応じてLEDで通知
  // notify(100);

  // 待機
  delay(WAITING_TIME);

}

/**
 * 本体LEDで通知する
 * @param notifyingTime 通知時間(ms)
 */
void notify(int notifyingTime) {

  // LED ON
  digitalWrite(LEDPIN, HIGH);
  // 待機
  delay(notifyingTime);
  // LED OFF
  digitalWrite(LEDPIN, LOW);

}

現場で使うときはLチカするとまずいので、コメントアウトしておきました。
書き込み時はボードをArduino Leonardとしておくだけです。

※マウス・キーボードを操作できる仕様上、フェールセーフな作りにしておくべきだとは思います。今回はフェールセーフ(物理)でなんとかなるレベルなので割愛します。

Tips. 100均の融着テープが使える

さすがにむき出しだと怪しいので、こんな感じにDAISOの融着テープ使っています。サイズぴったり。

あとは挿して使うだけです。

3. 参考

DEKOのアヤシイおへや - https://ht-deko.com/arduino/leonardo.html

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6