使用鼠标库,您可以使用Arduino Leonardo,Micro或Due来控制计算机的屏幕光标。
此特定示例使用五个按钮来移动屏幕上的光标。 四个按钮是定向的(上,下,左,右),一个是用于鼠标左键单击。 来自Arduino的光标移动总是相对的。 每次读取输入时,相对于其当前位置更新光标的位置。
每当按下一个方向按钮时,Arduino将移动鼠标,将HIGH输入映射到适当方向的范围5。
第五按钮用于控制来自鼠标的左击。 当按钮被释放时,计算机将识别事件。
必需的组件
您将需要以下组件 -
- 1 × Breadboard 面包板
- 1 × Arduino Leonardo, Micro 或 Due board
- 5 × 10k欧姆电阻
- 5 × momentary pushbuttons 瞬时按钮
程序
按照电路图并挂接面包板上的组件,如下图所示。

草图
在计算机上打开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);
- }
代码说明
使用micro-USB电缆将电路板连接到计算机。 这些按钮连接到引脚2至6的数字输入。确保使用10k下拉电阻。
转载本站内容时,请务必注明来自W3xue,违者必究。