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

Dependencies:   mbed

Fork of jc by Sist. Piccolo

Committer:
jonnas58328
Date:
Fri Nov 24 23:09:23 2017 +0000
Revision:
3:c7e3f75d4f10
Parent:
2:773082426491
Last Update 24.11.17;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
VaLaraC 2:773082426491 1 //---------------------------------LIBRERIAS--------------------------------------------
VaLaraC 0:9aa960516df7 2 #include "mbed.h"
VaLaraC 0:9aa960516df7 3 #include "math.h"
VaLaraC 0:9aa960516df7 4 #include "cstdlib"
jonnas58328 3:c7e3f75d4f10 5 #include "InterruptIn.h"
VaLaraC 2:773082426491 6
VaLaraC 2:773082426491 7 //--------------------------DECLARACON DE CONTANTES-------------------------------
VaLaraC 0:9aa960516df7 8 #define MAXPOS 255
VaLaraC 0:9aa960516df7 9 #define SS_TIME 500
VaLaraC 0:9aa960516df7 10 #define POSDRAW 300
VaLaraC 0:9aa960516df7 11 #define BUFF_SIZE 6
VaLaraC 0:9aa960516df7 12 #define COMM_N 0
VaLaraC 0:9aa960516df7 13 #define INITPARAMETER 1
VaLaraC 0:9aa960516df7 14 #define DEBUG 1
VaLaraC 0:9aa960516df7 15 #define BUFF_POS 6
VaLaraC 0:9aa960516df7 16
VaLaraC 2:773082426491 17 //--------------------------DECLARACION DE PUERTOS I/O----------------------------
VaLaraC 0:9aa960516df7 18 PwmOut myServoX(PB_3); //MOTOR EJE X
VaLaraC 0:9aa960516df7 19 PwmOut myServoY(PB_4); //MOTOR EJE Y
VaLaraC 0:9aa960516df7 20 PwmOut myServoZ(PB_10);//MOTOR EJE Z
VaLaraC 0:9aa960516df7 21
jonnas58328 3:c7e3f75d4f10 22 InterruptIn boton(PC_0);
VaLaraC 2:773082426491 23 InterruptIn mybutton(USER_BUTTON);
VaLaraC 0:9aa960516df7 24 Serial command(USBTX, USBRX); //COMUNICACION SERIAL
jonnas58328 3:c7e3f75d4f10 25 Serial Sdebug(USBTX, USBRX); //DEBUG SERIAL
VaLaraC 0:9aa960516df7 26 DigitalOut led(LED1); //DECLARACION LED DE LA PLACA
VaLaraC 2:773082426491 27
VaLaraC 2:773082426491 28 //---------------------------DEFINICION COMANDOS POR CONSOLA----------------------
VaLaraC 0:9aa960516df7 29 #define LED 0
VaLaraC 0:9aa960516df7 30 #define PUNTO 1
VaLaraC 0:9aa960516df7 31 #define LINE 2
VaLaraC 0:9aa960516df7 32 #define RECTANGLE 3
VaLaraC 0:9aa960516df7 33 #define CIRCLE 4
VaLaraC 0:9aa960516df7 34 #define STOP 5
VaLaraC 0:9aa960516df7 35 #define PAUSE 6
VaLaraC 0:9aa960516df7 36 #define REANUDAR 7
VaLaraC 0:9aa960516df7 37 #define RESOLUCION 8
VaLaraC 0:9aa960516df7 38 #define HOME 9
VaLaraC 0:9aa960516df7 39 #define TIEMPO_DE_PASO 10
VaLaraC 0:9aa960516df7 40
VaLaraC 2:773082426491 41 //--------------------------LLAMADO RUTINA DE INTERRUPCIONES----------------------
VaLaraC 2:773082426491 42 //Ticker ticker1; //Variable para rutina de interupciones
VaLaraC 2:773082426491 43 //Timeout timeout;//Llamado de variable por conteo para manejo de pausa
VaLaraC 0:9aa960516df7 44
VaLaraC 2:773082426491 45 //-------------------------VARIABLES GLOBALES-------------------------------------
VaLaraC 2:773082426491 46 int rap;//Pendiente
VaLaraC 0:9aa960516df7 47 int RSTEP = 5;
VaLaraC 0:9aa960516df7 48 double abajo=7;
VaLaraC 0:9aa960516df7 49 double arriba=0;
VaLaraC 0:9aa960516df7 50 double k,l,r,tp=50,paso=0;
VaLaraC 0:9aa960516df7 51 int p=0;
VaLaraC 2:773082426491 52 uint8_t estado = 0;
VaLaraC 0:9aa960516df7 53
VaLaraC 0:9aa960516df7 54 //*****************************************************************************
VaLaraC 0:9aa960516df7 55 // COMANDO MOVER MOTOR
VaLaraC 0:9aa960516df7 56 // |POS 1|POS 2|POS 3|POS 4| POS 5| POS 6| POS 7|
VaLaraC 0:9aa960516df7 57 // | < | #C | a | b | c | d | > |
VaLaraC 0:9aa960516df7 58 //
VaLaraC 0:9aa960516df7 59 // #C -> indica el comando
VaLaraC 0:9aa960516df7 60 // a,b,c,d parametros del comando
VaLaraC 0:9aa960516df7 61 // <,> -> inicio, y fin de comando
VaLaraC 0:9aa960516df7 62 // el inicio de comando no se almacena en el buffer
VaLaraC 0:9aa960516df7 63 //*****************************************************************************
VaLaraC 0:9aa960516df7 64
VaLaraC 2:773082426491 65 //--------------------------DETERMINACION TAMAÑO DE BUFFER------------------------
VaLaraC 0:9aa960516df7 66 uint8_t buffer_command[BUFF_SIZE]={0,0,0,0,0,0};
VaLaraC 0:9aa960516df7 67 float buffer_POS [BUFF_POS]= {0,0,0,0,0,0};
VaLaraC 0:9aa960516df7 68
VaLaraC 2:773082426491 69 //--------------------FUNCIONES PARA COMANDO DE BUFFER----------------------------
VaLaraC 0:9aa960516df7 70
VaLaraC 0:9aa960516df7 71 int coord2us(float coord)
VaLaraC 0:9aa960516df7 72 {
VaLaraC 0:9aa960516df7 73 if(0 <= coord <= MAXPOS)
VaLaraC 0:9aa960516df7 74 return int(750+coord*1900/50);// u6
VaLaraC 0:9aa960516df7 75 return 750;
VaLaraC 0:9aa960516df7 76 }
VaLaraC 0:9aa960516df7 77 void print_num(uint8_t val)
VaLaraC 0:9aa960516df7 78 {
VaLaraC 0:9aa960516df7 79 if (val <10)
VaLaraC 0:9aa960516df7 80 command.putc(val+0x30);
VaLaraC 0:9aa960516df7 81 else
VaLaraC 0:9aa960516df7 82 command.putc(val-9+0x40);
VaLaraC 0:9aa960516df7 83 }
VaLaraC 0:9aa960516df7 84 void print_bin2hex (uint8_t val)
VaLaraC 0:9aa960516df7 85 {
VaLaraC 0:9aa960516df7 86 command.printf(" 0x");
VaLaraC 0:9aa960516df7 87 print_num(val>>4);
VaLaraC 0:9aa960516df7 88 print_num(val&0x0f);
VaLaraC 0:9aa960516df7 89 }
VaLaraC 0:9aa960516df7 90 void Read_command()
VaLaraC 0:9aa960516df7 91 {
VaLaraC 0:9aa960516df7 92 for (uint8_t i=0; i<BUFF_SIZE;i++)
VaLaraC 0:9aa960516df7 93 {
VaLaraC 0:9aa960516df7 94 buffer_command[i]=command.getc();
VaLaraC 0:9aa960516df7 95
VaLaraC 0:9aa960516df7 96 }
VaLaraC 0:9aa960516df7 97 }
VaLaraC 0:9aa960516df7 98
VaLaraC 0:9aa960516df7 99 void echo_command()
VaLaraC 0:9aa960516df7 100 {
VaLaraC 0:9aa960516df7 101 for (uint8_t i=0; i<BUFF_SIZE;i++)
VaLaraC 0:9aa960516df7 102 {
VaLaraC 0:9aa960516df7 103 print_bin2hex(buffer_command[i]);
VaLaraC 0:9aa960516df7 104 }
VaLaraC 0:9aa960516df7 105 }
VaLaraC 0:9aa960516df7 106 uint8_t check_command()
VaLaraC 0:9aa960516df7 107 {
VaLaraC 0:9aa960516df7 108 if (buffer_command[BUFF_SIZE-1]== '>')
VaLaraC 0:9aa960516df7 109 return 1;
VaLaraC 0:9aa960516df7 110 return 0;
VaLaraC 0:9aa960516df7 111 }
VaLaraC 0:9aa960516df7 112 void command_led(uint8_t tm)
VaLaraC 0:9aa960516df7 113 {
VaLaraC 0:9aa960516df7 114 #if DEBUG
VaLaraC 0:9aa960516df7 115 command.printf("%i, segundos", tm);
VaLaraC 0:9aa960516df7 116 #endif
VaLaraC 0:9aa960516df7 117 led=1;
VaLaraC 0:9aa960516df7 118 wait(tm);
VaLaraC 0:9aa960516df7 119 led=0;
VaLaraC 0:9aa960516df7 120 }
VaLaraC 0:9aa960516df7 121 void draw()
VaLaraC 0:9aa960516df7 122 {
VaLaraC 0:9aa960516df7 123 myServoZ.pulsewidth_us(POSDRAW);
VaLaraC 0:9aa960516df7 124 wait(1);
VaLaraC 0:9aa960516df7 125 }
VaLaraC 0:9aa960516df7 126 void nodraw()
VaLaraC 0:9aa960516df7 127 {
VaLaraC 0:9aa960516df7 128 myServoZ.pulsewidth_us(MAXPOS);
VaLaraC 0:9aa960516df7 129 wait(1);
VaLaraC 0:9aa960516df7 130 }
VaLaraC 0:9aa960516df7 131 uint8_t SSTIME = 100;
VaLaraC 0:9aa960516df7 132 void tiempo_de_paso(int SST)
VaLaraC 0:9aa960516df7 133 {
VaLaraC 2:773082426491 134
VaLaraC 2:773082426491 135
VaLaraC 2:773082426491 136 //-------------------------CONFIURACION SSTIME/VERTEX-----------------------------
VaLaraC 2:773082426491 137 SSTIME=SST;
VaLaraC 0:9aa960516df7 138 #if DEBUG
VaLaraC 0:9aa960516df7 139 command.printf("\nTiempo en pasos definida en:%i\n",SSTIME);
VaLaraC 0:9aa960516df7 140 #endif
VaLaraC 0:9aa960516df7 141 }
VaLaraC 0:9aa960516df7 142 void vertex2d(float x, float y, float z)
VaLaraC 0:9aa960516df7 143 {
VaLaraC 0:9aa960516df7 144 int pulseX = coord2us(x);
VaLaraC 0:9aa960516df7 145 int pulseY = coord2us(y);
VaLaraC 0:9aa960516df7 146 int pulseZ = coord2us(z);
VaLaraC 0:9aa960516df7 147 myServoX.pulsewidth_us(pulseX);
VaLaraC 0:9aa960516df7 148 myServoY.pulsewidth_us(pulseY);
VaLaraC 0:9aa960516df7 149 myServoZ.pulsewidth_us(pulseZ);
VaLaraC 0:9aa960516df7 150 wait_ms(SSTIME);
VaLaraC 0:9aa960516df7 151 }
VaLaraC 0:9aa960516df7 152
VaLaraC 2:773082426491 153 //--------------------------DECLARACION MEMORIA DE SERVOS-------------------------
VaLaraC 0:9aa960516df7 154 uint8_t posx_old=0; // posición anterior del eje X
VaLaraC 0:9aa960516df7 155 uint8_t posy_old=0; // posición anterior del eje Y
VaLaraC 0:9aa960516df7 156 uint8_t posz_old=0; // posición anterior del eje Y
VaLaraC 0:9aa960516df7 157 uint8_t ss_time=100; // tiempo de espera para moverse 1 mm en microsegundos
VaLaraC 2:773082426491 158 //-------------------------VARIABLES SSTIME/RESOLUCION----------------------------
VaLaraC 0:9aa960516df7 159 void put_sstime(uint8_t vtime){
VaLaraC 0:9aa960516df7 160 ss_time=vtime;
VaLaraC 0:9aa960516df7 161 }
VaLaraC 0:9aa960516df7 162 void sstime(uint8_t x, uint8_t y, uint8_t z)
VaLaraC 0:9aa960516df7 163 {
VaLaraC 0:9aa960516df7 164 double dx=abs(x-posx_old);
VaLaraC 0:9aa960516df7 165 double dy=abs(y-posy_old);
VaLaraC 0:9aa960516df7 166 double dz=abs(z-posz_old);
VaLaraC 0:9aa960516df7 167 double dist= sqrt(dx*dx+dy*dy+dz*dz);
VaLaraC 0:9aa960516df7 168 wait_ms((int)(ss_time*dist));
VaLaraC 0:9aa960516df7 169 posx_old=x;
VaLaraC 0:9aa960516df7 170 posy_old=y;
VaLaraC 0:9aa960516df7 171 posy_old=z;
VaLaraC 0:9aa960516df7 172 }
VaLaraC 0:9aa960516df7 173 void initdraw(float x, float y)
VaLaraC 0:9aa960516df7 174 {
VaLaraC 0:9aa960516df7 175 #if DEBUG
VaLaraC 0:9aa960516df7 176 Sdebug.printf("inicia dibujo \n");
VaLaraC 0:9aa960516df7 177 #endif
VaLaraC 0:9aa960516df7 178 vertex2d (x,y,abajo);
VaLaraC 0:9aa960516df7 179 wait(1);
VaLaraC 0:9aa960516df7 180 draw();
VaLaraC 0:9aa960516df7 181 }
VaLaraC 0:9aa960516df7 182
VaLaraC 0:9aa960516df7 183 void resolucion(int res){
VaLaraC 0:9aa960516df7 184 RSTEP = res;
VaLaraC 0:9aa960516df7 185 #if DEBUG
VaLaraC 0:9aa960516df7 186 command.printf("Resolucion definida en = %i \n", RSTEP);
VaLaraC 0:9aa960516df7 187 #endif
VaLaraC 0:9aa960516df7 188 }
VaLaraC 2:773082426491 189
VaLaraC 2:773082426491 190 //---------------------------------FUNCION HOME-----------------------------------
VaLaraC 0:9aa960516df7 191 void home()
VaLaraC 0:9aa960516df7 192 {
VaLaraC 0:9aa960516df7 193 vertex2d(0,0,0);
VaLaraC 0:9aa960516df7 194 wait_ms(rap);
VaLaraC 0:9aa960516df7 195 }
VaLaraC 0:9aa960516df7 196 void maxpos()
VaLaraC 0:9aa960516df7 197 {
VaLaraC 0:9aa960516df7 198 vertex2d(250,250,150);
VaLaraC 0:9aa960516df7 199 }
VaLaraC 2:773082426491 200
VaLaraC 2:773082426491 201 //---------------------------------FUNCION DOT-----------------------------------
VaLaraC 0:9aa960516df7 202 void punto(uint8_t x, uint8_t y)
VaLaraC 0:9aa960516df7 203 {
VaLaraC 0:9aa960516df7 204 command.printf("Coord x= %i, coord y=%i \n",x,y);
VaLaraC 0:9aa960516df7 205 vertex2d(x,y,0);
VaLaraC 0:9aa960516df7 206 wait_ms(1000);
VaLaraC 0:9aa960516df7 207 vertex2d(x,y,11);
VaLaraC 0:9aa960516df7 208 wait_ms(1000);
VaLaraC 0:9aa960516df7 209 vertex2d(x,y,0);
VaLaraC 0:9aa960516df7 210 wait_ms(1000);
VaLaraC 0:9aa960516df7 211 home();
VaLaraC 0:9aa960516df7 212 }
VaLaraC 0:9aa960516df7 213
VaLaraC 2:773082426491 214
VaLaraC 2:773082426491 215 //------------------------------FUNCION LINE--------------------------------------
VaLaraC 0:9aa960516df7 216 void line(float xi, float xf, float yi, float yf)
VaLaraC 0:9aa960516df7 217 {
VaLaraC 0:9aa960516df7 218 // los parametros son coordenadas iniciales y finales de la linea en milimetros
VaLaraC 0:9aa960516df7 219 #if DEBUG
VaLaraC 0:9aa960516df7 220 Sdebug.printf("linea Xi= %f,Xf= %f,Yi= %f,Yf= %f \n", xi,xf,yi,yf);
VaLaraC 0:9aa960516df7 221 #endif
VaLaraC 0:9aa960516df7 222 float xp; float yp;
VaLaraC 0:9aa960516df7 223 float m= (yf-yi)/(xf-xi);
VaLaraC 0:9aa960516df7 224 float b=(yf-m*xf);
VaLaraC 0:9aa960516df7 225 vertex2d(0,0,4);
VaLaraC 0:9aa960516df7 226 wait(1);
VaLaraC 0:9aa960516df7 227 vertex2d(xi,yi,abajo);
VaLaraC 0:9aa960516df7 228 wait(1);
VaLaraC 0:9aa960516df7 229 for (xp =xi;xp<=xf;xp+=RSTEP)
VaLaraC 0:9aa960516df7 230 {
VaLaraC 0:9aa960516df7 231 yp =m*xp+b;
VaLaraC 0:9aa960516df7 232 vertex2d(xp,yp,abajo);
VaLaraC 0:9aa960516df7 233 #if DEBUG
VaLaraC 0:9aa960516df7 234 Sdebug.printf("coord X = %f,coord Y = %f \n", xp,yp);
VaLaraC 0:9aa960516df7 235 #endif
VaLaraC 0:9aa960516df7 236 }
VaLaraC 0:9aa960516df7 237 nodraw();
VaLaraC 0:9aa960516df7 238 home();
VaLaraC 0:9aa960516df7 239 }
VaLaraC 2:773082426491 240
VaLaraC 2:773082426491 241 //-----------------------------FUNCION RECTANGULO---------------------------------
VaLaraC 0:9aa960516df7 242 void rectangle(uint8_t xi, uint8_t yi,uint8_t a, uint8_t h)
VaLaraC 0:9aa960516df7 243 {
VaLaraC 0:9aa960516df7 244 int x,y;
VaLaraC 0:9aa960516df7 245 x = a+ xi;
VaLaraC 0:9aa960516df7 246 y = h+ yi;
VaLaraC 0:9aa960516df7 247
VaLaraC 0:9aa960516df7 248 vertex2d(xi,yi,arriba);
VaLaraC 0:9aa960516df7 249 wait_ms(600);
VaLaraC 0:9aa960516df7 250 vertex2d(xi,yi,abajo);
VaLaraC 0:9aa960516df7 251 wait_ms(600);
VaLaraC 0:9aa960516df7 252 vertex2d(x,yi,abajo);
VaLaraC 0:9aa960516df7 253 wait_ms(600);
VaLaraC 0:9aa960516df7 254 vertex2d(x,y,abajo);
VaLaraC 0:9aa960516df7 255 wait_ms(600);
VaLaraC 0:9aa960516df7 256 vertex2d(xi,y,abajo);
VaLaraC 0:9aa960516df7 257 wait_ms(600);
VaLaraC 0:9aa960516df7 258 vertex2d(xi,yi,abajo);
VaLaraC 0:9aa960516df7 259 wait_ms(600);
VaLaraC 0:9aa960516df7 260 home();
VaLaraC 0:9aa960516df7 261 }
VaLaraC 2:773082426491 262
VaLaraC 2:773082426491 263 //-----------------------------FUNCION CIRCULO-----------------------------------
VaLaraC 0:9aa960516df7 264 void circle(uint8_t x1, uint8_t y1,uint8_t r)
VaLaraC 0:9aa960516df7 265 {
VaLaraC 0:9aa960516df7 266 double x2,y2,i,j;
VaLaraC 0:9aa960516df7 267 vertex2d(x1 ,y1,arriba);
VaLaraC 0:9aa960516df7 268 wait(1);
VaLaraC 0:9aa960516df7 269 wait_ms(rap);
VaLaraC 0:9aa960516df7 270
VaLaraC 0:9aa960516df7 271 for ( x2=0;x2<=r;x2++){
VaLaraC 0:9aa960516df7 272 y2= pow(((r*r)-(x2*x2)),0.5);
VaLaraC 0:9aa960516df7 273 i= x2+x1;
VaLaraC 0:9aa960516df7 274 j=y1+y2;
VaLaraC 0:9aa960516df7 275 vertex2d(i ,j,abajo) ;
VaLaraC 0:9aa960516df7 276 wait_ms(30);
VaLaraC 0:9aa960516df7 277 #if DEBUG
VaLaraC 0:9aa960516df7 278 Sdebug.printf("coord X = %f,coord Y = %f \n", i,j);
VaLaraC 0:9aa960516df7 279 #endif
VaLaraC 0:9aa960516df7 280 }
VaLaraC 0:9aa960516df7 281
VaLaraC 0:9aa960516df7 282 for ( x2=r;x2>=0;x2--){
VaLaraC 0:9aa960516df7 283 y2= pow(((r*r)-(x2*x2)),0.5);
VaLaraC 0:9aa960516df7 284 i= x2+x1;
VaLaraC 0:9aa960516df7 285 j= y1 - y2;
VaLaraC 0:9aa960516df7 286 vertex2d(i ,j,abajo) ;
VaLaraC 0:9aa960516df7 287 wait_ms(30);
VaLaraC 0:9aa960516df7 288 #if DEBUG
VaLaraC 0:9aa960516df7 289 Sdebug.printf("coord X = %f,coord Y = %f \n", i,j);
VaLaraC 0:9aa960516df7 290 #endif
VaLaraC 0:9aa960516df7 291 }
VaLaraC 0:9aa960516df7 292
VaLaraC 0:9aa960516df7 293 for ( x2=0;x2<=r;x2++){
VaLaraC 0:9aa960516df7 294 y2= pow(((r*r)-(x2*x2)),0.5);
VaLaraC 0:9aa960516df7 295 i= x1- x2;
VaLaraC 0:9aa960516df7 296 j= y1 - y2;
VaLaraC 0:9aa960516df7 297 vertex2d(i ,j,abajo) ;
VaLaraC 0:9aa960516df7 298 wait_ms(30);
VaLaraC 0:9aa960516df7 299 #if DEBUG
VaLaraC 0:9aa960516df7 300 Sdebug.printf("coord X = %f,coord Y = %f \n", i,j);
VaLaraC 0:9aa960516df7 301 #endif
VaLaraC 0:9aa960516df7 302 }
VaLaraC 0:9aa960516df7 303 for ( x2=r;x2>=0;x2--){
VaLaraC 0:9aa960516df7 304 y2= pow(((r*r)-(x2*x2)),0.5);
VaLaraC 0:9aa960516df7 305 i= x1-x2;
VaLaraC 0:9aa960516df7 306 j=y1+y2;
VaLaraC 0:9aa960516df7 307 vertex2d(i ,j,abajo) ;
VaLaraC 0:9aa960516df7 308 wait_ms(30);
VaLaraC 0:9aa960516df7 309 #if DEBUG
VaLaraC 0:9aa960516df7 310 Sdebug.printf("coord X = %f,coord Y = %f \n", i,j);
VaLaraC 0:9aa960516df7 311 #endif
VaLaraC 0:9aa960516df7 312 }
VaLaraC 0:9aa960516df7 313 vertex2d(i ,j,arriba) ;
VaLaraC 0:9aa960516df7 314 wait_ms(rap);
VaLaraC 0:9aa960516df7 315 #if DEBUG
VaLaraC 0:9aa960516df7 316 Sdebug.printf("coord X = %f,coord Y = %f \n", i,j);
VaLaraC 0:9aa960516df7 317 #endif
VaLaraC 0:9aa960516df7 318
VaLaraC 0:9aa960516df7 319 if(x2==r)
VaLaraC 0:9aa960516df7 320 {
VaLaraC 0:9aa960516df7 321 wait(1);
VaLaraC 0:9aa960516df7 322 home();
VaLaraC 0:9aa960516df7 323 }
VaLaraC 0:9aa960516df7 324
jonnas58328 3:c7e3f75d4f10 325 }
VaLaraC 2:773082426491 326 //-------------------------------FUNCION REANUDAR---------------------------------
VaLaraC 0:9aa960516df7 327 void reanudar(){
VaLaraC 0:9aa960516df7 328
VaLaraC 2:773082426491 329 command.printf("piccolo reanudando \n");
VaLaraC 2:773082426491 330 wait (1);
VaLaraC 2:773082426491 331 return;
VaLaraC 2:773082426491 332
VaLaraC 0:9aa960516df7 333 }
VaLaraC 2:773082426491 334 //------------------------------FUNCION PAUSA------------------------------------
VaLaraC 0:9aa960516df7 335 void pause(){
VaLaraC 1:a9b3fdab473e 336
VaLaraC 2:773082426491 337 led = !led;
VaLaraC 2:773082426491 338 command.printf("piccolo en pausa \n");
VaLaraC 1:a9b3fdab473e 339 wait (5);
jonnas58328 3:c7e3f75d4f10 340 //return;
VaLaraC 2:773082426491 341
VaLaraC 0:9aa960516df7 342 }
VaLaraC 2:773082426491 343
VaLaraC 2:773082426491 344 //-------------------------------FUNCION PARE-------------------------------------
VaLaraC 0:9aa960516df7 345 void stop() //Funcion para detener el programa
VaLaraC 0:9aa960516df7 346 {
jonnas58328 3:c7e3f75d4f10 347 command.printf("piccolo en Stop \n");
jonnas58328 3:c7e3f75d4f10 348 home();
VaLaraC 0:9aa960516df7 349 exit(0);
jonnas58328 3:c7e3f75d4f10 350
jonnas58328 3:c7e3f75d4f10 351
VaLaraC 0:9aa960516df7 352 }
VaLaraC 0:9aa960516df7 353
VaLaraC 0:9aa960516df7 354 void command_exe()
VaLaraC 0:9aa960516df7 355 {
VaLaraC 2:773082426491 356
VaLaraC 2:773082426491 357 //-------------------------ASIGNACION EN SWTICH CASE------------------------------
VaLaraC 0:9aa960516df7 358 #if DEBUG
VaLaraC 0:9aa960516df7 359 command.printf("Ejecutando comando: ");
VaLaraC 0:9aa960516df7 360 #endif
VaLaraC 0:9aa960516df7 361 switch (buffer_command[COMM_N])
VaLaraC 0:9aa960516df7 362 {
VaLaraC 0:9aa960516df7 363 case (LED):
VaLaraC 0:9aa960516df7 364 #if DEBUG
VaLaraC 0:9aa960516df7 365 command.printf("LED on\n");
VaLaraC 0:9aa960516df7 366 #endif
VaLaraC 0:9aa960516df7 367 command_led(buffer_command[INITPARAMETER]);
VaLaraC 0:9aa960516df7 368 break;
VaLaraC 0:9aa960516df7 369
VaLaraC 0:9aa960516df7 370 case (PUNTO):
VaLaraC 0:9aa960516df7 371 punto(buffer_command[INITPARAMETER],buffer_command[INITPARAMETER+1]);
VaLaraC 0:9aa960516df7 372 #if DEBUG
VaLaraC 0:9aa960516df7 373 command.printf("Dibujando Punto");
VaLaraC 0:9aa960516df7 374 #endif
VaLaraC 0:9aa960516df7 375 break;
VaLaraC 0:9aa960516df7 376
VaLaraC 0:9aa960516df7 377 case LINE:
VaLaraC 0:9aa960516df7 378 #if DEBUG
VaLaraC 0:9aa960516df7 379 command.printf("Dibujando Linea\n");
VaLaraC 0:9aa960516df7 380 #endif
VaLaraC 0:9aa960516df7 381 line(buffer_command[INITPARAMETER],buffer_command[INITPARAMETER+1],buffer_command[INITPARAMETER+2],buffer_command[INITPARAMETER+3]);
VaLaraC 0:9aa960516df7 382
VaLaraC 0:9aa960516df7 383
VaLaraC 0:9aa960516df7 384 break;
VaLaraC 0:9aa960516df7 385
VaLaraC 0:9aa960516df7 386 case RECTANGLE:
VaLaraC 0:9aa960516df7 387 #if DEBUG
VaLaraC 0:9aa960516df7 388 command.printf("Dibujando Rectangulo\n");
VaLaraC 0:9aa960516df7 389 #endif
VaLaraC 0:9aa960516df7 390 rectangle(buffer_command[INITPARAMETER],buffer_command[INITPARAMETER+1],buffer_command[INITPARAMETER+2],buffer_command[INITPARAMETER+3]);
VaLaraC 0:9aa960516df7 391 break;
VaLaraC 0:9aa960516df7 392
VaLaraC 0:9aa960516df7 393 case (CIRCLE):
VaLaraC 0:9aa960516df7 394 #if DEBUG
VaLaraC 0:9aa960516df7 395 command.printf("Dibujando Circulo\n");
VaLaraC 0:9aa960516df7 396 #endif
VaLaraC 0:9aa960516df7 397 circle(buffer_command[INITPARAMETER],buffer_command[INITPARAMETER+1],buffer_command[INITPARAMETER+2]);
VaLaraC 0:9aa960516df7 398 break;
VaLaraC 0:9aa960516df7 399
VaLaraC 0:9aa960516df7 400 case (STOP):
VaLaraC 0:9aa960516df7 401 #if DEBUG
VaLaraC 0:9aa960516df7 402 command.printf(" STOP\n");
VaLaraC 0:9aa960516df7 403 #endif
VaLaraC 0:9aa960516df7 404 break;
VaLaraC 0:9aa960516df7 405
VaLaraC 0:9aa960516df7 406 case (PAUSE):
VaLaraC 0:9aa960516df7 407 #if DEBUG
VaLaraC 0:9aa960516df7 408 command.printf("programa pausado\n");
VaLaraC 0:9aa960516df7 409 #endif
VaLaraC 0:9aa960516df7 410 pause();
VaLaraC 0:9aa960516df7 411 break;
VaLaraC 0:9aa960516df7 412
VaLaraC 0:9aa960516df7 413 case (REANUDAR):
VaLaraC 0:9aa960516df7 414 #if DEBUG
VaLaraC 0:9aa960516df7 415 command.printf("draw reanudar programa\n");
VaLaraC 0:9aa960516df7 416 #endif
VaLaraC 0:9aa960516df7 417 reanudar();
VaLaraC 0:9aa960516df7 418 break;
VaLaraC 0:9aa960516df7 419
VaLaraC 0:9aa960516df7 420 case (RESOLUCION):
VaLaraC 0:9aa960516df7 421 resolucion(buffer_command[INITPARAMETER]);
VaLaraC 0:9aa960516df7 422 #if DEBUG
VaLaraC 0:9aa960516df7 423 command.printf("Resolucion definida");
VaLaraC 0:9aa960516df7 424 #endif
VaLaraC 0:9aa960516df7 425 break;
VaLaraC 0:9aa960516df7 426 case (HOME):
VaLaraC 0:9aa960516df7 427 home();
VaLaraC 0:9aa960516df7 428 #if DEBUG
VaLaraC 0:9aa960516df7 429 command.printf("Posicion Home");
VaLaraC 0:9aa960516df7 430 #endif
VaLaraC 0:9aa960516df7 431 break;
VaLaraC 0:9aa960516df7 432
VaLaraC 0:9aa960516df7 433 case (TIEMPO_DE_PASO):
VaLaraC 0:9aa960516df7 434 #if DEBUG
VaLaraC 0:9aa960516df7 435 command.printf("Nuevo tiempo para paso:\res");
VaLaraC 0:9aa960516df7 436 #endif
VaLaraC 0:9aa960516df7 437 tiempo_de_paso(buffer_command[INITPARAMETER]);
VaLaraC 0:9aa960516df7 438 break;
VaLaraC 0:9aa960516df7 439
VaLaraC 0:9aa960516df7 440 default:
VaLaraC 0:9aa960516df7 441 #if DEBUG
VaLaraC 0:9aa960516df7 442 command.printf("comando no encontrado\n");
VaLaraC 0:9aa960516df7 443 #endif
VaLaraC 0:9aa960516df7 444
VaLaraC 0:9aa960516df7 445 }
VaLaraC 0:9aa960516df7 446 }
VaLaraC 0:9aa960516df7 447
VaLaraC 2:773082426491 448 //--------------------------***PENDIENTE***---------------------------------------
VaLaraC 2:773082426491 449 void Rx_interrupcion(){
VaLaraC 2:773082426491 450
VaLaraC 2:773082426491 451 char p = command.getc();
VaLaraC 2:773082426491 452
VaLaraC 2:773082426491 453 command.printf("picolo en pausa %c\n",p);
VaLaraC 2:773082426491 454 wait_ms(2000);
VaLaraC 2:773082426491 455 return ;
VaLaraC 2:773082426491 456
VaLaraC 2:773082426491 457 }
VaLaraC 2:773082426491 458
VaLaraC 2:773082426491 459
VaLaraC 2:773082426491 460 //----------------------------------MAIN DE PROGRAMA------------------------------
VaLaraC 2:773082426491 461 int main() {
VaLaraC 2:773082426491 462 #if DEBUG
VaLaraC 2:773082426491 463 command.printf("inicio con debug\n");
VaLaraC 2:773082426491 464 #else
VaLaraC 2:773082426491 465 command.printf("inicio sin debug\n");
VaLaraC 2:773082426491 466 #endif
VaLaraC 1:a9b3fdab473e 467 uint8_t val;
VaLaraC 0:9aa960516df7 468 // mybutton.rise(&stop);
VaLaraC 0:9aa960516df7 469 while(1){
VaLaraC 0:9aa960516df7 470 val=command.getc();
VaLaraC 0:9aa960516df7 471 if (val== '<'){
VaLaraC 0:9aa960516df7 472 Read_command();
VaLaraC 2:773082426491 473 mybutton.fall(&pause);
VaLaraC 2:773082426491 474 mybutton.rise(&reanudar);
jonnas58328 3:c7e3f75d4f10 475 boton.fall(&stop);
VaLaraC 0:9aa960516df7 476 if (check_command()){
VaLaraC 0:9aa960516df7 477 command_exe();
VaLaraC 0:9aa960516df7 478 }
VaLaraC 0:9aa960516df7 479 else{
VaLaraC 0:9aa960516df7 480 #if DEBUG
VaLaraC 0:9aa960516df7 481 command.printf("\n ERROR COMANDO -> ");
VaLaraC 0:9aa960516df7 482 echo_command();
VaLaraC 0:9aa960516df7 483 #endif
VaLaraC 0:9aa960516df7 484 }
VaLaraC 0:9aa960516df7 485 }
VaLaraC 0:9aa960516df7 486 else{
VaLaraC 0:9aa960516df7 487 #if DEBUG
VaLaraC 0:9aa960516df7 488 command.printf("error de inicio de trama: ");
VaLaraC 0:9aa960516df7 489 command.putc(val);
VaLaraC 0:9aa960516df7 490 #endif
VaLaraC 1:a9b3fdab473e 491
VaLaraC 1:a9b3fdab473e 492 }
VaLaraC 1:a9b3fdab473e 493 }
VaLaraC 2:773082426491 494
VaLaraC 0:9aa960516df7 495 }
VaLaraC 0:9aa960516df7 496
VaLaraC 0:9aa960516df7 497
VaLaraC 1:a9b3fdab473e 498
VaLaraC 0:9aa960516df7 499
VaLaraC 0:9aa960516df7 500