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

Dependencies:   mbed

Fork of jc by Sist. Piccolo

Committer:
VaLaraC
Date:
Fri Nov 24 21:19:29 2017 +0000
Revision:
2:773082426491
Parent:
1:a9b3fdab473e
Child:
3:c7e3f75d4f10
Errors

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