liang brain
/
EX_encoder_qei_hukeqin
decorder
main.cpp@2:af377291f3ae, 2019-10-15 (annotated)
- Committer:
- brainliang
- Date:
- Tue Oct 15 05:03:34 2019 +0000
- Revision:
- 2:af377291f3ae
- Parent:
- 1:1e3eb2d1496b
decoder
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
glintligo | 0:e63858fec119 | 1 | #include "mbed.h" |
glintligo | 0:e63858fec119 | 2 | #include "QEI.h" |
brainliang | 2:af377291f3ae | 3 | |
brainliang | 2:af377291f3ae | 4 | //两个轮子L298N |
glintligo | 1:1e3eb2d1496b | 5 | DigitalOut w1(PB_6); |
glintligo | 1:1e3eb2d1496b | 6 | DigitalOut w2(PB_7); |
glintligo | 1:1e3eb2d1496b | 7 | DigitalOut w3(PB_8); |
glintligo | 1:1e3eb2d1496b | 8 | DigitalOut w4(PB_9); |
glintligo | 1:1e3eb2d1496b | 9 | PwmOut mypwm1(PA_9); |
glintligo | 1:1e3eb2d1496b | 10 | PwmOut mypwm2(PA_8); |
brainliang | 2:af377291f3ae | 11 | //调试串口 |
glintligo | 1:1e3eb2d1496b | 12 | Serial pc(PB_10, PB_11); |
brainliang | 2:af377291f3ae | 13 | |
glintligo | 1:1e3eb2d1496b | 14 | Ticker toggle_time_ticker; |
brainliang | 2:af377291f3ae | 15 | //编码器1-4 |
brainliang | 2:af377291f3ae | 16 | QEI wheel(PA_2, PA_3, NC, 11, QEI::X4_ENCODING); //买来的电机自带编码器,说明书上有电机每转一圈编码器发生11个信号 |
glintligo | 1:1e3eb2d1496b | 17 | QEI wheel2(PA_6, PA_7, NC, 11, QEI::X4_ENCODING); |
brainliang | 2:af377291f3ae | 18 | |
glintligo | 1:1e3eb2d1496b | 19 | int x,y; |
glintligo | 1:1e3eb2d1496b | 20 | float a= 0.01, b = 0.00860454; |
glintligo | 1:1e3eb2d1496b | 21 | void time_ticker(); |
glintligo | 1:1e3eb2d1496b | 22 | void serialread(); |
brainliang | 2:af377291f3ae | 23 | |
glintligo | 1:1e3eb2d1496b | 24 | int main() |
glintligo | 1:1e3eb2d1496b | 25 | { |
glintligo | 1:1e3eb2d1496b | 26 | mypwm1.period_ms(10); |
glintligo | 1:1e3eb2d1496b | 27 | mypwm2.period_ms(10); |
brainliang | 2:af377291f3ae | 28 | |
brainliang | 2:af377291f3ae | 29 | toggle_time_ticker.attach(&time_ticker, 0.2); //使能ticker中断,0.2s产生一次.中断函数用于获取每个轮子的计数值 |
brainliang | 2:af377291f3ae | 30 | |
glintligo | 1:1e3eb2d1496b | 31 | pc.attach(&serialread); |
brainliang | 2:af377291f3ae | 32 | |
glintligo | 1:1e3eb2d1496b | 33 | mypwm1.pulsewidth(a); |
brainliang | 2:af377291f3ae | 34 | mypwm2.pulsewidth(b); |
brainliang | 2:af377291f3ae | 35 | wheel.reset(); //reset函数,将编码器计数值赋0(初始化编码器,开始计数) |
glintligo | 1:1e3eb2d1496b | 36 | wheel2.reset(); |
glintligo | 1:1e3eb2d1496b | 37 | w1 = 0; |
brainliang | 2:af377291f3ae | 38 | w2 = 0; |
glintligo | 1:1e3eb2d1496b | 39 | w3 = 0; |
glintligo | 1:1e3eb2d1496b | 40 | w4 = 0; |
glintligo | 0:e63858fec119 | 41 | while(1) |
glintligo | 0:e63858fec119 | 42 | { |
glintligo | 1:1e3eb2d1496b | 43 | |
glintligo | 0:e63858fec119 | 44 | } |
glintligo | 0:e63858fec119 | 45 | } |
glintligo | 1:1e3eb2d1496b | 46 | |
glintligo | 1:1e3eb2d1496b | 47 | void time_ticker(){ |
brainliang | 2:af377291f3ae | 48 | //获取一个轮子的编码器读到的数和旋转方向 |
brainliang | 2:af377291f3ae | 49 | x = wheel.getPulses(); |
brainliang | 2:af377291f3ae | 50 | x = x/44; //将编码器计数值转化成轮子旋转的圈数 |
brainliang | 2:af377291f3ae | 51 | wheel.getState(); //获取旋转方向,返回值为1--顺时针, -1--逆时针 |
glintligo | 1:1e3eb2d1496b | 52 | y = wheel2.getPulses(); |
brainliang | 2:af377291f3ae | 53 | y = y/44; //将编码器计数值转化成轮子旋转的圈数 |
brainliang | 2:af377291f3ae | 54 | wheel2.getState(); //获取旋转方向,返回值为1--顺时针, -1--逆时针 |
brainliang | 2:af377291f3ae | 55 | |
glintligo | 1:1e3eb2d1496b | 56 | wheel.reset(); |
glintligo | 1:1e3eb2d1496b | 57 | wheel2.reset(); |
brainliang | 2:af377291f3ae | 58 | pc.printf("x:%d y:%d\n",x,y); |
glintligo | 1:1e3eb2d1496b | 59 | } |
glintligo | 1:1e3eb2d1496b | 60 | |
glintligo | 1:1e3eb2d1496b | 61 | void serialread(){ |
glintligo | 1:1e3eb2d1496b | 62 | switch (pc.getc()) |
glintligo | 1:1e3eb2d1496b | 63 | { |
glintligo | 1:1e3eb2d1496b | 64 | case '1': |
glintligo | 1:1e3eb2d1496b | 65 | w1=0; |
glintligo | 1:1e3eb2d1496b | 66 | w4=0; |
glintligo | 1:1e3eb2d1496b | 67 | break; |
glintligo | 1:1e3eb2d1496b | 68 | case '2': |
brainliang | 2:af377291f3ae | 69 | w1=1; |
glintligo | 1:1e3eb2d1496b | 70 | w4=1; |
glintligo | 1:1e3eb2d1496b | 71 | break; |
glintligo | 1:1e3eb2d1496b | 72 | default: |
glintligo | 1:1e3eb2d1496b | 73 | break; |
glintligo | 1:1e3eb2d1496b | 74 | } |
glintligo | 1:1e3eb2d1496b | 75 | } |