Arduinoで遊ぶページ
Arduinoで遊んだ結果を残すページです
KeyboardAndMouseControl

はじめに

キーボード(シリアルポート)でマウスを制御し、デジタルピンに接続したボタンでキーボードをタイプします。

プログラム

定義等

 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
/*
  KeyboardAndMouseControl

  Controls the mouse from five pushbuttons on an Arduino Leonardo, Micro or Due.

  Hardware:
  - five pushbuttons attached to D2, D3, D4, D5, D6

  The mouse movement is always relative. This sketch reads four pushbuttons, and
  uses them to set the movement of the mouse.

  WARNING: When you use the Mouse.move() command, the Arduino takes over your
  mouse! Make sure you have control before you use the mouse commands.

  created 15 Mar 2012
  modified 27 Mar 2012
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/KeyboardAndMouseControl
*/

#include "Keyboard.h"
#include "Mouse.h"

// set pin numbers for the five buttons:
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;
 

ボタンを接続するデジタルピンを定義します。

setup()

34
35
36
37
38
39
40
41
42
43
44
45
46
void setup() { // initialize the buttons' inputs:
  pinMode(upButton, INPUT);
  pinMode(downButton, INPUT);
  pinMode(leftButton, INPUT);
  pinMode(rightButton, INPUT);
  pinMode(mouseButton, INPUT);

  Serial.begin(9600);
  // initialize mouse control:
  Mouse.begin();
  Keyboard.begin();
}
 

pinMode()で、upButtonとdownButton、leftButton、rightButton、mouseButtonを入力モードにします。

Serial.begin()でシリアルポートを初期化します。Arduino Leonardoでは、以下のコードを入れるのがより良いと思います。

1
  while (!Serial) ;

最後に、Mouse.begin()Keyboard.begin()で、マウスとキーボードの利用を開始します。

loop()

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
void loop() {
  // use serial input to control the mouse:
  if (Serial.available() > 0) {
    char inChar = Serial.read();

    switch (inChar) {
      case 'u':
        // move mouse up
        Mouse.move(0, -40);
        break;
      case 'd':
        // move mouse down
        Mouse.move(0, 40);
        break;
      case 'l':
        // move mouse left
        Mouse.move(-40, 0);
        break;
      case 'r':
        // move mouse right
        Mouse.move(40, 0);
        break;
      case 'm':
        // perform mouse left click
        Mouse.click(MOUSE_LEFT);
        break;
    }
  }

  // use the pushbuttons to control the keyboard:
  if (digitalRead(upButton) == HIGH) {
    Keyboard.write('u');
  }
  if (digitalRead(downButton) == HIGH) {
    Keyboard.write('d');
  }
  if (digitalRead(leftButton) == HIGH) {
    Keyboard.write('l');
  }
  if (digitalRead(rightButton) == HIGH) {
    Keyboard.write('r');
  }
  if (digitalRead(mouseButton) == HIGH) {
    Keyboard.write('m');
  }

}

Serial.available()で、シリアルポートにデータがあるかを確認します。データがあれば、Serial.read()で値を読み取り、読み取った値に応じて、Mouse.move()を使い、マウスを移動します。

digitalRead()でボタンを接続しているピンの値を読み取り、HIGHであればKeyboard.write()を使ってタイプします。

バージョン

Hardware:Arduino Leonardo/Arduino Micro/Arduino Due
Software:Arduino 1.8.13

最終更新日

June 19, 2020

inserted by FC2 system