This Project has codes that may cnc controller possible. My cnc has 2 mechanical axis. I am monitoring through switches the axis limits. For this i use the library rtos. Enjoy.

Dependencies:   mbed-rtos mbed

Revision:
1:ef18c260ce02
Parent:
0:7cedfb720712
--- a/main.cpp	Wed Jun 07 13:31:02 2017 +0000
+++ b/main.cpp	Mon Sep 18 13:05:47 2017 +0000
@@ -4,8 +4,8 @@
 #include "EixoController.h"
 #include "EixoMonitoring.h" 
 
-#define LEFT  0
-#define RIGHT 1
+#define LEFT  1
+#define RIGHT 0
 #define FRONT 1
 #define BACK  0
 
@@ -14,78 +14,51 @@
 PinName dirPinX = p19;
 PinName enPinX  = p18;
 
-PinName clkPinZ = p17;
-PinName dirPinZ = p16;
-PinName enPinZ = p15;
-
-PinName swOrignX = p5;
+PinName swOrignX = p11;
 PinName swEndX   = p6;
 
-PinName swOrignZ = p7;
-PinName swEndZ   = p8;
+
+//PinName clkPinZ = p17;
+//PinName dirPinZ = p16;
+//PinName enPinZ = p15;
+
+//PinName swOrignZ = p7;
+//PinName swEndZ   = p8;
 // ============================================
 
-
 // =============== Pinos Swtches ===============
-DigitalIn swLeft(p5); //X0 --> origem
-DigitalIn swRight(p6); //X0 --> origem
-DigitalIn swBack(p7); //X0 --> origem
-DigitalIn swFront(p8); //X0 --> origem
-//DigitalIn swRight(p6);//Xf --> final
+DigitalIn swLeft(p11); //X0 --> origem
+DigitalIn swRight(p6); //Xf --> fim
+//DigitalIn swBack(p7); //Z0 --> origem
+//DigitalIn swFront(p8); //Zf --> fim
 // ============================================
 
-DigitalIn leituraOlimex(p21);
-Debug *debug = new Debug();
+Debug *debug  = new Debug();
 
 Stepp* motorX = new Stepp(clkPinX, dirPinX, enPinX);
-Stepp* motorZ = new Stepp(clkPinZ, dirPinZ, enPinZ);
-
-EixoController* eixoX = new EixoController( 49000, 38.10, motorX, swOrignX, swEndX);
-//EixoController* eixoZ = new EixoController( 14000, 9.00, motorZ,swOrignZ, swEndZ);//40.55
-EixoMonitoring*                 eixoMonitoring = new EixoMonitoring( swOrignX, swEndX) ;
+EixoController* eixoX = new EixoController( 55000, 14, motorX, swOrignX, swEndX);
+EixoMonitoring* eixoMonitoring = new EixoMonitoring( swOrignX, swEndX) ;
 
 // 0 - esquerda        1 - direita ---> Eixo X
 // 1 - frente          0 - trás    ---> Eixo Z
 // 1 - pressionado     0 - solto   ---> Switches
 
-
 int main() { 
 
+    
     bool teste = false;
-    bool start = true; // mudar p/false com o uso do olimex
-
-    if(start == true){
-
-            teste = eixoX->goToOrigem(swLeft , LEFT);
-            
-            EixoMonitoring::isCalibrated = false;           
-            eixoMonitoring->startThreads();
-            
-            if(teste == 1){// se está na origem    
-                    eixoX->calibragem(RIGHT);                   
-                  EixoMonitoring::isCalibrated = true;
-                  eixoMonitoring->hitSensor = 0;
-                    eixoMonitoring->stopAll = false;
-                    
+    teste = eixoX->goToOrigem(swLeft , LEFT);
+    
+    /*EixoMonitoring::isCalibrated = false;           
+    eixoMonitoring->startThreads();
+          
+    if(teste == 1){// se está na origem    
+         eixoX->calibragem(RIGHT);           
+         EixoMonitoring::isCalibrated = true;
+         eixoMonitoring->hitSensor = 0;
+         eixoMonitoring->stopAll = false;
+         eixoX->goToPosition(5,RIGHT);   
+    }
                 
-                    eixoX->goToPosition(17,RIGHT);
-                    
-            }
-    }
-        
-        eixoMonitoring->stopThreads();
-        
-        
-        /*
-    wait(0.5);
-    start = true; 
-    if(start == true){
-        teste = eixoZ->goToOrigem(swBack, FRONT);
-        if(teste == true){// se está na origem
-            eixoZ->calibragem(FRONT); 
-            eixoZ->goToPosition(3,FRONT);
-        }
-        }
-        */
-}
-
+     eixoMonitoring->stopThreads();                */
+}
\ No newline at end of file