|

楼主 |
发表于 2024-4-26 11:26:35
|
显示全部楼层
本帖最后由 devcang 于 2024-4-26 16:05 编辑
按键版的框架代码
- #include <BleMouse.h>
- BleMouse bleMouse;
- //定义左、右、上、下4个按键,校正鼠标位置,和启/停一共5个按键,
- #define k12_L 12
- #define k13_R 13
- #define k14_U 14
- #define k15_D 15
- #define k16_S 16
- #define PIN33 33 //ESP32-CAM 的红色LED,作指示灯,注:相反电平
- #define KD 30 //常数,按键“防抖”
- bool bStart=false;
- // signed char _x1, _x2, _y1, _y2; //
- // byte xstep=0; //执行到哪个步骤
- unsigned long t1; //控制隔多久执行一次
- unsigned long h1, h2, h3, h4, h5; //按键“防抖”
- void k12_L_ISR(){if(!bleMouse.isConnected() || millis()<h1)return; bleMouse.move(-125, 0); h1=millis()+KD; }
- void k13_R_ISR(){if(!bleMouse.isConnected() || millis()<h2)return; bleMouse.move(125, 0); h2=millis()+KD; }
- void k14_U_ISR(){if(!bleMouse.isConnected() || millis()<h3)return; bleMouse.move(0, -125); h3=millis()+KD; }
- void k15_D_ISR(){if(!bleMouse.isConnected() || millis()<h4)return; bleMouse.move(0, 125); h4=millis()+KD; }
- void k16_S_ISR(){if(!bleMouse.isConnected() || millis()<h5)return; bStart=!bStart; digitalWrite(PIN33, bStart?LOW:HIGH); h5=millis()+KD;}
- void setup(){
- delay(10);
- pinMode(PIN33, OUTPUT);
- digitalWrite(PIN33, LOW); // HIGH:OFF, LOW:ON,闪一下
- delay(800);
- digitalWrite(PIN33, HIGH); // HIGH:OFF, LOW:ON
- // Serial.begin(115200); //需要调试,就打开串口
-
- pinMode(k12_L, INPUT_PULLUP); //INPUT_PULLDOWN INPUT_PULLUP
- pinMode(k13_R, INPUT_PULLUP);
- pinMode(k14_U, INPUT_PULLUP);
- pinMode(k15_D, INPUT_PULLUP);
- pinMode(k16_S, INPUT_PULLUP);
-
- digitalWrite(k12_L, HIGH); //设定初始电平
- digitalWrite(k13_R, HIGH);
- digitalWrite(k14_U, HIGH);
- digitalWrite(k15_D, HIGH);
- digitalWrite(k16_S, HIGH);
-
- attachInterrupt(digitalPinToInterrupt(k12_L), k12_L_ISR, FALLING);// 设置按键中断
- attachInterrupt(digitalPinToInterrupt(k13_R), k13_R_ISR, FALLING);
- attachInterrupt(digitalPinToInterrupt(k14_U), k14_U_ISR, FALLING);
- attachInterrupt(digitalPinToInterrupt(k15_D), k15_D_ISR, FALLING);
- attachInterrupt(digitalPinToInterrupt(k16_S), k16_S_ISR, FALLING);
-
- // Serial.println("Starting BLE work!");
- bleMouse.begin(); //开始蓝牙鼠标
- }
- void loop() {
- if( (!bleMouse.isConnected()) || (!bStart) || (millis()<t1) ){ return; }
-
- //真正的目的是这后面,暂不分享。其实代码不多就那几行,肯定和模拟触摸有关的。
- // bleMouse.press(); //按下
- // bleMouse.move(x1,- y1); //坐标,是signed char类型的,负表示往上触摸
- // bleMouse.release(); //释放
复制代码
|
|