liang brain
/
EX_encoder_qei_hukeqin
decorder
main.cpp
- Committer:
- brainliang
- Date:
- 2019-10-15
- Revision:
- 2:af377291f3ae
- Parent:
- 1:1e3eb2d1496b
File content as of revision 2:af377291f3ae:
#include "mbed.h" #include "QEI.h" //两个轮子L298N DigitalOut w1(PB_6); DigitalOut w2(PB_7); DigitalOut w3(PB_8); DigitalOut w4(PB_9); PwmOut mypwm1(PA_9); PwmOut mypwm2(PA_8); //调试串口 Serial pc(PB_10, PB_11); Ticker toggle_time_ticker; //编码器1-4 QEI wheel(PA_2, PA_3, NC, 11, QEI::X4_ENCODING); //买来的电机自带编码器,说明书上有电机每转一圈编码器发生11个信号 QEI wheel2(PA_6, PA_7, NC, 11, QEI::X4_ENCODING); int x,y; float a= 0.01, b = 0.00860454; void time_ticker(); void serialread(); int main() { mypwm1.period_ms(10); mypwm2.period_ms(10); toggle_time_ticker.attach(&time_ticker, 0.2); //使能ticker中断,0.2s产生一次.中断函数用于获取每个轮子的计数值 pc.attach(&serialread); mypwm1.pulsewidth(a); mypwm2.pulsewidth(b); wheel.reset(); //reset函数,将编码器计数值赋0(初始化编码器,开始计数) wheel2.reset(); w1 = 0; w2 = 0; w3 = 0; w4 = 0; while(1) { } } void time_ticker(){ //获取一个轮子的编码器读到的数和旋转方向 x = wheel.getPulses(); x = x/44; //将编码器计数值转化成轮子旋转的圈数 wheel.getState(); //获取旋转方向,返回值为1--顺时针, -1--逆时针 y = wheel2.getPulses(); y = y/44; //将编码器计数值转化成轮子旋转的圈数 wheel2.getState(); //获取旋转方向,返回值为1--顺时针, -1--逆时针 wheel.reset(); wheel2.reset(); pc.printf("x:%d y:%d\n",x,y); } void serialread(){ switch (pc.getc()) { case '1': w1=0; w4=0; break; case '2': w1=1; w4=1; break; default: break; } }