Arduino-마우스 버튼 제어

마우스 라이브러리를 사용하면 Arduino Leonardo, Micro 또는 Due로 컴퓨터의 화면 커서를 제어 할 수 있습니다.

이 특정 예에서는 5 개의 푸시 버튼을 사용하여 화면 커서를 이동합니다. 4 개의 버튼은 방향 (위, 아래, 왼쪽, 오른쪽)이고 하나는 왼쪽 마우스 클릭 용입니다. Arduino의 커서 이동은 항상 상대적입니다. 입력을 읽을 때마다 커서의 위치가 현재 위치를 기준으로 업데이트됩니다.

방향 버튼 중 하나를 누를 때마다 Arduino는 마우스를 움직여 HIGH 입력을 적절한 방향으로 5 범위로 매핑합니다.

다섯 번째 버튼은 마우스 왼쪽 클릭을 제어하기위한 것입니다. 버튼에서 손을 떼면 컴퓨터가 이벤트를 인식합니다.

필요한 구성 요소

다음 구성 요소가 필요합니다-

  • 1 × 브레드 보드
  • 1 × Arduino Leonardo, Micro 또는 Due 보드
  • 5 × 10k ohm 저항
  • 5 × 순간 푸시 버튼

순서

회로도를 따르고 아래 이미지와 같이 브레드 보드의 구성 요소를 연결합니다.

스케치

컴퓨터에서 Arduino IDE 소프트웨어를 엽니 다. Arduino 언어로 코딩하면 회로가 제어됩니다. 새로 만들기를 클릭하여 새 스케치 파일을 엽니 다.

이 예에서는 Arduino IDE 1.6.7을 사용해야합니다.

Arduino 코드

/*
   Button Mouse Control
   For Leonardo and Due boards only .Controls the mouse from 
   five pushbuttons on an Arduino Leonardo, Micro or Due.
   Hardware:
   * 5 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.
*/

#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;
int range = 5; // output range of X or Y movement; affects movement speed
int responseDelay = 10; // response delay of the mouse, in ms

void setup() {
   // initialize the buttons' inputs:
   pinMode(upButton, INPUT);
   pinMode(downButton, INPUT);
   pinMode(leftButton, INPUT);
   pinMode(rightButton, INPUT);
   pinMode(mouseButton, INPUT);
   // initialize mouse control:
   Mouse.begin();
}

void loop() {
   // read the buttons:
   int upState = digitalRead(upButton);
   int downState = digitalRead(downButton);
   int rightState = digitalRead(rightButton);
   int leftState = digitalRead(leftButton);
   int clickState = digitalRead(mouseButton);
   // calculate the movement distance based on the button states:
   int xDistance = (leftState - rightState) * range;
   int yDistance = (upState - downState) * range;
   // if X or Y is non-zero, move:
   if ((xDistance != 0) || (yDistance != 0)) {
      Mouse.move(xDistance, yDistance, 0);
   }

   // if the mouse button is pressed:
   if (clickState == HIGH) {
      // if the mouse is not pressed, press it:
      if (!Mouse.isPressed(MOUSE_LEFT)) {
         Mouse.press(MOUSE_LEFT);
      }
   } else {                           // else the mouse button is not pressed:
      // if the mouse is pressed, release it:
      if (Mouse.isPressed(MOUSE_LEFT)) {
         Mouse.release(MOUSE_LEFT);
      }
   }
   // a delay so the mouse does not move too fast:
   delay(responseDelay);
}

참고할 코드

마이크로 USB 케이블을 사용하여 보드를 컴퓨터에 연결합니다. 버튼은 핀 2 ~ 6의 디지털 입력에 연결됩니다. 10k 풀다운 저항을 사용하는지 확인하십시오.