Engine control program with 3 engines Needs to make a case for each simultaneous engine setting, because of the WAIT after each number of bits have been sent.

Dependencies:   mbed-rtos mbed PinDetect

Fork of FinalMotorControl by Robot Bachelor

Revision:
29:00f839aad30e
Parent:
28:dac262b7ab32
Child:
30:fac5b5624fe3
--- a/main.cpp	Thu Jun 02 07:53:41 2016 +0000
+++ b/main.cpp	Thu Jul 07 08:53:21 2016 +0000
@@ -47,6 +47,7 @@
 static bool e2 = true;
 static bool e3 = true;
 static bool rest = false;
+static int i = 0;
 
 static int steps1 = 0;
 static int steps2 = 0;
@@ -481,9 +482,9 @@
     {
         e1 = false;
         
-        speed = 2000;
+        speed = 1000;
         Thread::wait(1000);
-        int stepsToCenter = 242;
+        int stepsToCenter = i/2;
                     
         while (stepsToCenter >= 0)
         {
@@ -505,9 +506,9 @@
         e1 = false;
         //m_cmd = 'x';
     
-        speed = 2000;
+        speed = 1000;
         Thread::wait(1000);
-        int stepsToCenter = 242;
+        int stepsToCenter = i/2;
                     
         while (stepsToCenter >= 0)
         {
@@ -525,9 +526,9 @@
     {
         e2 = false;
         //m_cmd = 'x';
-        speed = 2000;
+        speed = 1000;
         Thread::wait(1000);
-        int stepsToCenter = 242;
+        int stepsToCenter = i/2;
                     
         while (stepsToCenter >= 0)
         {
@@ -547,9 +548,9 @@
     {
         e2 = false;
         //m_cmd = 'x';
-        speed = 2000;
+        speed = 1000;
         Thread::wait(1000);
-        int stepsToCenter = 242;
+        int stepsToCenter = i/2;
                     
         while (stepsToCenter >= 0)
         {
@@ -570,9 +571,9 @@
     {
         e3 = false;
         //m_cmd = 'x';
-        speed = 2500;
+        speed = 1000;
         Thread::wait(1000);
-        int stepsToCenter = 200;
+        int stepsToCenter = i/2;
                     
         while (stepsToCenter >= 0)
         {
@@ -593,9 +594,9 @@
     {
         e3 = false;
         //m_cmd = 'x';
-        speed = 2000;
+        speed = 1000;
         Thread::wait(1000);
-        int stepsToCenter = 280;
+        int stepsToCenter = i/2;
                     
         while (stepsToCenter >= 0)
         {
@@ -634,15 +635,26 @@
         while (true)
         {
 
-
+/*
             while(bootStep1 >= 0)
             {
                 bootStep1--;
                 stepEngine1Right();   
-            }
+            } */
             stepEngine1Left();
             if (e1 == false) 
             {
+                e1 = true;
+                while(true)
+                {
+                    
+                    stepEngine1Right(); 
+                    i++;
+                    if(e1 == false)
+                    break;
+    
+                }
+
                 Thread::wait(1000);
                 break; 
             }//end if
@@ -658,17 +670,27 @@
         while (true)
         {
             
-            speed = 2000;
-            while(bootStep2 >= 0)
+            speed = 1000;
+      /*      while(bootStep2 >= 0)
             {
                 bootStep2--;
                 stepEngine2Right();
                 
-            }
+            } */
 
             stepEngine2Left();
             if (e2 == false) 
             {
+                e2 = true;
+                while(true)
+                {
+                    
+                    stepEngine2Right(); 
+                    i++;
+                    if(e2 == false)
+                    break;
+    
+                }            
                 
                 Thread::wait(1000);
                 break;
@@ -682,17 +704,27 @@
         while (true)
         {
             //speed = 2000;
-            while(bootStep3 >= 0)
+      /*      while(bootStep3 >= 0)
             {
                 bootStep3--;
                 stepEngine3Right();
                 
-            }
+            } */
             stepEngine3Left();
             if (e3 == false) 
             {
+                e3 = true;
+                while(true)
+                {
+                    
+                    stepEngine3Right(); 
+                    i++;
+                    if(e3 == false)
+                    break;
+    
+                }
                 //pc.printf("HALLO");
-                m_cmd = "z";
+                m_cmd = 'z';
                 Thread::wait(1000);
                 break;
             }//end if
@@ -706,12 +738,12 @@
             if(SW==1)
             {
                 //put engines to sleep
-                m_cmd ="z";
+                m_cmd ='z';
                 
                 
             }
             //set the speed. Higher = slower
-            speed = 2000;
+            speed = 1000;
             //speed = 1500;
 
             switch (m_cmd)
@@ -901,8 +933,6 @@
                 
             }
 
-
-
         //Thread::wait(10);
         //pc.printf("%d", steps2);