当前位置: 首页 > 文档资料 > Arduino 中文教程 >

Arduino - 鼠标按钮控制( Mouse Button Control)

优质
小牛编辑
125浏览
2023-12-01

使用鼠标库,您可以使用Arduino Leonardo,Micro或Due控制计算机的屏幕光标。

此特定示例使用五个按钮移动屏幕上的光标。 其中四个按钮是方向性的(向上,向下,向左,向右),一个用于鼠标左键单击。 Arduino的光标移动始终是相对的。 每次读取输入时,光标的位置都会相对于其当前位置进行更新。

每当按下一个方向按钮时,Arduino将移动鼠标,将HIGH输入映射到适当方向的5的范围。

第五个按钮用于控制鼠标左键单击。 释放按钮后,计算机将识别该事件。

组件的要求 (Components Required)

您将需要以下组件 -

  • 1 × Breadboard
  • 1×Arduino Leonardo,Micro或Due board
  • 5×10k欧姆电阻器
  • 5×瞬时按钮

过程 (Procedure)

按照电路图并连接面包板上的组件,如下图所示。

鼠标按钮面包板

草图 (Sketch)

在您的计算机上打开Arduino IDE软件。 用Arduino语言编码将控制你的电路。 单击“新建”打开新的草图文件。

对于此示例,您需要使用Arduino IDE 1.6.7

草图

Arduino代码 (Arduino Code)

/*
   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);
}

Code to Note

使用micro-USB线将电路板连接到计算机。 按钮连接到引脚2至6的数字输入。确保使用10k下拉电阻。