ユニポーラステッピングモーター駆動用ライブラリ
Dependents: kisoken_PenPlotter
SPM.cpp
- Committer:
- Akito914
- Date:
- 2017-08-03
- Revision:
- 0:3e978f6d03d9
File content as of revision 0:3e978f6d03d9:
#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 }