Control the Pololu SMC02B

Committer:
goncaloc
Date:
Mon Oct 11 18:38:26 2010 +0000
Revision:
0:33043894c6cb
Child:
4:420e977e37b6
0v1

Who changed what in which revision?

UserRevisionLine numberNew 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 0:33043894c6cb 6 SMC02B::SMC02B(PinName tx, PinName rx, PinName pin) : _rst(pin)
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