Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: kisoken_PenPlotter
Revision 0:3e978f6d03d9, committed 2017-08-03
- Comitter:
- Akito914
- Date:
- Thu Aug 03 06:49:26 2017 +0000
- Commit message:
- 1,1-2,2?????????; ????????????
Changed in this revision
| SPM.cpp | Show annotated file Show diff for this revision Revisions of this file |
| SPM.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SPM.cpp Thu Aug 03 06:49:26 2017 +0000
@@ -0,0 +1,100 @@
+
+#include "mbed.h"
+#include "SPM.h"
+
+stepMotor::stepMotor(PinName pinName_A , PinName pinName_nA , PinName pinName_B , PinName pinName_nB)
+ : pin_A(pinName_A) , pin_nA(pinName_nA) , pin_B(pinName_B) , pin_nB(pinName_nB) {
+
+ pin_A = pin_nA = pin_B = pin_nB = 0;
+ state=0;
+
+}
+
+stepMotor::~stepMotor(){}
+
+void stepMotor::oneStep(bool direction){
+
+#ifdef __P1_EXCITATION__
+ switch(state){
+ case 0 : pin_A = 1; pin_B = pin_nA = pin_nB = 0; break;
+ case 1 : pin_B = 1; pin_nA = pin_nB = pin_A = 0; break;
+ case 2 : pin_nA = 1; pin_nB = pin_A = pin_B = 0; break;
+ case 3 : pin_nB = 1; pin_A = pin_B = pin_nA = 0; break;
+ }
+ if(direction){
+ if(state<3)state++;
+ else state=0;
+ }else{
+ if(state>0)state--;
+ else state=3;
+ }
+#elif defined __P12_EXCITATION__
+ switch(state){
+ case 0 : pin_A = 1; pin_B = pin_nA = pin_nB = 0; break;
+ case 1 : pin_A = pin_B = 1; pin_nA = pin_nB = 0; break;
+ case 2 : pin_B = 1; pin_nA = pin_nB = pin_A = 0; break;
+ case 3 : pin_B = pin_nA = 1; pin_nB = pin_A = 0; break;
+ case 4 : pin_nA = 1; pin_nB = pin_A = pin_B = 0; break;
+ case 5 : pin_nA = pin_nB = 1; pin_A = pin_B = 0; break;
+ case 6 : pin_nB = 1; pin_A = pin_B = pin_nA = 0; break;
+ case 7 : pin_nB = pin_A = 1; pin_B = pin_nA = 0; break;
+ }
+ if(direction){
+ if(state<7)state++;
+ else state=0;
+ }else{
+ if(state>0)state--;
+ else state=7;
+ }
+#elif defined __P2_EXCITATION__
+ switch(state){
+ case 0 : pin_nB = pin_A = 1; pin_B = pin_nA = 0; break;
+ case 1 : pin_A = pin_B = 1; pin_nA = pin_nB = 0; break;
+ case 2 : pin_B = pin_nA = 1; pin_nB = pin_A = 0; break;
+ case 3 : pin_nA = pin_nB = 1; pin_A = pin_B = 0; break;
+ }
+ if(direction){
+ if(state<3)state++;
+ else state=0;
+ }else{
+ if(state>0)state--;
+ else state=3;
+ }
+#endif
+
+}
+
+void stepMotor::free(){
+ pin_A = pin_nA = pin_B = pin_nB = 0;
+}
+
+void stepMotor::lock(){
+ #ifdef __P1_EXCITATION__
+ switch(state){
+ case 0 : pin_A = 1; pin_B = pin_nA = pin_nB = 0; break;
+ case 1 : pin_B = 1; pin_nA = pin_nB = pin_A = 0; break;
+ case 2 : pin_nA = 1; pin_nB = pin_A = pin_B = 0; break;
+ case 3 : pin_nB = 1; pin_A = pin_B = pin_nA = 0; break;
+ }
+#elif defined __P12_EXCITATION__
+ switch(state){
+ case 0 : pin_A = 1; pin_B = pin_nA = pin_nB = 0; break;
+ case 1 : pin_A = pin_B = 1; pin_nA = pin_nB = 0; break;
+ case 2 : pin_B = 1; pin_nA = pin_nB = pin_A = 0; break;
+ case 3 : pin_B = pin_nA = 1; pin_nB = pin_A = 0; break;
+ case 4 : pin_nA = 1; pin_nB = pin_A = pin_B = 0; break;
+ case 5 : pin_nA = pin_nB = 1; pin_A = pin_B = 0; break;
+ case 6 : pin_nB = 1; pin_A = pin_B = pin_nA = 0; break;
+ case 7 : pin_nB = pin_A = 1; pin_B = pin_nA = 0; break;
+ }
+#elif defined __P2_EXCITATION__
+ switch(state){
+ case 0 : pin_nB = pin_A = 1; pin_B = pin_nA = 0; break;
+ case 1 : pin_A = pin_B = 1; pin_nA = pin_nB = 0; break;
+ case 2 : pin_B = pin_nA = 1; pin_nB = pin_A = 0; break;
+ case 3 : pin_nA = pin_nB = 1; pin_A = pin_B = 0; break;
+ }
+#endif
+}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SPM.h Thu Aug 03 06:49:26 2017 +0000
@@ -0,0 +1,39 @@
+
+#ifndef __SPM_H__
+#define __SPM_H__
+
+#include "mbed.h"
+
+
+//#define __P1_EXCITATION__
+#define __P12_EXCITATION__
+//#define __P2_EXCITATION__
+
+
+class stepMotor{
+
+public:
+
+ stepMotor(PinName pinName_A , PinName pinName_nA , PinName pinName_B , PinName pinName_nB);
+
+ ~stepMotor();
+
+ void oneStep(bool direction);
+
+ void free();
+
+ void lock();
+
+private:
+
+ DigitalOut pin_A;
+ DigitalOut pin_nA;
+ DigitalOut pin_B;
+ DigitalOut pin_nB;
+
+ int state;
+
+};
+
+
+#endif
\ No newline at end of file