Test
Revision 0:5ec996c00568, committed 2021-01-11
- Comitter:
- fermedicius
- Date:
- Mon Jan 11 10:56:36 2021 +0000
- Commit message:
- Test
Changed in this revision
FermeStepper.cpp | Show annotated file Show diff for this revision Revisions of this file |
FermeStepper.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 5ec996c00568 FermeStepper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FermeStepper.cpp Mon Jan 11 10:56:36 2021 +0000 @@ -0,0 +1,573 @@ +#include "FermeStepper.h" + +#include "mbed.h" + +int fermemotorSpeed; // Stepper speed + +fermeMotor::fermeMotor(PinName A0, PinName A1, PinName A2, PinName A3, PinName B0, PinName B1, PinName B2, PinName B3) : _A0(A0), _A1(A1), _A2(A2), _A3(A3), _B0(B0), _B1(B1), _B2(B2), _B3(B3) { // Defenition of motor pins + _A0=0; // recepticle conveyor Pin 1 + _A1=0; // recepticle conveyor Pin 2 + _A2=0; // recepticle conveyor Pin 3 + _A3=0; // recepticle conveyor Pin 4 + _B0=0; // microtrack conveyor Pin 1 + _B1=0; // microtrack conveyor Pin 2 + _B2=0; // microtrack conveyor Pin 3 + _B3=0; // microtrack conveyor Pin 4 +} + +void fermeMotor::anticlockwise(int flag1, int flag2, int motorspeed) // flag1 for recepticle conveyor, flag2 for microtrack conveyor +{ + for(int i = 0; i<8; i++) + { + if(flag1 == 1) + { + switch(i) + { + case 0: + _A0=0; + _A1=0; + _A2=1; + _A3=0; + break; + + case 1: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 2: + _A0=0; + _A1=0; + _A2=0; + _A3=1; + break; + + case 3: + _A0=0; + _A1=1; + _A2=0; + _A3=1; + break; + + case 4: + _A0=0; + _A1=1; + _A2=1; + _A3=1; + break; + + case 5: + _A0=1; + _A1=1; + _A2=1; + _A3=1; + break; + + case 6: + _A0=1; + _A1=0; + _A2=1; + _A3=1; + break; + + case 7: + _A0=1; + _A1=0; + _A2=1; + _A3=0; + break; + } + wait_us(motorspeed); // wait time defines the speed + } + + else if(flag1 == 0) + { + switch(i) + { + case 0: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 1: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 2: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 3: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 4: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 5: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 6: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 7: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + } + wait_us(motorspeed); // wait time defines the speed + } + + if(flag2 == 1) + { + switch(i) + { + case 0: + _B0=1; + _B1=0; + _B2=0; + _B3=1; + break; + + case 1: + _B0=1; + _B1=0; + _B2=0; + _B3=0; + break; + + case 2: + _B0=1; + _B1=1; + _B2=0; + _B3=0; + break; + + case 3: + _B0=0; + _B1=1; + _B2=0; + _B3=0; + break; + + case 4: + _B0=0; + _B1=1; + _B2=1; + _B3=0; + break; + + case 5: + _B0=0; + _B1=0; + _B2=1; + _B3=0; + break; + + case 6: + _B0=0; + _B1=0; + _B2=1; + _B3=1; + break; + + case 7: + _B0=0; + _B1=0; + _B2=0; + _B3=1; + break; + } + wait_us(motorspeed); // wait time defines the speed + } + + else if(flag2 == 0) + { + switch(i) + { + case 0: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 1: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 2: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 3: + + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 4: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 5: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 6: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 7: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + } + wait_us(motorspeed); // wait time defines the speed + } + } +} + +void fermeMotor::clockwise(int flag1, int flag2, int motorspeed) +{ + for (int i = 7; i >= 0; i--) + { + if(flag1 == 1) + { + switch(i) + { + case 0: + _A0=0; + _A1=0; + _A2=0; + _A3=1; + break; + + case 1: + _A0=0; + _A1=0; + _A2=1; + _A3=1; + break; + + case 2: + _A0=0; + _A1=0; + _A2=1; + _A3=0; + break; + + case 3: + _A0=0; + _A1=1; + _A2=1; + _A3=0; + break; + + case 4: + _A0=0; + _A1=1; + _A2=0; + _A3=0; + break; + + case 5: + _A0=1; + _A1=1; + _A2=0; + _A3=0; + break; + + case 6: + _A0=1; + _A1=0; + _A2=0; + _A3=0; + break; + + case 7: + _A0=1; + _A1=0; + _A2=0; + _A3=1; + break; + } + wait_us(motorspeed); // wait time defines the speed + } + + else if(flag1 == 0) + { + switch(i) + { + case 0: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 1: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 2: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 3: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 4: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 5: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 6: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + + case 7: + _A0=0; + _A1=0; + _A2=0; + _A3=0; + break; + } + wait_us(motorspeed); // wait time defines the speed + } + + if(flag2 == 1) + { + switch(i) + { + case 0: + _B0=1; + _B1=0; + _B2=1; + _B3=0; + break; + + case 1: + _B0=1; + _B1=0; + _B2=1; + _B3=1; + break; + + case 2: + _B0=1; + _B1=1; + _B2=1; + _B3=1; + break; + + case 3: + _B0=0; + _B1=1; + _B2=1; + _B3=1; + break; + + case 4: + _B0=0; + _B1=1; + _B2=0; + _B3=1; + break; + + case 5: + _B0=0; + _B1=0; + _B2=0; + _B3=1; + break; + + case 6: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 7: + _B0=0; + _B1=0; + _B2=1; + _B3=0; + break; + } + wait_us(motorspeed); // wait time defines the speed + } + + else if(flag2 == 0) + { + switch(i) + { + case 0: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 1: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 2: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 3: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 4: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 5: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 6: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + + case 7: + _B0=0; + _B1=0; + _B2=0; + _B3=0; + break; + } + wait_us(motorspeed); // wait time defines the speed + } + } +} + +void fermeMotor::fstep(int num_stepsA, int num_stepsB, int direction, int speed) +{ + int count=0; // initalize step count + fermemotorSpeed=speed; //set motor speed + int num_steps = (num_stepsA > num_stepsB) ? num_stepsA : num_stepsB; + int flagA = 0; + int flagB = 0; + if (direction==0) // turn clockwise + { + do { + if(count < num_stepsA) flagA=1; + else flagA=0; + if(count < num_stepsB) flagB=1; + else flagB=0; + clockwise(flagA, flagB, fermemotorSpeed); + count++; + } while (count < num_steps); // turn number of steps applied + } + + else if (direction==1)// turn anticlockwise: default direction for recepticle and microtrack conveyor to go forward + { + count=0; + do + { + if(count < num_stepsA) flagA=1; + else flagA=0; + if(count<num_stepsB) flagB=1; + else flagB=0; + anticlockwise(flagA, flagB, fermemotorSpeed); + count++; + } while (count < num_steps);// turn number of steps applied + } +} + +/* The 2 stepper motors, recepticle and microtrack run in different directions in JuiceWorks machine. +The direction of the recepticle stepper motor is anticlockwise (i.e. direction = 1) and the direction of the microtrack stepper motor is clockwise (i.e. direction = 0). +Thus here in the function fermeMotor, direction = 1 is send as an default argument. This indicates that the the recepticle conveyor will move forward (anticlockwisse direction = 1) +and the microtrack stepper will move forward in the clockwise direction = 0. +*/ \ No newline at end of file
diff -r 000000000000 -r 5ec996c00568 FermeStepper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FermeStepper.h Mon Jan 11 10:56:36 2021 +0000 @@ -0,0 +1,29 @@ +#ifndef FERMESTEPPER_H +#define FERMESTEPPER_H + +#include "mbed.h" + +class fermeMotor { +public: + + fermeMotor(PinName A0,PinName A1, PinName A2, PinName A3, PinName B0,PinName B1, PinName B2, PinName B3); //motor constructor + + void fstep(int num_stepsA, int num_stepsB, int directionA, int speed); + void anticlockwise(int flagA, int flagB, int motorSpeed); + void clockwise(int flagA, int flagB, int motorSpeed); + + +private: + + DigitalOut _A0; + DigitalOut _A1; + DigitalOut _A2; + DigitalOut _A3; + DigitalOut _B0; + DigitalOut _B1; + DigitalOut _B2; + DigitalOut _B3; + +}; + +#endif \ No newline at end of file