EC11编码器驱动程序(验证测试OK)

#include <Arduino.h>

#define EC11_DATA_key digitalRead(D5)  //GPIO14

#define EC11_DATA_A  digitalRead(D4)   //GPIO2

#define EC11_DATA_B  digitalRead(D3)   //GPIO0

int16_t Encoder_EC11_Scan(int16_t key,int16_t EC11_A,int16_t EC11_B);  

void setup() {

  pinMode(D3,INPUT_PULLUP); //输入上拉

  pinMode(D4,INPUT_PULLUP); //输入上拉

  pinMode(D5,INPUT_PULLUP); //输入上拉  

  Serial.begin(115200);  

}

void loop() {

    Encoder_EC11_Scan(EC11_DATA_key,EC11_DATA_A,EC11_DATA_B);

}

int16_t Encoder_EC11_Scan(int16_t key,int16_t EC11_A,int16_t EC11_B)

{

  static int8_t sta=0,sta_key=0;

  int16_t ScanResult = 0;  

  if(sta_key==0 && key==1)     //如果没有按下按键

        {

        sta_key=1;        

        }

  else if(sta_key==1)  

      {

       if(key==0)            //如果按下了按键

        {

        sta_key=2;    

        }

      }

  else if(sta_key==2)    

    {

    if(key==1)              //如果松开按键

       {

       sta_key=0;        

       ScanResult=3;        

       }

    }

  if(EC11_A==0 && sta==0)    //如果A=0

     {

      sta=1;              

     }

  else if(sta==1)       //如果A=0

  {

    if(EC11_A==1)       //A=1

    {

      if(EC11_B==1)     //B=1

      {

        if(key==0)        

        {

         ScanResult=2;     //按下按键正转

         sta_key=0;        //清零

         }

        else

        {

        ScanResult=1;      //没有按下按键正转

        }

      }      

      else if(EC11_B==0)   //B=0

      {

        if(key==0)

        {

        ScanResult=-2;     //按下按键反转

        sta_key=0;    

        }

        else

        {

        ScanResult=-1;     //没有按下按键反转

         }

      }

      sta=0;

    }

  }

  if(ScanResult!=0)printf("%d\r\n",ScanResult); //输出查看,不需要可删除

  return ScanResult;      //返回值的取值:   0:无动作;  1:正转; -1:反转;  2:按下正转; -2:按下反转; 3:只按下并松开

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值