Esta última actualización contiene el código funcional en las 10 funciones.

Dependencies:   mbed

Fork of jc by Sist. Piccolo

Revision:
2:773082426491
Parent:
1:a9b3fdab473e
Child:
3:c7e3f75d4f10
--- a/main.cpp	Tue Nov 21 20:05:14 2017 +0000
+++ b/main.cpp	Fri Nov 24 21:19:29 2017 +0000
@@ -1,6 +1,9 @@
+//---------------------------------LIBRERIAS--------------------------------------------
 #include "mbed.h"
 #include "math.h"
 #include "cstdlib"
+
+//--------------------------DECLARACON DE CONTANTES-------------------------------
 #define MAXPOS 255
 #define SS_TIME 500
 #define POSDRAW 300
@@ -10,16 +13,18 @@
 #define DEBUG 1
 #define BUFF_POS 6
  
+//--------------------------DECLARACION DE PUERTOS I/O---------------------------- 
 PwmOut myServoX(PB_3); //MOTOR EJE X
 PwmOut myServoY(PB_4); //MOTOR EJE Y
 PwmOut myServoZ(PB_10);//MOTOR EJE Z
 
+InterruptIn mybutton2(PA_0);
+InterruptIn mybutton(USER_BUTTON);
 Serial command(USBTX, USBRX); //COMUNICACION SERIAL
-Serial Sdebug(USBTX, USBRX);
+Serial Sdebug(USBTX, USBRX); 
 DigitalOut led(LED1);          //DECLARACION LED DE LA PLACA
-InterruptIn mybutton(USER_BUTTON); 
-
-// COMANDOS 
+ 
+//---------------------------DEFINICION COMANDOS POR CONSOLA---------------------- 
 #define LED 0
 #define PUNTO 1
 #define LINE 2
@@ -32,15 +37,18 @@
 #define HOME 9
 #define TIEMPO_DE_PASO 10
 
-Ticker ticker1;
-Timeout timeout;
+//--------------------------LLAMADO RUTINA DE INTERRUPCIONES----------------------
+//Ticker ticker1; //Variable para rutina de interupciones
+//Timeout timeout;//Llamado de variable por conteo para manejo de pausa
 
-int rap;
+//-------------------------VARIABLES GLOBALES-------------------------------------
+int rap;//Pendiente 
 int RSTEP = 5;
 double abajo=7;
 double arriba=0;
 double k,l,r,tp=50,paso=0;
 int p=0;
+uint8_t estado = 0;
 
 //*****************************************************************************
 //  COMANDO  MOVER MOTOR
@@ -52,13 +60,12 @@
 // <,> -> inicio,  y fin de comando 
 //  el inicio de comando no se almacena en el buffer
 //*****************************************************************************
-// VARIABLES PARA DEFINIR  EL  COMMANDO
 
+//--------------------------DETERMINACION TAMAÑO DE BUFFER------------------------
 uint8_t buffer_command[BUFF_SIZE]={0,0,0,0,0,0};
 float buffer_POS [BUFF_POS]= {0,0,0,0,0,0};
 
-void savep();
-void interrupcion();
+//--------------------FUNCIONES PARA COMANDO DE BUFFER----------------------------
 
 int coord2us(float coord)
     {
@@ -123,7 +130,10 @@
     uint8_t SSTIME = 100;  
 void tiempo_de_paso(int SST) 
     {
-    SSTIME=SST;     
+   
+   
+//-------------------------CONFIURACION SSTIME/VERTEX-----------------------------
+     SSTIME=SST;     
     #if DEBUG
     command.printf("\nTiempo en pasos definida en:%i\n",SSTIME);
     #endif              
@@ -139,11 +149,12 @@
         wait_ms(SSTIME);
     }
 
+//--------------------------DECLARACION MEMORIA DE SERVOS-------------------------
 uint8_t  posx_old=0;     // posición anterior del eje X
 uint8_t  posy_old=0;     // posición anterior del eje Y
 uint8_t  posz_old=0;     // posición anterior del eje Y
 uint8_t  ss_time=100;     // tiempo  de espera para moverse 1 mm en microsegundos
- 
+//-------------------------VARIABLES SSTIME/RESOLUCION----------------------------
 void put_sstime(uint8_t vtime){
     ss_time=vtime;
     }
@@ -174,6 +185,8 @@
     command.printf("Resolucion definida en = %i \n", RSTEP);
     #endif
     }
+    
+//---------------------------------FUNCION HOME-----------------------------------
 void home()
     {
         vertex2d(0,0,0);
@@ -183,6 +196,8 @@
     {
         vertex2d(250,250,150);
     }
+    
+//---------------------------------FUNCION DOT-----------------------------------
 void punto(uint8_t x, uint8_t y)
   {  
     command.printf("Coord x= %i, coord y=%i \n",x,y);
@@ -195,6 +210,8 @@
     home();
   }   
   
+  
+//------------------------------FUNCION LINE--------------------------------------
 void line(float xi, float xf, float yi, float yf)
     {
  // los parametros son coordenadas iniciales  y finales de la linea en milimetros   
@@ -212,8 +229,6 @@
             {
                 yp =m*xp+b;
                 vertex2d(xp,yp,abajo);
-               savep();
-                
          #if DEBUG
             Sdebug.printf("coord X = %f,coord Y = %f \n", xp,yp);
          #endif
@@ -221,6 +236,8 @@
         nodraw();
         home();
     } 
+    
+//-----------------------------FUNCION RECTANGULO---------------------------------    
  void rectangle(uint8_t xi, uint8_t yi,uint8_t a, uint8_t h)
 {
  int x,y;
@@ -241,6 +258,8 @@
  wait_ms(600);
  home();
  }
+ 
+ //-----------------------------FUNCION CIRCULO-----------------------------------
  void circle(uint8_t x1, uint8_t y1,uint8_t r)
   {
   double  x2,y2,i,j;
@@ -302,36 +321,27 @@
     }
     home();
     }
-    
-    
-    
-    void savep(){
-         for (uint8_t i=0; i<BUFF_POS;i++)
-        {
-            buffer_command[i]=command.getc();
-        
-        }
         
         }
-        
+//-------------------------------FUNCION REANUDAR---------------------------------
     void reanudar(){
-        led =0;
-        p=0;
         
-        
+        command.printf("piccolo reanudando \n");
+        wait (1);
+        return;
+    
         }
-        
-    
+//------------------------------FUNCION PAUSA------------------------------------        
 void pause(){
        
-       timeout.attach(&pause, 0.5);                            
+       led = !led;                            
+       command.printf("piccolo en pausa \n");
        wait (5);
-           
-    
-    
-    
+       return; 
+       
     }
-            
+       
+//-------------------------------FUNCION PARE-------------------------------------            
 void stop() //Funcion para detener el programa  
     {
     exit(0);
@@ -340,6 +350,8 @@
 
 void command_exe()
     {
+        
+//-------------------------ASIGNACION EN SWTICH CASE------------------------------        
         #if DEBUG
             command.printf("Ejecutando comando: ");
         #endif  
@@ -430,15 +442,33 @@
         }
 }
 
-
-    void interrupcion(){
+//--------------------------***PENDIENTE***---------------------------------------
+    void Rx_interrupcion(){
+        
+        char p = command.getc();
+    
+        command.printf("picolo en pausa %c\n",p);
+      wait_ms(2000);
+     return ;
+           
+        }    
+        
+    
+//----------------------------------MAIN DE PROGRAMA------------------------------
+int main() {
+    #if DEBUG
+    command.printf("inicio con debug\n");
+    #else
+    command.printf("inicio sin debug\n");
+    #endif
          uint8_t val;
    // mybutton.rise(&stop);
     while(1){
     val=command.getc();
         if (val== '<'){
             Read_command();
-            mybutton.rise(&pause);
+            mybutton.fall(&pause);
+            mybutton.rise(&reanudar);
             if (check_command()){
                 command_exe();
             }
@@ -457,24 +487,7 @@
         
            }
           }
-        }
-
-
-    
-        
-     
-     
-
-int main() {
-    #if DEBUG
-    command.printf("inicio con debug\n");
-    #else
-    command.printf("inicio sin debug\n");
-    #endif
-    ticker1.attach(&interrupcion,0.5);
-    for(;;);
-                
-                
+                     
             }