《ESP32 學習筆記》 之 ESP32 模擬 藍牙鼠標-Mouse

1.簡介

上一篇介紹了 ESP32模擬藍牙鍵盤 的操作,那麼如何讓它模擬出一個鼠標呢~

2.硬件平臺

安信可 NODEMCU-32S 開發板:

3.軟件平臺

Arduino (1.8.10)     或     VScode 環境下 PlatformIO 插件

4.庫文件

4.1 ESP32_BLE_Arduino

ESP藍牙驅動庫,地址:https://github.com/nkolban/ESP32_BLE_Arduino

4.2 ESP32-BLE-Keyboard

ESP32鼠標模擬庫,依賴於ESP32_BLE_Arduino這個庫,地址:https://github.com/T-vK/ESP32-BLE-Mouse

5.示例程序

5.1 模擬鼠標按鍵測試

請注意:建議打開幾個網頁,在網頁中測試!網頁在前進/後退,右鍵菜單......

/**
 * 時間:2020/5/18
 * 作者:劉澤文
 * 功能:使用ESP32的藍牙功能模擬藍牙鼠標-按鍵操作
 */
#include <BleMouse.h>
#include <WiFi.h>

BleMouse bleMouse("ESP32藍牙鼠標","Espressif",100);//其中“ESP32藍牙鍵盤”爲鍵盤名稱;"Espressif"爲製造商

void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");
  bleMouse.begin();
}

void loop() {
  if(bleMouse.isConnected()) {
    Serial.println("左鍵點擊");
    bleMouse.click(MOUSE_LEFT);
    delay(500);

    Serial.println("右鍵單擊");
    bleMouse.click(MOUSE_RIGHT);
    delay(500);

    Serial.println("滾輪點擊");
    bleMouse.click(MOUSE_MIDDLE);
    delay(500);

    Serial.println("後退按鈕點擊");
    bleMouse.click(MOUSE_BACK);
    delay(500);

    Serial.println("前進按鈕點擊");
    bleMouse.click(MOUSE_FORWARD);
    delay(500);

    Serial.println("同時單擊鼠標左鍵和鼠標右鍵");
    bleMouse.click(MOUSE_LEFT | MOUSE_RIGHT);
    delay(500);

    Serial.println("同時單擊鼠標左鍵+鼠標右鍵和滾輪");
    bleMouse.click(MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE);
    delay(500);

  }
}

5.2 模擬鼠標移動/滾輪滾動

測試代碼時,請將鼠標光標放在你的代碼上!你將會看到你的代碼在上下翻滾,鼠標光標在畫正方形。

/**
 * 時間:2020/5/18
 * 作者:劉澤文
 * 功能:使用ESP32的藍牙功能模擬藍牙鼠標-鼠標-滾輪
 */
#include <BleMouse.h>
#include <WiFi.h>

BleMouse bleMouse("ESP32藍牙鼠標","Espressif",100);//其中“ESP32藍牙鍵盤”爲鍵盤名稱;"Espressif"爲製造商

void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");
  bleMouse.begin();
}

void loop() {
  if(bleMouse.isConnected()) {

    unsigned long startTime;

    Serial.println("向上滾動");
    startTime = millis();
    while(millis()<startTime+2000) {
      bleMouse.move(0,0,1);
      delay(100);
    }
    delay(500);

    Serial.println("向下滾動");
    startTime = millis();
    while(millis()<startTime+2000) {
      bleMouse.move(0,0,-1);
      delay(100);
    }
    delay(500);

    Serial.println("向左滾動");
    startTime = millis();
    while(millis()<startTime+2000) {
      bleMouse.move(0,0,0,-1);
      delay(100);
    }
    delay(500);

    Serial.println("向右滾動");
    startTime = millis();
    while(millis()<startTime+2000) {
      bleMouse.move(0,0,0,1);
      delay(100);
    }
    delay(500);

    Serial.println("向上移動鼠標指針");
    startTime = millis();
    while(millis()<startTime+2000) {
      bleMouse.move(0,-1);
      delay(20);
    }
    delay(500);

    Serial.println("下移鼠標指針");
    startTime = millis();
    while(millis()<startTime+2000) {
      bleMouse.move(0,1);
      delay(20);
    }
    delay(500);

    Serial.println("左移鼠標指針");
    startTime = millis();
    while(millis()<startTime+2000) {
      bleMouse.move(-1,0);
      delay(20);
    }
    delay(500);

    Serial.println("向右移動鼠標指針");
    startTime = millis();
    while(millis()<startTime+2000) {
      bleMouse.move(1,0);
      delay(20);
    }
    delay(500);

  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章