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
SPM.cpp
00001 00002 #include "mbed.h" 00003 #include "SPM.h" 00004 00005 stepMotor::stepMotor(PinName pinName_A , PinName pinName_nA , PinName pinName_B , PinName pinName_nB) 00006 : pin_A(pinName_A) , pin_nA(pinName_nA) , pin_B(pinName_B) , pin_nB(pinName_nB) { 00007 00008 pin_A = pin_nA = pin_B = pin_nB = 0; 00009 state=0; 00010 00011 } 00012 00013 stepMotor::~stepMotor(){} 00014 00015 void stepMotor::oneStep(bool direction){ 00016 00017 #ifdef __P1_EXCITATION__ 00018 switch(state){ 00019 case 0 : pin_A = 1; pin_B = pin_nA = pin_nB = 0; break; 00020 case 1 : pin_B = 1; pin_nA = pin_nB = pin_A = 0; break; 00021 case 2 : pin_nA = 1; pin_nB = pin_A = pin_B = 0; break; 00022 case 3 : pin_nB = 1; pin_A = pin_B = pin_nA = 0; break; 00023 } 00024 if(direction){ 00025 if(state<3)state++; 00026 else state=0; 00027 }else{ 00028 if(state>0)state--; 00029 else state=3; 00030 } 00031 #elif defined __P12_EXCITATION__ 00032 switch(state){ 00033 case 0 : pin_A = 1; pin_B = pin_nA = pin_nB = 0; break; 00034 case 1 : pin_A = pin_B = 1; pin_nA = pin_nB = 0; break; 00035 case 2 : pin_B = 1; pin_nA = pin_nB = pin_A = 0; break; 00036 case 3 : pin_B = pin_nA = 1; pin_nB = pin_A = 0; break; 00037 case 4 : pin_nA = 1; pin_nB = pin_A = pin_B = 0; break; 00038 case 5 : pin_nA = pin_nB = 1; pin_A = pin_B = 0; break; 00039 case 6 : pin_nB = 1; pin_A = pin_B = pin_nA = 0; break; 00040 case 7 : pin_nB = pin_A = 1; pin_B = pin_nA = 0; break; 00041 } 00042 if(direction){ 00043 if(state<7)state++; 00044 else state=0; 00045 }else{ 00046 if(state>0)state--; 00047 else state=7; 00048 } 00049 #elif defined __P2_EXCITATION__ 00050 switch(state){ 00051 case 0 : pin_nB = pin_A = 1; pin_B = pin_nA = 0; break; 00052 case 1 : pin_A = pin_B = 1; pin_nA = pin_nB = 0; break; 00053 case 2 : pin_B = pin_nA = 1; pin_nB = pin_A = 0; break; 00054 case 3 : pin_nA = pin_nB = 1; pin_A = pin_B = 0; break; 00055 } 00056 if(direction){ 00057 if(state<3)state++; 00058 else state=0; 00059 }else{ 00060 if(state>0)state--; 00061 else state=3; 00062 } 00063 #endif 00064 00065 } 00066 00067 void stepMotor::free(){ 00068 pin_A = pin_nA = pin_B = pin_nB = 0; 00069 } 00070 00071 void stepMotor::lock(){ 00072 #ifdef __P1_EXCITATION__ 00073 switch(state){ 00074 case 0 : pin_A = 1; pin_B = pin_nA = pin_nB = 0; break; 00075 case 1 : pin_B = 1; pin_nA = pin_nB = pin_A = 0; break; 00076 case 2 : pin_nA = 1; pin_nB = pin_A = pin_B = 0; break; 00077 case 3 : pin_nB = 1; pin_A = pin_B = pin_nA = 0; break; 00078 } 00079 #elif defined __P12_EXCITATION__ 00080 switch(state){ 00081 case 0 : pin_A = 1; pin_B = pin_nA = pin_nB = 0; break; 00082 case 1 : pin_A = pin_B = 1; pin_nA = pin_nB = 0; break; 00083 case 2 : pin_B = 1; pin_nA = pin_nB = pin_A = 0; break; 00084 case 3 : pin_B = pin_nA = 1; pin_nB = pin_A = 0; break; 00085 case 4 : pin_nA = 1; pin_nB = pin_A = pin_B = 0; break; 00086 case 5 : pin_nA = pin_nB = 1; pin_A = pin_B = 0; break; 00087 case 6 : pin_nB = 1; pin_A = pin_B = pin_nA = 0; break; 00088 case 7 : pin_nB = pin_A = 1; pin_B = pin_nA = 0; break; 00089 } 00090 #elif defined __P2_EXCITATION__ 00091 switch(state){ 00092 case 0 : pin_nB = pin_A = 1; pin_B = pin_nA = 0; break; 00093 case 1 : pin_A = pin_B = 1; pin_nA = pin_nB = 0; break; 00094 case 2 : pin_B = pin_nA = 1; pin_nB = pin_A = 0; break; 00095 case 3 : pin_nA = pin_nB = 1; pin_A = pin_B = 0; break; 00096 } 00097 #endif 00098 } 00099 00100
Generated on Tue Aug 30 2022 11:26:51 by
1.7.2