Control the Pololu SMC02B
SMC02B.cpp@4:420e977e37b6, 2010-10-11 (annotated)
- Committer:
- goncaloc
- Date:
- Mon Oct 11 20:25:57 2010 +0000
- Revision:
- 4:420e977e37b6
- Parent:
- 0:33043894c6cb
0v5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
goncaloc | 0:33043894c6cb | 1 | /** |
goncaloc | 0:33043894c6cb | 2 | * Includes |
goncaloc | 0:33043894c6cb | 3 | */ |
goncaloc | 0:33043894c6cb | 4 | #include "SMC02B.h" |
goncaloc | 0:33043894c6cb | 5 | |
goncaloc | 4:420e977e37b6 | 6 | SMC02B::SMC02B(PinName tx, PinName rx, PinName rst) : _rst(rst) |
goncaloc | 0:33043894c6cb | 7 | { |
goncaloc | 0:33043894c6cb | 8 | _SMC02B = new Serial( tx, rx); |
goncaloc | 0:33043894c6cb | 9 | _rst = 1; |
goncaloc | 0:33043894c6cb | 10 | } |
goncaloc | 0:33043894c6cb | 11 | |
goncaloc | 0:33043894c6cb | 12 | void SMC02B::SMC02B_RST(void) |
goncaloc | 0:33043894c6cb | 13 | { |
goncaloc | 0:33043894c6cb | 14 | _rst = 1; |
goncaloc | 0:33043894c6cb | 15 | wait(0.1); |
goncaloc | 0:33043894c6cb | 16 | _rst = 0; |
goncaloc | 0:33043894c6cb | 17 | wait(0.1); |
goncaloc | 0:33043894c6cb | 18 | _rst = 1; |
goncaloc | 0:33043894c6cb | 19 | wait(0.1); |
goncaloc | 0:33043894c6cb | 20 | } |
goncaloc | 0:33043894c6cb | 21 | |
goncaloc | 0:33043894c6cb | 22 | // Set Motor movement |
goncaloc | 0:33043894c6cb | 23 | // motor |
goncaloc | 0:33043894c6cb | 24 | // motor ID |
goncaloc | 0:33043894c6cb | 25 | // direction |
goncaloc | 0:33043894c6cb | 26 | // 0 - Reverse |
goncaloc | 0:33043894c6cb | 27 | // 1 - Forward |
goncaloc | 0:33043894c6cb | 28 | // speed |
goncaloc | 0:33043894c6cb | 29 | // 0 - 127 ( 0x7F ) |
goncaloc | 0:33043894c6cb | 30 | void SMC02B::SMC02B_MOTOR_SET( char motor, char direction, char speed ) |
goncaloc | 0:33043894c6cb | 31 | { |
goncaloc | 0:33043894c6cb | 32 | char motor_ = motor << 1; |
goncaloc | 0:33043894c6cb | 33 | _SMC02B -> putc( SMC02B_START_BYTE ); |
goncaloc | 0:33043894c6cb | 34 | _SMC02B -> putc( SMC02B_DEVICE_ID ); |
goncaloc | 0:33043894c6cb | 35 | _SMC02B -> putc( motor_ | direction ); |
goncaloc | 0:33043894c6cb | 36 | _SMC02B -> putc( speed ); |
goncaloc | 0:33043894c6cb | 37 | } |
goncaloc | 0:33043894c6cb | 38 | |
goncaloc | 0:33043894c6cb | 39 | // OFF Backward -> Brake |
goncaloc | 0:33043894c6cb | 40 | void SMC02B::SMC02B_MOTOR_BRAKE( char motor ) |
goncaloc | 0:33043894c6cb | 41 | { |
goncaloc | 0:33043894c6cb | 42 | char motor_ = motor << 1; |
goncaloc | 0:33043894c6cb | 43 | _SMC02B -> putc( SMC02B_START_BYTE ); |
goncaloc | 0:33043894c6cb | 44 | _SMC02B -> putc( SMC02B_DEVICE_ID ); |
goncaloc | 0:33043894c6cb | 45 | _SMC02B -> putc( motor_ | 0x00 ); |
goncaloc | 0:33043894c6cb | 46 | _SMC02B -> putc( 0x00 ); |
goncaloc | 0:33043894c6cb | 47 | } |
goncaloc | 0:33043894c6cb | 48 | |
goncaloc | 0:33043894c6cb | 49 | // OFF Forward -> Coasting |
goncaloc | 0:33043894c6cb | 50 | void SMC02B::SMC02B_MOTOR_COAST( char motor ) |
goncaloc | 0:33043894c6cb | 51 | { |
goncaloc | 0:33043894c6cb | 52 | char motor_ = motor << 1; |
goncaloc | 0:33043894c6cb | 53 | _SMC02B -> putc( SMC02B_START_BYTE ); |
goncaloc | 0:33043894c6cb | 54 | _SMC02B -> putc( SMC02B_DEVICE_ID ); |
goncaloc | 0:33043894c6cb | 55 | _SMC02B -> putc( motor_ | 0x01 ); |
goncaloc | 0:33043894c6cb | 56 | _SMC02B -> putc( 0x00 ); |
goncaloc | 0:33043894c6cb | 57 | } |
goncaloc | 0:33043894c6cb | 58 | |
goncaloc | 0:33043894c6cb | 59 | // Config |
goncaloc | 0:33043894c6cb | 60 | // mode |
goncaloc | 0:33043894c6cb | 61 | // 0 - 2 Motors |
goncaloc | 0:33043894c6cb | 62 | // 1 - 1 Motor |
goncaloc | 0:33043894c6cb | 63 | // motor |
goncaloc | 0:33043894c6cb | 64 | // 0 - 63 ( 0x3F ) First motor number |
goncaloc | 0:33043894c6cb | 65 | void SMC02B::SMC02B_CONFIG( char mode, char motor ) |
goncaloc | 0:33043894c6cb | 66 | { |
goncaloc | 0:33043894c6cb | 67 | char mode_ = mode << 6; |
goncaloc | 0:33043894c6cb | 68 | char motor_ = motor & 0x3F; |
goncaloc | 0:33043894c6cb | 69 | _SMC02B -> putc( SMC02B_START_BYTE ); |
goncaloc | 0:33043894c6cb | 70 | _SMC02B -> putc( SMC02B_CONFIG_BYTE ); |
goncaloc | 0:33043894c6cb | 71 | _SMC02B -> putc(mode_ | motor_ ); |
goncaloc | 0:33043894c6cb | 72 | } |
goncaloc | 0:33043894c6cb | 73 | |
goncaloc | 0:33043894c6cb | 74 | |
goncaloc | 0:33043894c6cb | 75 |