This class interface the MDSMC (Micro Dual Serial Motor Controller) by Pololu with our mbed module
Revision 0:e869912db757, committed 2012-11-16
- Comitter:
- fangoman91
- Date:
- Fri Nov 16 20:26:54 2012 +0000
- Commit message:
- this class interface the MDSMC (Micro Dual Serial Motor Controller) by pololu
Changed in this revision
| MDSMC.cpp | Show annotated file Show diff for this revision Revisions of this file |
| MDSMC.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MDSMC.cpp Fri Nov 16 20:26:54 2012 +0000
@@ -0,0 +1,43 @@
+//.cpp file of MDSMC library
+
+#include "mbed.h"
+#include "MDSMC.h"
+
+MDSMC::MDSMC(PinName TX, PinName RX, PinName CLR, int bps, int nM): _serialMDSMC(TX, RX), _CLR(CLR)
+{
+ reset();
+ _serialMDSMC.baud(bps);
+ switch (nM)
+ {
+ case 1:
+ _serialMDSMC.putc(Start);
+ _serialMDSMC.putc(ChangeConfig);
+ _serialMDSMC.putc(Setting1);
+ reset();
+ break;
+ case 2:
+ _serialMDSMC.putc(Start);
+ _serialMDSMC.putc(ChangeConfig);
+ _serialMDSMC.putc(Setting2);
+ reset();
+ break;
+ }
+}
+
+//user functions
+void MDSMC::use(char direction, char speed)
+{
+ _serialMDSMC.putc(Start);
+ _serialMDSMC.putc(Device);
+ _serialMDSMC.putc(direction);
+ _serialMDSMC.putc(speed);
+}
+
+void MDSMC::reset()
+{
+ _CLR = 0;
+ wait_us(2);
+ _CLR = 1;
+}
+
+
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MDSMC.h Fri Nov 16 20:26:54 2012 +0000
@@ -0,0 +1,70 @@
+/*THIS CLASS INTERFACE THE MDSMC by pololu (Micro Dual Serial Motor Controller)
+WITH OUR MBED MODULE. THE MDSMC MUST BE USED WITH UART MODULE*/
+
+#ifndef MBED_MDSMC_H
+#define MBED_MDSMC_H
+
+#include "mbed.h"
+
+#define Start 0x80
+#define ChangeConfig 0x02
+#define Setting1 0x7F
+#define Setting2 0x13
+#define Device 0x00
+#define Forward1 0x7F
+#define Reverse1 0x7E
+#define Forward2 0x27
+#define Reverse2 0x26
+#define Right 0x21
+#define Left 0x05
+
+class MDSMC
+{
+ public:
+ /* - Declare Mbed connections
+ ** - Select serial pin with "PinName data" parameter;
+ ** - select reset pin with "PinName CLR" parameter;
+ ** - select motor mode with "nM" parameter if you set nM = 1 the MDSMC drive one motor,
+ ** if you set nM = 2 the MDSMC drive two motors;
+ ** - select the baud rate with "bps" parameter you can select a bps value between 2000
+ ** and 19200.*/
+ MDSMC(PinName TX, PinName RX, PinName CLR, int bps, int nM);
+
+ /* - Give direction and speed*/
+ void use(char direction, char speed);
+
+ protected:
+ Serial _serialMDSMC;
+ DigitalOut _CLR;
+ void reset();
+};
+typedef unsigned char BYTE;
+
+#endif
+
+/*example used to test the class
+
+#include "mbed.h"
+#include "MDSMC.h"
+
+MDSMC(USBTX,USBRX,p5);
+
+int main()
+{
+ MDSMC.init(1,9600);
+ wait(1);
+ MDSMC.use(Forward1, 80);
+ wait(1);
+ MDSMC.use(Reverse1, 80);
+ wait(2);
+ MDSMC.init(2,9600);
+ wait(1);
+ MDSMC.use(Forward2, 80);
+ wait(1);
+ MDSMC.use(Reverse2, 80);
+ wait(1);
+ MDSMC.use(Right, 50);
+ wait(1);
+ MDSMC.use(Left, 50);
+}
+*/
\ No newline at end of file