Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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 int 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

old-stone
元SIer。今はSaaS企業勤めのピチピチ25歳 【使用言語】 仕事:Java(Spring), C#.NET 趣味:JS(React), Python3, Haskell 画像は妻が描いたイカ柴(イカした柴犬)です。
https://oldst.one
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした