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