Test

Files at this revision

API Documentation at this revision

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
--- /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
--- /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