CODIGO PICOLO

Dependencies:   mbed

/media/uploads/nicolas_guerrero/definimos_variables_globales.pdf

Committer:
nicolas_guerrero
Date:
Thu Mar 15 02:18:46 2018 +0000
Revision:
0:3a659d0cc027
Child:
1:629f060522ce
CODIGO PICOLO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nicolas_guerrero 0:3a659d0cc027 1 //lO UNICO DIFERENTE AL CODIGO ES PwmOut motor_x(A3), motor_y(A1), motor_z(A0);
nicolas_guerrero 0:3a659d0cc027 2 #include "mbed.h"
nicolas_guerrero 0:3a659d0cc027 3 #define MEM_SIZE 5000
nicolas_guerrero 0:3a659d0cc027 4 #define MEM_TYPE uint32_t
nicolas_guerrero 0:3a659d0cc027 5 #define MAXPOS 50 // en milimetros
nicolas_guerrero 0:3a659d0cc027 6 #define SS_TIME 100 // en microsegundos
nicolas_guerrero 0:3a659d0cc027 7 #define POSDRAW 10
nicolas_guerrero 0:3a659d0cc027 8 #define periodo 20
nicolas_guerrero 0:3a659d0cc027 9 #define CM_EJECUTAR 0xff
nicolas_guerrero 0:3a659d0cc027 10 #define CM_GUARDAR 0xfe
nicolas_guerrero 0:3a659d0cc027 11 #define CM_VERTEX2D 0xfd
nicolas_guerrero 0:3a659d0cc027 12 #define CM_DRAW 0xfc
nicolas_guerrero 0:3a659d0cc027 13 #define CM_NODRAW 0xfb
nicolas_guerrero 0:3a659d0cc027 14 #define CM_STOP 0xfa
nicolas_guerrero 0:3a659d0cc027 15 #define CM_END 0xf0
nicolas_guerrero 0:3a659d0cc027 16
nicolas_guerrero 0:3a659d0cc027 17 MEM_TYPE arreglo2[MEM_SIZE];
nicolas_guerrero 0:3a659d0cc027 18 Serial pc(USBTX, USBRX);
nicolas_guerrero 0:3a659d0cc027 19 PwmOut motor_x(PB_4), motor_y(PB_5), motor_z(PB_3);
nicolas_guerrero 0:3a659d0cc027 20 int mem_head = 0,i=0,z=0;
nicolas_guerrero 0:3a659d0cc027 21 int mem_tail = 0;
nicolas_guerrero 0:3a659d0cc027 22 uint8_t full = 0;
nicolas_guerrero 0:3a659d0cc027 23 char b;
nicolas_guerrero 0:3a659d0cc027 24 MEM_TYPE comando,px,py,condicionf;
nicolas_guerrero 0:3a659d0cc027 25
nicolas_guerrero 0:3a659d0cc027 26
nicolas_guerrero 0:3a659d0cc027 27
nicolas_guerrero 0:3a659d0cc027 28 int coord2us(float coord)
nicolas_guerrero 0:3a659d0cc027 29 {
nicolas_guerrero 0:3a659d0cc027 30 if(0 <= coord <= MAXPOS)
nicolas_guerrero 0:3a659d0cc027 31 return int(750+coord*1900/50);// u6
nicolas_guerrero 0:3a659d0cc027 32 return 750;
nicolas_guerrero 0:3a659d0cc027 33
nicolas_guerrero 0:3a659d0cc027 34 }
nicolas_guerrero 0:3a659d0cc027 35
nicolas_guerrero 0:3a659d0cc027 36 void draw()
nicolas_guerrero 0:3a659d0cc027 37 {
nicolas_guerrero 0:3a659d0cc027 38 z=coord2us(POSDRAW);
nicolas_guerrero 0:3a659d0cc027 39 motor_z.pulsewidth_us(z);
nicolas_guerrero 0:3a659d0cc027 40 wait(1);
nicolas_guerrero 0:3a659d0cc027 41 }
nicolas_guerrero 0:3a659d0cc027 42 void nodraw()
nicolas_guerrero 0:3a659d0cc027 43 {
nicolas_guerrero 0:3a659d0cc027 44
nicolas_guerrero 0:3a659d0cc027 45 z=coord2us(MAXPOS);
nicolas_guerrero 0:3a659d0cc027 46 motor_z.pulsewidth_us(z);
nicolas_guerrero 0:3a659d0cc027 47 wait(1);
nicolas_guerrero 0:3a659d0cc027 48 }
nicolas_guerrero 0:3a659d0cc027 49 void vertex2d(float x, float y){
nicolas_guerrero 0:3a659d0cc027 50
nicolas_guerrero 0:3a659d0cc027 51 int pulseX = coord2us(x);
nicolas_guerrero 0:3a659d0cc027 52 int pulseY = coord2us(y);
nicolas_guerrero 0:3a659d0cc027 53
nicolas_guerrero 0:3a659d0cc027 54 motor_x.pulsewidth_us(pulseX);
nicolas_guerrero 0:3a659d0cc027 55 motor_y.pulsewidth_us(pulseY);
nicolas_guerrero 0:3a659d0cc027 56 wait_ms(SS_TIME);
nicolas_guerrero 0:3a659d0cc027 57
nicolas_guerrero 0:3a659d0cc027 58 }
nicolas_guerrero 0:3a659d0cc027 59 ///////////////////////////////////////////////////////
nicolas_guerrero 0:3a659d0cc027 60 void ejecutar(){
nicolas_guerrero 0:3a659d0cc027 61 MEM_TYPE bandera=0;
nicolas_guerrero 0:3a659d0cc027 62 pc.printf("se esta ejecutando el dibujo...\r\n");
nicolas_guerrero 0:3a659d0cc027 63 for(i=0;i<mem_head-1;i++)
nicolas_guerrero 0:3a659d0cc027 64 {
nicolas_guerrero 0:3a659d0cc027 65 bandera=arreglo2[i];
nicolas_guerrero 0:3a659d0cc027 66 while (bandera==CM_VERTEX2D)//FD F0
nicolas_guerrero 0:3a659d0cc027 67 {
nicolas_guerrero 0:3a659d0cc027 68
nicolas_guerrero 0:3a659d0cc027 69 pc.printf("entro if porque arreglo2[%i] =%x\r\n",i,arreglo2[i]);
nicolas_guerrero 0:3a659d0cc027 70 i++;
nicolas_guerrero 0:3a659d0cc027 71 px=arreglo2[i];
nicolas_guerrero 0:3a659d0cc027 72 pc.printf("posicion x=%i\r\n",px);
nicolas_guerrero 0:3a659d0cc027 73 i++;
nicolas_guerrero 0:3a659d0cc027 74 py=arreglo2[i];
nicolas_guerrero 0:3a659d0cc027 75 pc.printf("posicion x=%i\r\n",py);
nicolas_guerrero 0:3a659d0cc027 76 i++;
nicolas_guerrero 0:3a659d0cc027 77 pc.printf("[%x]",arreglo2[i]);
nicolas_guerrero 0:3a659d0cc027 78
nicolas_guerrero 0:3a659d0cc027 79 if(arreglo2[i]==CM_END)
nicolas_guerrero 0:3a659d0cc027 80 {
nicolas_guerrero 0:3a659d0cc027 81 vertex2d(px,py);
nicolas_guerrero 0:3a659d0cc027 82 wait(1);
nicolas_guerrero 0:3a659d0cc027 83 }
nicolas_guerrero 0:3a659d0cc027 84 i++;
nicolas_guerrero 0:3a659d0cc027 85 bandera=arreglo2[i];
nicolas_guerrero 0:3a659d0cc027 86 }
nicolas_guerrero 0:3a659d0cc027 87 if(arreglo2[i]==CM_DRAW)
nicolas_guerrero 0:3a659d0cc027 88 {
nicolas_guerrero 0:3a659d0cc027 89 i++;
nicolas_guerrero 0:3a659d0cc027 90 if(arreglo2[i]==CM_END)
nicolas_guerrero 0:3a659d0cc027 91 {
nicolas_guerrero 0:3a659d0cc027 92 draw();
nicolas_guerrero 0:3a659d0cc027 93 }
nicolas_guerrero 0:3a659d0cc027 94 }
nicolas_guerrero 0:3a659d0cc027 95 if(arreglo2[i]==CM_NODRAW)
nicolas_guerrero 0:3a659d0cc027 96 {
nicolas_guerrero 0:3a659d0cc027 97 i++;
nicolas_guerrero 0:3a659d0cc027 98 if(arreglo2[i]==CM_END)
nicolas_guerrero 0:3a659d0cc027 99 {
nicolas_guerrero 0:3a659d0cc027 100 nodraw();
nicolas_guerrero 0:3a659d0cc027 101 }
nicolas_guerrero 0:3a659d0cc027 102 }
nicolas_guerrero 0:3a659d0cc027 103 }
nicolas_guerrero 0:3a659d0cc027 104 }
nicolas_guerrero 0:3a659d0cc027 105 /////////////////////////////////////////////////////////////
nicolas_guerrero 0:3a659d0cc027 106 void guardar(){
nicolas_guerrero 0:3a659d0cc027 107 pc.printf("se inicia el comado de guardar..\r\n");
nicolas_guerrero 0:3a659d0cc027 108 mem_head=0;
nicolas_guerrero 0:3a659d0cc027 109 do
nicolas_guerrero 0:3a659d0cc027 110 {
nicolas_guerrero 0:3a659d0cc027 111 // pc.printf("entro while llenar\n\r");
nicolas_guerrero 0:3a659d0cc027 112 arreglo2[mem_head]=pc.getc();
nicolas_guerrero 0:3a659d0cc027 113 b=arreglo2[mem_head];
nicolas_guerrero 0:3a659d0cc027 114 // pc.printf("posicion %i se lleno con %x\r\n",mem_head,arreglo2[mem_head]);
nicolas_guerrero 0:3a659d0cc027 115 mem_head++;
nicolas_guerrero 0:3a659d0cc027 116 }
nicolas_guerrero 0:3a659d0cc027 117 while(b!=CM_STOP);
nicolas_guerrero 0:3a659d0cc027 118
nicolas_guerrero 0:3a659d0cc027 119 }
nicolas_guerrero 0:3a659d0cc027 120
nicolas_guerrero 0:3a659d0cc027 121 int main() {
nicolas_guerrero 0:3a659d0cc027 122 // configuracion de periodo
nicolas_guerrero 0:3a659d0cc027 123 motor_x.period_ms(periodo);
nicolas_guerrero 0:3a659d0cc027 124 motor_y.period_ms(periodo);
nicolas_guerrero 0:3a659d0cc027 125 motor_z.period_ms(periodo);
nicolas_guerrero 0:3a659d0cc027 126 motor_x.pulsewidth_us(725);
nicolas_guerrero 0:3a659d0cc027 127 motor_y.pulsewidth_us(725);
nicolas_guerrero 0:3a659d0cc027 128 motor_z.pulsewidth_us(2650);
nicolas_guerrero 0:3a659d0cc027 129 int posx=0;
nicolas_guerrero 0:3a659d0cc027 130 int posy=0;
nicolas_guerrero 0:3a659d0cc027 131 char caracter;
nicolas_guerrero 0:3a659d0cc027 132 while(1)
nicolas_guerrero 0:3a659d0cc027 133 {
nicolas_guerrero 0:3a659d0cc027 134 caracter=pc.getc();
nicolas_guerrero 0:3a659d0cc027 135 switch (caracter) {
nicolas_guerrero 0:3a659d0cc027 136 case CM_EJECUTAR: ejecutar(); break;
nicolas_guerrero 0:3a659d0cc027 137 case CM_GUARDAR: guardar(); break;
nicolas_guerrero 0:3a659d0cc027 138 default: pc.printf("error de comando\r\n");break ;
nicolas_guerrero 0:3a659d0cc027 139 }
nicolas_guerrero 0:3a659d0cc027 140 }
nicolas_guerrero 0:3a659d0cc027 141 }