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.
Dependencies: mbed mbed-rtos TextLCD
Stepper_Motor/STEPPER_MOTOR.cpp
- Committer:
- thomasmorris
- Date:
- 2019-02-12
- Revision:
- 18:3523660f3930
- Parent:
- 17:68b3fdabe4c5
- Child:
- 19:384642f39496
File content as of revision 18:3523660f3930:
#include "mbed.h" //Include the mbed libraries
#include "STEPPER_MOTOR.hpp" //Include the header file, this acts like a series of forward declarations
//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
float STEPPER_MOTOR::Get_Turns()
{
return (_Steps_Done /50);
}
void STEPPER_MOTOR::Rotate_Steps(int Steps)
{
#define STIME 1000
Steps = Steps*50;
//int correctionfactor;
//int timeofturn=correctinfactor*speed;
_Steps_Done = 0;
//int mystep=0;
//printf("START!!! step value is=%d\n\r",mystep);
for(int x =0 ; x <= Steps; x++)
{
//printf("FOR LOOP! step value is=%d %d\n\r",mystep,x);
this->pin1 = 0;
this->pin2 = 1;
this->pin3 = 0;
this->pin4 = 1;
//mystep=1;
wait_us(1000);
//printf("FOR LOOP! step value is=%d %d\n\r",mystep,x);
this->pin1 = 0;
this->pin2 = 1;
this->pin3 = 1;
this->pin4 = 0;
//mystep=2;
wait_us(1000);
//printf("FOR LOOP! step value is=%d %d\n\r",mystep,x);
this->pin1 = 1;
this->pin2 = 0;
this->pin3 = 1;
this->pin4 = 0;
//mystep=3;
wait_us(1000);
//printf("FOR LOOP! step value is=%d %d\n\r",mystep,x);
this->pin1 = 1;
this->pin2 = 0;
this->pin3 = 0;
this->pin4 = 1;
//mystep=4;
wait_us(1000);
_Steps_Done = _Steps_Done +1;
/* printf("FOR LOOP! step value is=%d %d\n\r",mystep,x);
this->pin1 = 0;
this->pin2 = 1;
this->pin3 = 0;
this->pin4 = 0;
mystep=5;
wait_ms(0.6);
printf("FOR LOOP! step value is=%d %d\n\r",mystep,x);
this->pin1 = 1;
this->pin2 = 1;
this->pin3 = 0;
this->pin4 = 0;
mystep=6;
wait_ms(0.6);
printf("FOR LOOP! step value is=%d %d\n\r",mystep,x);
this->pin1 = 1;
this->pin2 = 0;
this->pin3 = 0;
this->pin4 = 0;
mystep=7;
wait_ms(0.6);
this->pin1 = 1;
this->pin2 = 0;
this->pin3 = 0;
this->pin4 = 1;
mystep=0;
wait_ms(0.6);
this->pin1 = 0;
this->pin2 = 0;
this->pin3 = 0;
this->pin4 = 0;
mystep=0;
wait_ms(0.6);*/
}
this->pin1 = 0;
this->pin2 = 0;
this->pin3 = 0;
this->pin4 = 0;
}
/*
switch(mystep){
case 0:{
break;
case 1:{
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
default:
break;
}
if(_dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
*/
//wait_ms(1);
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);
}