相關(guān)推薦
您可能對下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138544人學(xué)過

Arduino模擬USB鼠標(biāo)
發(fā)布時間:2022-03-11 09:34 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 3346

模擬鼠標(biāo)控制

下面將使用搖桿模塊和Arduino Leonardo模擬USB鼠標(biāo)。

遙桿模塊
搖桿模塊  由X/Y軸兩個10K電位器和一個輕觸按鍵組成。當(dāng)搖桿在不同位置時,X/Y軸對應(yīng)的電位器讀出的阻值也不同。

      

通常搖桿底部有一個可以按下的輕觸按鍵,本示例將使用這個自帶的按鍵來開啟模擬USB鼠標(biāo)功能。

搖桿內(nèi)部有兩個帶彈簧的可調(diào)電位器,當(dāng)搖動時,會帶動其中兩個電位器游標(biāo)觸點,從而改變阻值?梢酝ㄟ^analogRead()讀取兩個電位器的模擬值,計算出電位器游標(biāo)位置,從而判斷當(dāng)前搖桿在X/Y坐標(biāo)系中的位置。

搖桿模塊引腳情況如下表:

序號 標(biāo)號 說明
1 B 輕觸按鍵的一端,另一端接到GND(也可能有廠家接到VCC)
2 Y Y軸電位器游標(biāo)觸電對應(yīng)的引腳
3 X X軸電位器游標(biāo)觸電對應(yīng)的引腳
4 + VCC
5 - GND

示例程序代碼如下:

// 搖桿硬件定義
int enableButton = 7; // 搖桿按鍵,用作鼠標(biāo)功能使能按鍵
int upButton = 6;     // 上方按鍵,模擬滾輪向上
int downButton = 3;   // 下方按鍵,模擬滾輪向下
int leftButton = 5;   // 左按鍵,模擬鼠標(biāo)左鍵
int rightButton = 4;  // 右按鍵,模擬鼠標(biāo)右鍵
int xAxis = A1;       // 遙感X軸
int yAxis = A0;       // 遙感Y軸

int mouseSensitivity = 12; // 鼠標(biāo)靈敏度
int wheelSensitivity = 1;  // 滾輪靈敏度

boolean enable = false;               // 模擬鼠標(biāo)功能是否可用
boolean lastEnableButtonState = HIGH; // 上一次使能按鍵讀值

void setup() {
  // 初始化各個按鍵
  pinMode(enableButton, INPUT);
  pinMode(upButton, INPUT);
  pinMode(downButton, INPUT);
  pinMode(leftButton, INPUT);
  pinMode(rightButton, INPUT);
  // 開始控制鼠標(biāo)
  Mouse.begin();
}

void loop() {
  // 使能按鍵按一次使能,再按一次不使能
  boolean EnableButtonState = digitalRead(enableButton);
  if ((EnableButtonState == LOW) && (EnableButtonState != lastEnableButtonState)) {
    enable = !enable;
  }
  lastEnableButtonState = EnableButtonState;

  if (enable) {
    // 讀取鼠標(biāo)偏移值
    int x = readAxis(xAxis);
    int y = readAxis(yAxis);
    // 讀取鼠標(biāo)滾輪值
    int wheel = 0;
    if (digitalRead(upButton) == LOW) {
      wheel = wheelSensitivity;
    }
    else if (digitalRead(downButton) == LOW) {
      wheel = -wheelSensitivity;
    }
    // 移動鼠標(biāo)位置或滾輪
    Mouse.move(x, y, wheel);
    // 點擊鼠標(biāo)左右鍵
    isClickButton(leftButton, MOUSE_LEFT);
    isClickButton(rightButton, MOUSE_RIGHT);
    // 延時一段時間,可以通過該值調(diào)整鼠標(biāo)移動速度
    delay(10);
  }
}
// 讀取搖桿數(shù)據(jù)
// 即搖桿電位器的偏移量
int readAxis(int thisAxis) {
  int reading = analogRead(thisAxis);
  // 將讀出的模擬值,縮小到一定范圍
  reading = map(reading, 0, 1023, 0, mouseSensitivity);
  // 計算出一個鼠標(biāo)偏移量
  int distance = reading - (mouseSensitivity / 2);
  int threshold = mouseSensitivity / 4;
  // 如果電位器偏移量較小則不移動鼠標(biāo)
  if (abs(distance) < threshold) {
    distance = 0;
  }
  // 返回鼠標(biāo)偏移量
  return distance;
}
// 判斷按鍵是否被按下
void isClickButton(int Buttonpin, uint8_t Button) {
  if (digitalRead(Buttonpin) == LOW) {
    if (!Mouse.isPressed(Button)) {
      Mouse.press(Button);
    }
  }
  else if (Mouse.isPressed(Button)) {
    Mouse.release(Button);
  }
}

下載以上程序后,Leonardo會自動切換到USB模擬鼠標(biāo)模式,現(xiàn)在你可以試著用搖桿和按鍵來完成計算機鼠標(biāo)操作了。

Arduino視頻教程基礎(chǔ)篇
我要自學(xué)網(wǎng)商城 ¥40 元
進入購買
文章評論
0 條評論 按熱度排序 按時間排序 /350
添加表情
遵守中華人民共和國的各項道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138544人學(xué)過

分類選擇:
電腦辦公 平面設(shè)計 室內(nèi)設(shè)計 室外設(shè)計 機械設(shè)計 工業(yè)自動化 影視動畫 程序開發(fā) 網(wǎng)頁設(shè)計 會計課程 興趣成長 AIGC