Arduino 鼠標(biāo)按鈕控制

2018-11-21 11:01 更新

使用鼠標(biāo)庫,你可以使用Arduino Leonardo,Micro或Due來控制計算機的屏幕光標(biāo)。

這個特殊的例子使用五個按鈕來移動屏幕上的光標(biāo)。四個按鈕是方向性的(上,下,左,右),一個是用于鼠標(biāo)左鍵單擊。來自Arduino的光標(biāo)移動總是相對的。每次讀取輸入時,光標(biāo)的位置都會相對于當(dāng)前位置進行更新。

只要有一個方向按鈕被按下,Arduino就會移動鼠標(biāo),在合適的方向上將HIGH輸入映射到5的范圍。

第五個按鈕用于控制來自鼠標(biāo)的左鍵單擊。當(dāng)按鈕被釋放時,計算機將識別事件。

必需的組件

你將需要以下組件:

  • 1 × Breadboard 面包板
  • 1 × Arduino Leonardo, Micro 或 Due板
  • 5 × 10k歐姆電阻
  • 5 × 瞬時按鈕

程序

按照電路圖連接面包板上的組件,如下圖所示。

面包板上的組件

草圖

在計算機上打開Arduino IDE軟件。使用Arduino語言進行編碼控制你的電路。通過單擊“New”打開一個新的草圖文件。

對于本例,你需要使用Arduino IDE 1.6.7

Sketch

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的數(shù)字輸入。確保使用10k下拉電阻。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號