final nnnn

Dependencies:   mbed

Este proyecto es un Piccolo en el cual se envía comandos para la realización de un dibujo en especifico. El programa va a controlar servos y motores paso a paso teniendo libertad de movimiento en los ejes X,Y,Z; En el programa se utiliza Comunicacion Serial (TX,RX) y para leer el dato fue necesario concatenarlo debido a que recibe 8 Bits pero tenemos que recibir 4 paquetes de 8 Bits para llegar a 32 Bits y poder asi leerlo.

Se estan implementando algunas librerias para su ejecucion como la #include "memory.h" que es de memoria, #include memory_array_h, tambien definimos la memoria #define mm_size 10 de tipo Type Uint32_t, la libreria de operaciones #include "math.h" y la libreria para los motores #include "stepmotor.h".

Para su ejecucion se crearon variables de ejecucion:

CM_DRAWING 0XFF: Se ejecuta siempre y cuando exista datos validos para leer de memoria y nos muestra por medio de un mensaje que se esta ejecutando el dibujo

CM_SAVING 0XFE: Inicia el comando de guardar

CM_VERTEX2D 0XFD: Se encarga de dar las coordenadas a los servomotores en X,Y.

CM_DRAW 0XFC: Se encarga de mover nuestro motor en Z

CM_NODRAW 0XFB: Su funcion es volver a la posicion inicial el motor en el eje Z

CM_MOTOR 0XF9: Se encarga de mover los motores paso a paso para llegar a la ubicacion asignada ingresando el Numero de cuadrantes y su sentido de giro.

Revision:
1:6ed951d975cc
Parent:
0:0119b611fc51
Child:
2:14fcd29abee0
--- a/main.cpp	Wed Apr 11 02:19:13 2018 +0000
+++ b/main.cpp	Fri Apr 20 00:56:27 2018 +0000
@@ -1,21 +1,10 @@
 #include "mbed.h" 
 #include "main.h" 
 #include "stepmotor.h" 
- 
-/*
-El sitema tiene tres estados:
-1. Standby: estado que indica que esta en espera de un telecomando (Ejecutar 0 guardar)
-2. Drawing: estado en donde el piccolo eejecuta las ordenes giardadas en el array 
-            de memora hasta encontrar el comando CM_STOP 
-3. Saving:  estado donde el sistema recibe lso datos y lso almacena en memoria acorde 
-            a los comandos de 0xfd, oxfc, 0xfb,0cfa, se sake de este modo cuado se recibe
-            el comando CM_STOP
-            
-todo telecomando debe finalizar con el dato CM_END
-*/
- 
- 
+  
 Serial command(USBTX, USBRX);
+stepmotor smotor1(D9,D10,D11,D12);
+
  
  
  
@@ -53,7 +42,7 @@
    
     uint32_t val=0;
     uint8_t  cnt=0;
-    
+      
     char endc=command.getc();
     
     while(endc != CM_END && cnt <4) {
@@ -85,6 +74,7 @@
     while(error==0){
         error = mem_get(&dato);
         if (error==0) {
+            
             switch (dato) {
             case  CM_DRAW: 
                     debug_m("-> Baja Z\n");
@@ -94,20 +84,24 @@
                     debug_m("-> Sube Z\n");
                     nodraw();
                     break ;     
-            case spetmotor:  
+            
+              
                 
-                if (steepmotor==x){ 
-                steepmotor=steepmotor*4096*cw; 
-                }
-                
-                int y      = (uint8_t)(dato);
-                int x      = (uint8_t)(dato>>8);
+             default:  
+                int y  = (uint8_t)(dato);
+                int x  = (uint8_t)(dato>>8);
                 char ncomm  = (uint8_t)(dato>>16);
-                
+                               
                 if (ncomm == CM_VERTEX2D) {
                     debug_m("-> Mover piccolo x a %d y y a %d \n",x,x, y);
                     vertex2d(x,y);
-                }else
+                    
+                }else if (ncomm == CM_MOTOR){
+                    debug_m("-> mover motor paso a paso en x \n");
+                    
+                    smotor1.step(x*4096,(bool) y);
+                    }
+                    
                     debug_m("-> ERROR DE COMMANDO: %d %d %d \n " ,ncomm,x,y,y);
                 break;   
              }