旋转编码器

void e1.setencoder(int modeint delay);
// mode:0-关闭,1-开启,2-设置延时,默认500ms
// delay:延时时间,单位10ms,范围0~255。mode为2时有效。

关于延时时间的描述:旋转编码器在不停旋转的时候,我们并不知道旋转是否结束,但又不能等到完全停止才获取结果,因此需要设置延时值,也就是说当旋转不停时间超过延时值时,则强制反馈一次。

示例:

// 关闭编码器模式
e1.setencoder(0,0);

// 启动旋转编码器
e1.setencoder(1,0);

// 设置旋转编码器的延时时间
e1.setencoder(2,300);

获取旋转编码器的状态

void e1.recvExtend( int mode, int bs, int len)
{    
    int num;
    int val;
    num = getbin(bs,0);
    val = getbin(bs,1);
    if(mode == 6){    // 旋转编码器 旋转结果    
        //此时num 为0或1,分别对应两个编码器
        //此时val>80(十进制),表示编码器顺时针旋转,转动(val-80)格
        //此时val<80(十进制),表示编码器逆时针旋转,转动(80-val)格
    }
    if(mode == 7){    // 旋转编码器 按键结果    
        //此时num 为0或1,分别对应两个编码器
        //此时val=1 按下;=2抬起;=3长按
    }
}