Nicolás Camilo Guerrero Otálora
/
codigopicolo2
CODIGO PICOLO
/media/uploads/nicolas_guerrero/definimos_variables_globales.pdf
main.cpp
- Committer:
- nicolas_guerrero
- Date:
- 2018-03-15
- Revision:
- 0:3a659d0cc027
- Child:
- 1:629f060522ce
File content as of revision 0:3a659d0cc027:
//lO UNICO DIFERENTE AL CODIGO ES PwmOut motor_x(A3), motor_y(A1), motor_z(A0); #include "mbed.h" #define MEM_SIZE 5000 #define MEM_TYPE uint32_t #define MAXPOS 50 // en milimetros #define SS_TIME 100 // en microsegundos #define POSDRAW 10 #define periodo 20 #define CM_EJECUTAR 0xff #define CM_GUARDAR 0xfe #define CM_VERTEX2D 0xfd #define CM_DRAW 0xfc #define CM_NODRAW 0xfb #define CM_STOP 0xfa #define CM_END 0xf0 MEM_TYPE arreglo2[MEM_SIZE]; Serial pc(USBTX, USBRX); PwmOut motor_x(PB_4), motor_y(PB_5), motor_z(PB_3); int mem_head = 0,i=0,z=0; int mem_tail = 0; uint8_t full = 0; char b; MEM_TYPE comando,px,py,condicionf; int coord2us(float coord) { if(0 <= coord <= MAXPOS) return int(750+coord*1900/50);// u6 return 750; } void draw() { z=coord2us(POSDRAW); motor_z.pulsewidth_us(z); wait(1); } void nodraw() { z=coord2us(MAXPOS); motor_z.pulsewidth_us(z); wait(1); } void vertex2d(float x, float y){ int pulseX = coord2us(x); int pulseY = coord2us(y); motor_x.pulsewidth_us(pulseX); motor_y.pulsewidth_us(pulseY); wait_ms(SS_TIME); } /////////////////////////////////////////////////////// void ejecutar(){ MEM_TYPE bandera=0; pc.printf("se esta ejecutando el dibujo...\r\n"); for(i=0;i<mem_head-1;i++) { bandera=arreglo2[i]; while (bandera==CM_VERTEX2D)//FD F0 { pc.printf("entro if porque arreglo2[%i] =%x\r\n",i,arreglo2[i]); i++; px=arreglo2[i]; pc.printf("posicion x=%i\r\n",px); i++; py=arreglo2[i]; pc.printf("posicion x=%i\r\n",py); i++; pc.printf("[%x]",arreglo2[i]); if(arreglo2[i]==CM_END) { vertex2d(px,py); wait(1); } i++; bandera=arreglo2[i]; } if(arreglo2[i]==CM_DRAW) { i++; if(arreglo2[i]==CM_END) { draw(); } } if(arreglo2[i]==CM_NODRAW) { i++; if(arreglo2[i]==CM_END) { nodraw(); } } } } ///////////////////////////////////////////////////////////// void guardar(){ pc.printf("se inicia el comado de guardar..\r\n"); mem_head=0; do { // pc.printf("entro while llenar\n\r"); arreglo2[mem_head]=pc.getc(); b=arreglo2[mem_head]; // pc.printf("posicion %i se lleno con %x\r\n",mem_head,arreglo2[mem_head]); mem_head++; } while(b!=CM_STOP); } int main() { // configuracion de periodo motor_x.period_ms(periodo); motor_y.period_ms(periodo); motor_z.period_ms(periodo); motor_x.pulsewidth_us(725); motor_y.pulsewidth_us(725); motor_z.pulsewidth_us(2650); int posx=0; int posy=0; char caracter; while(1) { caracter=pc.getc(); switch (caracter) { case CM_EJECUTAR: ejecutar(); break; case CM_GUARDAR: guardar(); break; default: pc.printf("error de comando\r\n");break ; } } }