This class interface the MDSMC (Micro Dual Serial Motor Controller) by Pololu with our mbed module
MDSMC.h@0:e869912db757, 2012-11-16 (annotated)
- Committer:
- fangoman91
- Date:
- Fri Nov 16 20:26:54 2012 +0000
- Revision:
- 0:e869912db757
this class interface the MDSMC (Micro Dual Serial Motor Controller) by pololu
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fangoman91 | 0:e869912db757 | 1 | /*THIS CLASS INTERFACE THE MDSMC by pololu (Micro Dual Serial Motor Controller) |
fangoman91 | 0:e869912db757 | 2 | WITH OUR MBED MODULE. THE MDSMC MUST BE USED WITH UART MODULE*/ |
fangoman91 | 0:e869912db757 | 3 | |
fangoman91 | 0:e869912db757 | 4 | #ifndef MBED_MDSMC_H |
fangoman91 | 0:e869912db757 | 5 | #define MBED_MDSMC_H |
fangoman91 | 0:e869912db757 | 6 | |
fangoman91 | 0:e869912db757 | 7 | #include "mbed.h" |
fangoman91 | 0:e869912db757 | 8 | |
fangoman91 | 0:e869912db757 | 9 | #define Start 0x80 |
fangoman91 | 0:e869912db757 | 10 | #define ChangeConfig 0x02 |
fangoman91 | 0:e869912db757 | 11 | #define Setting1 0x7F |
fangoman91 | 0:e869912db757 | 12 | #define Setting2 0x13 |
fangoman91 | 0:e869912db757 | 13 | #define Device 0x00 |
fangoman91 | 0:e869912db757 | 14 | #define Forward1 0x7F |
fangoman91 | 0:e869912db757 | 15 | #define Reverse1 0x7E |
fangoman91 | 0:e869912db757 | 16 | #define Forward2 0x27 |
fangoman91 | 0:e869912db757 | 17 | #define Reverse2 0x26 |
fangoman91 | 0:e869912db757 | 18 | #define Right 0x21 |
fangoman91 | 0:e869912db757 | 19 | #define Left 0x05 |
fangoman91 | 0:e869912db757 | 20 | |
fangoman91 | 0:e869912db757 | 21 | class MDSMC |
fangoman91 | 0:e869912db757 | 22 | { |
fangoman91 | 0:e869912db757 | 23 | public: |
fangoman91 | 0:e869912db757 | 24 | /* - Declare Mbed connections |
fangoman91 | 0:e869912db757 | 25 | ** - Select serial pin with "PinName data" parameter; |
fangoman91 | 0:e869912db757 | 26 | ** - select reset pin with "PinName CLR" parameter; |
fangoman91 | 0:e869912db757 | 27 | ** - select motor mode with "nM" parameter if you set nM = 1 the MDSMC drive one motor, |
fangoman91 | 0:e869912db757 | 28 | ** if you set nM = 2 the MDSMC drive two motors; |
fangoman91 | 0:e869912db757 | 29 | ** - select the baud rate with "bps" parameter you can select a bps value between 2000 |
fangoman91 | 0:e869912db757 | 30 | ** and 19200.*/ |
fangoman91 | 0:e869912db757 | 31 | MDSMC(PinName TX, PinName RX, PinName CLR, int bps, int nM); |
fangoman91 | 0:e869912db757 | 32 | |
fangoman91 | 0:e869912db757 | 33 | /* - Give direction and speed*/ |
fangoman91 | 0:e869912db757 | 34 | void use(char direction, char speed); |
fangoman91 | 0:e869912db757 | 35 | |
fangoman91 | 0:e869912db757 | 36 | protected: |
fangoman91 | 0:e869912db757 | 37 | Serial _serialMDSMC; |
fangoman91 | 0:e869912db757 | 38 | DigitalOut _CLR; |
fangoman91 | 0:e869912db757 | 39 | void reset(); |
fangoman91 | 0:e869912db757 | 40 | }; |
fangoman91 | 0:e869912db757 | 41 | typedef unsigned char BYTE; |
fangoman91 | 0:e869912db757 | 42 | |
fangoman91 | 0:e869912db757 | 43 | #endif |
fangoman91 | 0:e869912db757 | 44 | |
fangoman91 | 0:e869912db757 | 45 | /*example used to test the class |
fangoman91 | 0:e869912db757 | 46 | |
fangoman91 | 0:e869912db757 | 47 | #include "mbed.h" |
fangoman91 | 0:e869912db757 | 48 | #include "MDSMC.h" |
fangoman91 | 0:e869912db757 | 49 | |
fangoman91 | 0:e869912db757 | 50 | MDSMC(USBTX,USBRX,p5); |
fangoman91 | 0:e869912db757 | 51 | |
fangoman91 | 0:e869912db757 | 52 | int main() |
fangoman91 | 0:e869912db757 | 53 | { |
fangoman91 | 0:e869912db757 | 54 | MDSMC.init(1,9600); |
fangoman91 | 0:e869912db757 | 55 | wait(1); |
fangoman91 | 0:e869912db757 | 56 | MDSMC.use(Forward1, 80); |
fangoman91 | 0:e869912db757 | 57 | wait(1); |
fangoman91 | 0:e869912db757 | 58 | MDSMC.use(Reverse1, 80); |
fangoman91 | 0:e869912db757 | 59 | wait(2); |
fangoman91 | 0:e869912db757 | 60 | MDSMC.init(2,9600); |
fangoman91 | 0:e869912db757 | 61 | wait(1); |
fangoman91 | 0:e869912db757 | 62 | MDSMC.use(Forward2, 80); |
fangoman91 | 0:e869912db757 | 63 | wait(1); |
fangoman91 | 0:e869912db757 | 64 | MDSMC.use(Reverse2, 80); |
fangoman91 | 0:e869912db757 | 65 | wait(1); |
fangoman91 | 0:e869912db757 | 66 | MDSMC.use(Right, 50); |
fangoman91 | 0:e869912db757 | 67 | wait(1); |
fangoman91 | 0:e869912db757 | 68 | MDSMC.use(Left, 50); |
fangoman91 | 0:e869912db757 | 69 | } |
fangoman91 | 0:e869912db757 | 70 | */ |