Testing 1 blue pill
Dependencies: mbed mbed-rtos TextLCD
Stepper_Motor/STEPPER_MOTOR.cpp
- Committer:
- thomasmorris
- Date:
- 2019-03-13
- Revision:
- 29:f3b1387c81f1
- Parent:
- 28:3193157ebb0c
- Child:
- 30:a35f0ab97a65
File content as of revision 29:f3b1387c81f1:
#include "mbed.h" //Include the mbed libraries #include "STEPPER_MOTOR.hpp" //Include the header file, this acts like a series of forward declarations int loop_wait_time = 0; //Constructor STEPPER_MOTOR::STEPPER_MOTOR(PinName N1, PinName N2, PinName N3, PinName N4) : pin1(N1),pin2(N2),pin3(N3),pin4(N4) { _dir = true; _step = 0; } STEPPER_MOTOR::~STEPPER_MOTOR(){} //Destructor void STEPPER_MOTOR::Pause_Code() { _Pause_Code = 1; } void STEPPER_MOTOR::Unpause_Code() { _Pause_Code = 0; } float STEPPER_MOTOR::Get_Turns() { return (_Steps_Done /50); } void STEPPER_MOTOR::Rotate_Steps(int Steps,int Function,bool Direction) { if(Function == 2)//Coiling { loop_wait_time = 2; } else if(Function == 3) { loop_wait_time = 2;//Twisting } Steps = Steps*50;//int correctionfactor;//int timeofturn=correctinfactor*speed; _Steps_Done = 0; for(int x =0 ; x <= Steps; x++) { if(_Pause_Code == 0) { if(Direction == 0) { this->pin1 = 0; this->pin2 = 1; this->pin3 = 0; this->pin4 = 1; Thread::wait(loop_wait_time); this->pin1 = 0; this->pin2 = 1; this->pin3 = 1; this->pin4 = 0; Thread::wait(loop_wait_time); this->pin1 = 1; this->pin2 = 0; this->pin3 = 1; this->pin4 = 0; Thread::wait(loop_wait_time); this->pin1 = 1; this->pin2 = 0; this->pin3 = 0; this->pin4 = 1; } else if (Direction == 1) { this->pin1 = 1; this->pin2 = 0; this->pin3 = 0; this->pin4 = 1; Thread::wait(loop_wait_time); this->pin1 = 1; this->pin2 = 0; this->pin3 = 1; this->pin4 = 0; Thread::wait(loop_wait_time); this->pin1 = 0; this->pin2 = 1; this->pin3 = 1; this->pin4 = 0; Thread::wait(loop_wait_time); this->pin1 = 0; this->pin2 = 1; this->pin3 = 0; this->pin4 = 1; Thread::wait(loop_wait_time); } Thread::wait(loop_wait_time); _Steps_Done = _Steps_Done +1; } else if (_Pause_Code == 1) { printf("Stepper motor code paused\n"); while(_Pause_Code == 1) { Thread::wait(1); } } }//End of for loop this->pin1 = 0; this->pin2 = 0; this->pin3 = 0; this->pin4 = 0; } void STEPPER_MOTOR::Permanent_Rotate_clock_wise() { switch(_step){ case 0: pin1 = 0; pin2 = 0; pin3 = 0; pin4 = 1; break; case 1: pin1 = 0; pin2 = 0; pin3 = 1; pin4 = 1; break; case 2: pin1 = 0; pin2 = 0; pin3 = 1; pin4 = 0; break; case 3: pin1 = 0; pin2 = 1; pin3 = 1; pin4 = 0; break; case 4: pin1 = 0; pin2 = 1; pin3 = 0; pin4 = 0; break; case 5: pin1 = 1; pin2 = 1; pin3 = 0; pin4 = 0; break; case 6: pin1 = 1; pin2 = 0; pin3 = 0; pin4 = 0; break; case 7: pin1 = 1; pin2 = 0; pin3 = 0; pin4 = 1; break; default: pin1 = 0; pin2 = 0; pin3 = 0; pin4 = 0; break; } if(_dir){ _step++; }else{ _step--; } if(_step>7){ _step=0; } if(_step<0){ _step=7; } } void STEPPER_MOTOR::Permanent_Rotate_anti_clock_wise() { //Rotate switch(_step){ case 0: pin1 = 1; pin2 = 0; pin3 = 0; pin4 = 1; break; case 1: pin1 = 1; pin2 = 0; pin3 = 0; pin4 = 0; break; case 2: pin1 = 1; pin2 = 1; pin3 = 0; pin4 = 0; break; case 3: pin1 = 0; pin2 = 1; pin3 = 0; pin4 = 0; break; case 4: pin1 = 0; pin2 = 1; pin3 = 1; pin4 = 0; break; case 5: pin1 = 0; pin2 = 0; pin3 = 1; pin4 = 0; break; case 6: pin1 = 0; pin2 = 0; pin3 = 1; pin4 = 1; break; case 7: pin1 = 0; pin2 = 0; pin3 = 0; pin4 = 1; break; default: pin1 = 0; pin2 = 0; pin3 = 0; pin4 = 0; break; } if(_dir){ _step++; }else{ _step--; } if(_step>7){ _step=0; } if(_step<0){ _step=7; } //wait_ms(1); }