ESP32同時模擬藍牙鼠標(biāo)與鍵盤,解決沖突
單獨使用藍牙鼠標(biāo)或者藍牙鍵盤都沒問題,但是如果將兩個代碼放一起就會發(fā)現(xiàn)只有后申明的設(shè)備會生效,這是由于每個庫在初始化的時候都重新定義了一遍藍牙,但是藍牙只有一個

解決辦法

將兩個獨立的庫文件合并
鼠標(biāo)庫需改成這樣:

鍵盤庫需改成這樣


庫文件網(wǎng)上一堆,不難找
安裝好庫文件后直接運行一下示例程序即可
#include <BleCombo.h>
void setup() {
? Serial.begin(115200);
? Serial.println("Starting work!");
? Keyboard.begin();
? Mouse.begin();
}
void loop() {
? if(Keyboard.isConnected()) {
? ? Serial.println("Sending 'Hello world'");
? ? Keyboard.println("Hello World");
? ? delay(1000);
? ? Serial.println("Sending Enter key...");
? ? Keyboard.write(KEY_RETURN);
//
//? ? delay(1000);
//??
//? ? Serial.println("Sending Play/Pause media key...");
//? ? Keyboard.write(KEY_MEDIA_PLAY_PAUSE);
? ? delay(1000);
//? ? Serial.println("Sending Ctrl+Alt+Delete...");
//? ? Keyboard.press(KEY_LEFT_CTRL);
//? ? Keyboard.press(KEY_LEFT_ALT);
//? ? Keyboard.press(KEY_DELETE);
//? ? delay(100);
//? ? Keyboard.releaseAll();
? ? unsigned long startTime;
? ? Serial.println("Move mouse pointer up");
? ? startTime = millis();
? ? while(millis()<startTime+1000) {
? ? ? Mouse.move(0,-1);
? ? ? delay(5);
? ? }
? ? Serial.println("Move mouse pointer left");
? ? startTime = millis();
? ? while(millis()<startTime+1000) {
? ? ? Mouse.move(-1,0);
? ? ? delay(5);
? ? }
? ? Serial.println("Move mouse pointer down");
? ? startTime = millis();
? ? while(millis()<startTime+1000) {
? ? ? Mouse.move(0,1);
? ? ? delay(5);
? ? }
? ? Serial.println("Move mouse pointer right");
? ? startTime = millis();
? ? while(millis()<startTime+1000) {
? ? ? Mouse.move(1,0);
? ? ? delay(5);
? ? }
? ??
? ? Serial.println("Scroll Down");
? ? Mouse.move(0,0,-1);
? ? Serial.println("Left click");
? ? Mouse.click(MOUSE_LEFT);
? ? delay(500);
? ? Serial.println("Right click");
? ? Mouse.click(MOUSE_RIGHT);
? ? delay(500);
? ? Serial.println("Scroll wheel click");
? ? Mouse.click(MOUSE_MIDDLE);
? ? delay(500);
? ? Serial.println("Back button click");
? ? Mouse.click(MOUSE_BACK);
? ? delay(500);
? ? Serial.println("Forward button click");
? ? Mouse.click(MOUSE_FORWARD);
? ? delay(500);
? ? Serial.println("Click left+right mouse button at the same time");
? ? Mouse.click(MOUSE_LEFT | MOUSE_RIGHT);
? ? delay(500);
? ? Serial.println("Click left+right mouse button and scroll wheel at the same time");
? ? Mouse.click(MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE);
? ? delay(500);
? }
??
? Serial.println("Waiting 2 seconds...");
? delay(2000);
}