最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

手把手教學(xué): 鍵鼠 有線/適配器 改無線(藍(lán)牙/WiFi), 普通鍵鼠改鼠標(biāo)宏

2023-02-25 22:27 作者:璃月五星  | 我要投稿

一: 需要準(zhǔn)備的材料/設(shè)備/環(huán)境:

???1.arduino1.8以上 (最好是1.8,因?yàn)?.0我沒用過)

arduino1.8

???2.?esp32帶藍(lán)牙的單片機(jī)*1 (改藍(lán)牙的需要一個, 如果改WiFi需要一個esp32s2,淘寶10塊錢?),? ?


esp32s2


? ?3.?ch9350模塊一個? (帶host的esp32 s2也可以,不過我手里只有一個s2, 用來插沒藍(lán)牙功能的臺式機(jī)上了)

???4.?杜邦線幾根


二 :? 設(shè)備連接

????沒啥好說的,直接上圖

????

????這里連接的是單片機(jī)的16 17 引腳


三 : 代碼(全功能代碼)

? ? 直接上圖


#include <HardwareSerial.h> //串口庫

#include "CH9350_USBKEY.h"//ch9350

#include <BleMouse.h> //藍(lán)牙庫


這里如果需要改WiFi就需要引用的庫,只用藍(lán)牙功能就可以不要

如果需要WiFi功能

這段程序?qū)崿F(xiàn)WiFi發(fā)送結(jié)構(gòu)體, 由于點(diǎn)對點(diǎn),所以不需要加密

各種初始化


代碼部分結(jié)束----------------------------------------------------------


四:藍(lán)牙連接(改無線完成,學(xué)會了嗎)


好了,代碼直接上傳之后電腦就能搜索到一個藍(lán)牙

連接成功后將鼠標(biāo)插入就能看到串口打印的鼠標(biāo)信息了

同時你的電腦上的鼠標(biāo)指針也會跟著動起來, 到這一步改藍(lán)牙就完成了,可能有的人會覺得沒有意義, 請接著往下看


五: WiFi連接

首先我的代碼本身是支持WiFi 藍(lán)牙同時工作的, 也就是除了之前介紹的設(shè)備外不需要其他任何輔助設(shè)備或軟件


  1. WiFi的優(yōu)勢:? 可以實(shí)現(xiàn)一個鼠標(biāo)同時控制多個設(shè)備而不需要設(shè)備提前安裝啥軟件之類的.


  2. WiFi控制的缺點(diǎn):? 被控制的每個設(shè)備都需要花10塊錢買一個esp32 s2 模塊作為物理連接使用, 如果不用物理連接的話網(wǎng)上辦法一堆,我就不廢話了


  3. 本程序使用的WiFi方案是ESP-NOW, 想詳細(xì)了解的同學(xué)請參考官方文檔, NOW的控制距離受WiFi信號的約束(空曠距離一百米左右,穿墻要看多厚), 如果需要在復(fù)雜環(huán)境遠(yuǎn)程使用建議將NOW換成 ESP-MESH, mesh相較于NOW優(yōu)勢是理論上AB兩個設(shè)備之間只要有若干個設(shè)備C,那么控制距離可以是很遠(yuǎn)很遠(yuǎn), 鋪滿全國也不是不可能, NOW的優(yōu)勢是兩個設(shè)備之間不需要連接,跟無線鍵鼠的原理類似.


  4. 使用WiFi的情況下需要將程序稍做改動,例如以鼠標(biāo)左鍵為例 , jm_arr(String a)?中可以是任意值,這主要看接收端的配套程序

原程序
更改之后的程序



????5. ESP32 s2 接收端程序 :? ? ??

? ? ? ??

由于我本身不需要使用WiFi功能,只是先弄著等以后需要的時候再玩,到這里WiFi功能介紹完畢

附上五郎esp32 s2 實(shí)現(xiàn)速射的視頻【10塊錢的簡單鼠標(biāo)宏】


六: 普通鼠標(biāo)添加宏功能

首先感謝能耐心看到這里, 關(guān)于之前的代碼部分相信大家有看到


這就是鼠標(biāo)按下組合鍵后esp32要實(shí)現(xiàn)的功能

這段程序就是將鼠標(biāo)左鍵與右鍵同時按住就會觸發(fā)鼠標(biāo)左鍵連續(xù)單擊的程序


單擊延時, 這段代碼很重要!!!?

????這段代碼很重要!!! 如果不想玩游戲被封號的話請一定要注意,!!

????目前大多數(shù)游戲都排斥鼠標(biāo)宏, 想我這個案例使用的嚴(yán)格來講屬于物理外掛, 但是各大游戲廠商都只能通過判斷游戲內(nèi)的數(shù)據(jù)普通人能不能辦到從而來判斷是不是使用了外掛, 像我現(xiàn)在這個配置就是我自己按鼠標(biāo)能達(dá)到的一個平均值.

?????玩FPS游戲的時候也能自己調(diào)節(jié)壓槍,當(dāng)然也可以調(diào)節(jié)武器射速

右后

這一段是將鼠標(biāo)右鍵與后退鍵同時按住就觸發(fā)左右鍵同時按住的程序, 比如你想要掃射的時候但是鎖了射速就可以這樣解決

這一段是觸發(fā)后就用WiFi發(fā)送一條消息出去,比如桌子接收到后就亮紅光,RGB開始光污染等等, 我這里是通知鍵盤可以按下"R"鍵了


七: 如果覺得有用還請點(diǎn)個三連,附代碼

鼠標(biāo)端口

#include <HardwareSerial.h> //Serial Interfaces

#include "CH9350_USBKEY.h"

#include <BleMouse.h>


#include <esp_now.h>

#include <WiFi.h>


BleMouse bleMouse;


//IOs for CH9350 used on ESP32

#define RXKEY 16

#define TXKEY 17


HardwareSerial SerialKey(2);? ?//Keyboard USB to Serial CH9350 @ Serial Interface 1

USB9350_KeyMouse USBKeyMouse;? //Create an Instance for Keyboard/ Mouse Decoder


int x, y, z, x1, yi, Button;

unsigned long StartTime, StartTime1, sbmov;

unsigned long rrl; //按鍵延時



//<<< <<< <<< <<< <<< <<< == == == == == 設(shè)置ESP-NOW數(shù)據(jù)結(jié)構(gòu)體 == == == == == >>> >>> >>> >>> >>> >>> >>


// REPLACE WITH THE MAC Address of your receiver

uint8_t mac_to[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};


typedef struct test_struct? {? ? ? ? ? ? ? ? ? ? ? ? ?// 設(shè)置ESP-NOW數(shù)據(jù)結(jié)構(gòu)體

? char a[250];

} test_struct ;

test_struct? to_str;


//創(chuàng)建類型變量esp_now_peer_info_t存儲有關(guān)對等點(diǎn)的信息。

esp_now_peer_info_t peerInfo;


void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {

? String st = status ? "No!" : "Ok!";

? Serial.println("`發(fā)送回調(diào) :" + st + " `");

}


//<<< <<< <<< <<< <<< <<< == == == == == 各函數(shù) == == == == == >>> >>> >>> >>> >>> >>> >>


void jm_arr(String a) {

? //? char jm = 'z';? //加密

? //? char lls[245];

? //? a.toCharArray(lls, sizeof(lls));

? //? for (int i = 0; i < a.length(); i++) {

? //? ? if (lls[i] != jm) {

? //? ? ? lls[i] = (char)(lls[i] ^ jm);

? //? ? }

? //? }

? //? String(lss).toCharArray(to_str.a, sizeof(to_str.a));

? String(a).toCharArray(to_str.a, sizeof(to_str.a));

? esp_now_send(mac_to, (uint8_t *)&to_str, sizeof(to_str));

}



//<<< <<< <<< <<< <<< <<< == == == == == SETUP == == == == == >>> >>> >>> >>> >>> >>> >>


void setup()

{

? WiFi.mode(WIFI_STA);

? Serial.begin(115200);

? Serial.println("Start");


? Serial.println("[OLD] MAC: " + WiFi.macAddress());

? Serial.println("NEW Wi-Fi 通道: " + String(WiFi.channel()));


? bleMouse.begin();

? SerialKey.begin(115200, SERIAL_8N1, RXKEY, TXKEY);

? USBKeyMouse.begin(SerialKey);


? Serial.printf("CH9350_USBKEY Demonstration\n");

? Serial.printf("14. September 2022 By Jann Oesch\n");

? Serial.printf("Press any key or move the mouse. Press space to change ASCII to RAW mode for keyboard\n");

? Serial.printf("Press left mousebutton to set the coordinate to 1000/1000 ant the right one for 0/0\n\n");


? if (esp_now_init() != ESP_OK) return;? //ESP-NOW初始化


? esp_now_register_send_cb(OnDataSent);? //發(fā)送回調(diào)

? //? esp_now_register_recv_cb(OnDataRecv);? //接收回調(diào)


? memcpy(peerInfo.peer_addr, mac_to, 6); //配對點(diǎn)

? peerInfo.channel = 0;

? peerInfo.encrypt = false;

? if (esp_now_add_peer(&peerInfo) != ESP_OK) {

? ? Serial.println("Failed to add peer mac1");

? ? return;

? }


}



void loop() {



? int Change = USBKeyMouse.GetMouseXY(&x, &y, &z, &Button);

? if (Change) {

? ? Serial.printf("Mouse X: %d, Y: %d Z: %d Button:%d\n", x, y, z, Button);

? ? sbmov = millis();

? }?

//? else if ((millis() - sbmov) > 10000) { //10秒未動鼠標(biāo)清空坐標(biāo)

//? ? USBKeyMouse.SetMouseXY(0, 0);

//? ? x1 = 0;

//? ? yi = 0;

//? }


? if (bleMouse.isConnected()) { //如果藍(lán)牙連接成功


? ? sbmov_go(Change);? //鼠標(biāo)篇

? }

}



//鼠標(biāo)按鈕及移動

void sbmov_go(int Change) {


? if (Change) {//滾輪

? ? if (z == 1) bleMouse.move(0, 0, 1);

? ? else if (z == 255) {

? ? ? bleMouse.move(0, 0, -1);

? ? }

? }


? //xy

? int x2 = x - x1;

? int y2 = y - yi;

? if ((x2 != 0) || (y2 != 0)) {

? ? bleMouse.move(x2, y2);

? ? x1 = x;

? ? yi = y;

? }



? if (Button == 6) {? ? ? ? ? ? ? ? ? ? ? ? ? ? //右中鍵同時

? ? bleMouse.press(MOUSE_RIGHT | MOUSE_MIDDLE);


? } else if (Button == 10) {? ? ? ? ? ? ? ? ? ? //右后鍵同時

? ? bleMouse.press(MOUSE_RIGHT | MOUSE_LEFT);


? } else if ((Button == 11) || (Button == 3)) { //右后左鍵同時 || 左右鍵同時

? ? if (!bleMouse.isPressed(MOUSE_RIGHT)) {

? ? ? bleMouse.press(MOUSE_RIGHT);

? ? }

? ? if (millis() > StartTime1) {? ? ? ? ? ? ? ? //同時按下執(zhí)行鼠標(biāo)連點(diǎn)

? ? ? bleMouse.click(MOUSE_LEFT);

? ? ? StartTime1 = millis() + random(120, 153);

? ? ? //? ? ? bleMouse.move(0, 10);//鼠標(biāo)下移 壓槍

? ? }


? } else? if (Button == 17) {? ? ? ? ? ? ? ? ? ?//左鍵 前進(jìn)鍵 執(zhí)行r r 左


? ? if (millis() > rrl) {

? ? ? jm_arr("r");

? ? ? rrl = millis() + 190;//延時

? ? ? StartTime1 = millis() + random(85, 90);//延時

? ? } else if (millis() > StartTime1) {

? ? ? bleMouse.click(MOUSE_LEFT);

? ? ? StartTime1 = millis() + 500;//延時

? ? }

? } else if (Button == 9) {? ? ? ? ? ? ? ? ? ? ? //左鍵 后退鍵 同時按下執(zhí)行鼠標(biāo)連點(diǎn)

? ? if (millis() > StartTime1) {

? ? ? bleMouse.click(MOUSE_LEFT);

? ? ? StartTime1 = millis() + random(85, 113);//延時

? ? }

? } else


? {

? ? // if 左鍵

? ? if (Button == 1) {

? ? ? if (!bleMouse.isPressed(MOUSE_LEFT)) {

? ? ? ? bleMouse.press(MOUSE_LEFT);

? ? ? }

? ? }

? ? else if (bleMouse.isPressed(MOUSE_LEFT)) {

? ? ? bleMouse.release(MOUSE_LEFT);

? ? }


? ? //右鍵

? ? if (Button == 2)? {

? ? ? if (!bleMouse.isPressed(MOUSE_RIGHT)) {

? ? ? ? bleMouse.press(MOUSE_RIGHT);

? ? ? }

? ? }

? ? else if (bleMouse.isPressed(MOUSE_RIGHT)) {

? ? ? bleMouse.release(MOUSE_RIGHT);

? ? }


? ? //中鍵

? ? if (Button == 4) {

? ? ? if (!bleMouse.isPressed(MOUSE_MIDDLE)) {

? ? ? ? bleMouse.press(MOUSE_MIDDLE);

? ? ? }

? ? } else if (bleMouse.isPressed(MOUSE_MIDDLE)) {

? ? ? bleMouse.release(MOUSE_MIDDLE);

? ? }


? ? //后退

? ? if (Button == 8) {

? ? ? if (!bleMouse.isPressed(MOUSE_BACK)) {

? ? ? ? bleMouse.press(MOUSE_BACK);

? ? ? }

? ? } else if (bleMouse.isPressed(MOUSE_BACK)) {

? ? ? bleMouse.release(MOUSE_BACK);

? ? }


? ? //前進(jìn)

? ? if (Button == 16) {

? ? ? if (!bleMouse.isPressed(MOUSE_FORWARD)) {

? ? ? ? bleMouse.press(MOUSE_FORWARD);

? ? ? }

? ? } else if (bleMouse.isPressed(MOUSE_FORWARD)) {

? ? ? bleMouse.release(MOUSE_FORWARD);

? ? }

? }


}


手把手教學(xué): 鍵鼠 有線/適配器 改無線(藍(lán)牙/WiFi), 普通鍵鼠改鼠標(biāo)宏的評論 (共 條)

分享到微博請遵守國家法律
信宜市| 鄂伦春自治旗| 咸阳市| 迁西县| 阳新县| 安徽省| 建始县| 宾川县| 原阳县| 沾益县| 连山| 凤台县| 琼海市| 察雅县| 错那县| 安仁县| 凌云县| 息烽县| 合山市| 葫芦岛市| 龙口市| 绍兴市| 三河市| 崇文区| 乌什县| 那曲县| 定南县| 左权县| 城固县| 新乡县| 天镇县| 许昌县| 凤庆县| 顺昌县| 特克斯县| 昭平县| 同德县| 河南省| 盐山县| 汪清县| 花垣县|