|

楼主 |
发表于 2024-9-5 19:17:41
|
显示全部楼层
记录下按键按下的时间,抬起的时间
如果MCU有自带计时函数的话直接计时
没有的话就Timer中断来计时,存全局变量
- unsigned long b,c,kd;
- byte i=0,kc=0,disp=0;
- bool bl=false,kb;
- void getKey(){
- byte k=digitalRead(BOOT);
- if(kd){
- if(c>kd){
- if(k){//kdown
- if(++kc>10){//长按2秒
- Serial.println("lngClick");
- can.clrErrs();
- kb=1;
- kc=kd=0;
- return;
- }
- }else{//kup 单击
- if(!kb){
- Serial.println("Click");
- disp=!disp;
- }
- kb=kc=kd=0;
- return;
- }
- kd=c+200;
- }
- }else if(k){
- kd=c+200;//200ms去抖动
- }
- }
- void loop(){
- c=millis();
- getKey();
- if(c>b){
- //test();
- can.getRpm();
- //can.getSpeed();
- if(!disp){
- byte g=can.gear;
- if(!g)g=17;
- else if(g>6)g=10;
- leds.show(g);
- }
- b=c+333;
- }
- can.response();
- digitalWrite(K9,can.rpm>7200);//转速提示
- if(disp)leds.vshow(can.oiltmp);
- }
复制代码 |
|