Camilo Ramirez
/
ENTREGA1
AVANCE PICCOLO CORTE 1
main.cpp@3:c3d197a71ecd, 2018-03-17 (annotated)
- Committer:
- Camilokingxd
- Date:
- Sat Mar 17 05:44:19 2018 +0000
- Revision:
- 3:c3d197a71ecd
- Parent:
- 2:274426ac7654
PROGRAMA FINAL
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Camilokingxd | 0:2032b926fd86 | 1 | #include "mbed.h" |
Camilokingxd | 2:274426ac7654 | 2 | #include "def.h" |
Camilokingxd | 2:274426ac7654 | 3 | |
Camilokingxd | 2:274426ac7654 | 4 | DigitalOut myled(LED1); |
Camilokingxd | 2:274426ac7654 | 5 | |
Camilokingxd | 2:274426ac7654 | 6 | Serial pc(USBTX,USBRX); |
Camilokingxd | 2:274426ac7654 | 7 | |
Camilokingxd | 2:274426ac7654 | 8 | PwmOut mypwmX(PB_4); |
Camilokingxd | 2:274426ac7654 | 9 | PwmOut mypwmY(PB_5); |
Camilokingxd | 2:274426ac7654 | 10 | PwmOut mypwmZ(PB_3); |
Camilokingxd | 2:274426ac7654 | 11 | |
Camilokingxd | 3:c3d197a71ecd | 12 | uint32_t mem_head = 0; |
Camilokingxd | 3:c3d197a71ecd | 13 | uint32_t mem_tail = 0; |
Camilokingxd | 2:274426ac7654 | 14 | uint32_t full=0; |
Camilokingxd | 2:274426ac7654 | 15 | |
Camilokingxd | 3:c3d197a71ecd | 16 | MEM_TYPE buffer[MEM_SIZE]; |
Camilokingxd | 2:274426ac7654 | 17 | |
Camilokingxd | 3:c3d197a71ecd | 18 | void mem_free() |
Camilokingxd | 2:274426ac7654 | 19 | { |
Camilokingxd | 2:274426ac7654 | 20 | mem_head=0; |
Camilokingxd | 2:274426ac7654 | 21 | full=0; |
Camilokingxd | 2:274426ac7654 | 22 | mem_tail=0; |
Camilokingxd | 2:274426ac7654 | 23 | } |
Camilokingxd | 0:2032b926fd86 | 24 | |
Camilokingxd | 3:c3d197a71ecd | 25 | uint32_t mem_put(MEM_TYPE data) // |
Camilokingxd | 2:274426ac7654 | 26 | { |
Camilokingxd | 3:c3d197a71ecd | 27 | if(full) |
Camilokingxd | 3:c3d197a71ecd | 28 | { |
Camilokingxd | 3:c3d197a71ecd | 29 | return 1; // |
Camilokingxd | 3:c3d197a71ecd | 30 | } |
Camilokingxd | 3:c3d197a71ecd | 31 | buffer [mem_head]=data; |
Camilokingxd | 3:c3d197a71ecd | 32 | mem_head+=1; |
Camilokingxd | 3:c3d197a71ecd | 33 | if(mem_head==MEM_SIZE) |
Camilokingxd | 3:c3d197a71ecd | 34 | { |
Camilokingxd | 3:c3d197a71ecd | 35 | full=1; |
Camilokingxd | 2:274426ac7654 | 36 | } |
Camilokingxd | 3:c3d197a71ecd | 37 | return 0; |
Camilokingxd | 3:c3d197a71ecd | 38 | } |
Camilokingxd | 3:c3d197a71ecd | 39 | |
Camilokingxd | 3:c3d197a71ecd | 40 | uint32_t mem_get(MEM_TYPE* data) |
Camilokingxd | 3:c3d197a71ecd | 41 | { |
Camilokingxd | 3:c3d197a71ecd | 42 | if(mem_head == 0) |
Camilokingxd | 3:c3d197a71ecd | 43 | return 1; |
Camilokingxd | 3:c3d197a71ecd | 44 | if (mem_head == mem_tail) |
Camilokingxd | 3:c3d197a71ecd | 45 | return 1; |
Camilokingxd | 3:c3d197a71ecd | 46 | |
Camilokingxd | 3:c3d197a71ecd | 47 | *data=buffer[mem_tail]; |
Camilokingxd | 3:c3d197a71ecd | 48 | mem_tail +=1; |
Camilokingxd | 3:c3d197a71ecd | 49 | |
Camilokingxd | 2:274426ac7654 | 50 | return 0; |
Camilokingxd | 2:274426ac7654 | 51 | } |
Camilokingxd | 0:2032b926fd86 | 52 | |
Camilokingxd | 2:274426ac7654 | 53 | void Vertex2D(uint8_t,uint8_t); |
Camilokingxd | 2:274426ac7654 | 54 | void SetZ(uint8_t); |
Camilokingxd | 2:274426ac7654 | 55 | uint8_t x,y,z; |
Camilokingxd | 3:c3d197a71ecd | 56 | int mm2pulse(float vmm); |
Camilokingxd | 0:2032b926fd86 | 57 | void program_serial(); |
Camilokingxd | 0:2032b926fd86 | 58 | void ejecutar(); |
Camilokingxd | 2:274426ac7654 | 59 | int guardar(); |
Camilokingxd | 0:2032b926fd86 | 60 | |
Camilokingxd | 2:274426ac7654 | 61 | int main() |
Camilokingxd | 0:2032b926fd86 | 62 | { |
Camilokingxd | 2:274426ac7654 | 63 | mypwmX.period_ms(20); |
Camilokingxd | 2:274426ac7654 | 64 | mypwmY.period_ms(20); |
Camilokingxd | 2:274426ac7654 | 65 | mypwmZ.period_ms(20); |
Camilokingxd | 0:2032b926fd86 | 66 | program_serial(); |
Camilokingxd | 2:274426ac7654 | 67 | uint8_t letra,subletra; |
Camilokingxd | 2:274426ac7654 | 68 | Vertex2D(0,0); |
Camilokingxd | 2:274426ac7654 | 69 | SetZ(NODRAW); |
Camilokingxd | 2:274426ac7654 | 70 | myled = 1; |
Camilokingxd | 0:2032b926fd86 | 71 | wait(2); |
Camilokingxd | 3:c3d197a71ecd | 72 | while(1) |
Camilokingxd | 3:c3d197a71ecd | 73 | { |
Camilokingxd | 2:274426ac7654 | 74 | pc.printf("ingrese comando \n"); |
Camilokingxd | 3:c3d197a71ecd | 75 | letra=pc.getc(); |
Camilokingxd | 2:274426ac7654 | 76 | subletra=pc.getc(); |
Camilokingxd | 2:274426ac7654 | 77 | if(subletra==CM_STOP) |
Camilokingxd | 2:274426ac7654 | 78 | { |
Camilokingxd | 3:c3d197a71ecd | 79 | switch(letra) |
Camilokingxd | 3:c3d197a71ecd | 80 | { |
Camilokingxd | 2:274426ac7654 | 81 | case CM_EJECUTAR: |
Camilokingxd | 2:274426ac7654 | 82 | if(mem_head!=mem_tail) |
Camilokingxd | 2:274426ac7654 | 83 | { |
Camilokingxd | 2:274426ac7654 | 84 | ejecutar(); |
Camilokingxd | 2:274426ac7654 | 85 | } |
Camilokingxd | 2:274426ac7654 | 86 | else{ |
Camilokingxd | 2:274426ac7654 | 87 | pc.printf("La memoria se encuentra vacia \n"); |
Camilokingxd | 2:274426ac7654 | 88 | } |
Camilokingxd | 2:274426ac7654 | 89 | break; |
Camilokingxd | 2:274426ac7654 | 90 | case CM_GUARDAR: |
Camilokingxd | 2:274426ac7654 | 91 | if(guardar()==0) |
Camilokingxd | 2:274426ac7654 | 92 | { |
Camilokingxd | 2:274426ac7654 | 93 | pc.printf("el programa se guardo correctamente \n"); |
Camilokingxd | 2:274426ac7654 | 94 | } |
Camilokingxd | 2:274426ac7654 | 95 | else |
Camilokingxd | 2:274426ac7654 | 96 | { |
Camilokingxd | 2:274426ac7654 | 97 | pc.printf("el programa no se pudo guardar... vuelva a intentar \n"); |
Camilokingxd | 2:274426ac7654 | 98 | } |
Camilokingxd | 2:274426ac7654 | 99 | break; |
Camilokingxd | 2:274426ac7654 | 100 | default: pc.printf("error de comando \n");break ; |
Camilokingxd | 3:c3d197a71ecd | 101 | } |
Camilokingxd | 2:274426ac7654 | 102 | } |
Camilokingxd | 2:274426ac7654 | 103 | else |
Camilokingxd | 2:274426ac7654 | 104 | { |
Camilokingxd | 2:274426ac7654 | 105 | pc.printf("el comando End no fue definido... vuelva a intentar \n"); |
Camilokingxd | 0:2032b926fd86 | 106 | } |
Camilokingxd | 0:2032b926fd86 | 107 | } |
Camilokingxd | 0:2032b926fd86 | 108 | } |
Camilokingxd | 2:274426ac7654 | 109 | int mm2pulse(float vmm) |
Camilokingxd | 2:274426ac7654 | 110 | { |
Camilokingxd | 2:274426ac7654 | 111 | if (vmm < MAXPOS) |
Camilokingxd | 2:274426ac7654 | 112 | return int (vmm*(MAXPULSE-MINPULSE)/(MAXPOS)) +MINPULSE; |
Camilokingxd | 2:274426ac7654 | 113 | return MAXPULSE; |
Camilokingxd | 2:274426ac7654 | 114 | } |
Camilokingxd | 2:274426ac7654 | 115 | void SetZ(uint8_t _z) |
Camilokingxd | 2:274426ac7654 | 116 | { |
Camilokingxd | 2:274426ac7654 | 117 | z=_z; |
Camilokingxd | 2:274426ac7654 | 118 | int PULSEZ=mm2pulse(z); |
Camilokingxd | 2:274426ac7654 | 119 | mypwmZ.pulsewidth_us(PULSEZ); |
Camilokingxd | 2:274426ac7654 | 120 | } |
Camilokingxd | 2:274426ac7654 | 121 | void Vertex2D(uint8_t _x,uint8_t _y) |
Camilokingxd | 2:274426ac7654 | 122 | { |
Camilokingxd | 2:274426ac7654 | 123 | x=_x; |
Camilokingxd | 2:274426ac7654 | 124 | y=_y; |
Camilokingxd | 2:274426ac7654 | 125 | int PULSEX=mm2pulse(x); |
Camilokingxd | 2:274426ac7654 | 126 | int PULSEY=mm2pulse(y); |
Camilokingxd | 2:274426ac7654 | 127 | mypwmX.pulsewidth_us(PULSEX); |
Camilokingxd | 2:274426ac7654 | 128 | mypwmY.pulsewidth_us(PULSEY); |
Camilokingxd | 2:274426ac7654 | 129 | } |
Camilokingxd | 0:2032b926fd86 | 130 | void program_serial() |
Camilokingxd | 0:2032b926fd86 | 131 | { |
Camilokingxd | 2:274426ac7654 | 132 | pc.baud(9600); |
Camilokingxd | 2:274426ac7654 | 133 | pc.format(8,SerialBase::None,1); |
Camilokingxd | 0:2032b926fd86 | 134 | } |
Camilokingxd | 0:2032b926fd86 | 135 | void ejecutar() |
Camilokingxd | 0:2032b926fd86 | 136 | { |
Camilokingxd | 2:274426ac7654 | 137 | program_serial(); |
Camilokingxd | 2:274426ac7654 | 138 | pc.printf("el programa se esta ejecutando \n"); |
Camilokingxd | 3:c3d197a71ecd | 139 | uint8_t a=0,b=0,c=0,d=0; |
Camilokingxd | 3:c3d197a71ecd | 140 | uint32_t l,l1,l2,l3; |
Camilokingxd | 3:c3d197a71ecd | 141 | MEM_TYPE val; // |
Camilokingxd | 2:274426ac7654 | 142 | |
Camilokingxd | 3:c3d197a71ecd | 143 | mem_get(&val); |
Camilokingxd | 3:c3d197a71ecd | 144 | l1=(val&0xff00)>>8; |
Camilokingxd | 3:c3d197a71ecd | 145 | l2=(val&0xff0000)>>16; |
Camilokingxd | 3:c3d197a71ecd | 146 | l3=(val&0xff000000)>>24; |
Camilokingxd | 3:c3d197a71ecd | 147 | l=val&0xff; |
Camilokingxd | 2:274426ac7654 | 148 | while(c!=CM_END) |
Camilokingxd | 2:274426ac7654 | 149 | { |
Camilokingxd | 2:274426ac7654 | 150 | a=l3; |
Camilokingxd | 2:274426ac7654 | 151 | pc.putc(a); |
Camilokingxd | 2:274426ac7654 | 152 | b=l2; |
Camilokingxd | 2:274426ac7654 | 153 | pc.putc(b); |
Camilokingxd | 2:274426ac7654 | 154 | c=l1; |
Camilokingxd | 2:274426ac7654 | 155 | pc.putc(c); |
Camilokingxd | 2:274426ac7654 | 156 | d=l; |
Camilokingxd | 2:274426ac7654 | 157 | pc.putc(d); |
Camilokingxd | 2:274426ac7654 | 158 | if(a==CM_SERVO) |
Camilokingxd | 2:274426ac7654 | 159 | { |
Camilokingxd | 2:274426ac7654 | 160 | Vertex2D(b,c); |
Camilokingxd | 2:274426ac7654 | 161 | } |
Camilokingxd | 2:274426ac7654 | 162 | else if(c==CM_SDRAW) |
Camilokingxd | 2:274426ac7654 | 163 | { |
Camilokingxd | 2:274426ac7654 | 164 | SetZ(DRAW); |
Camilokingxd | 2:274426ac7654 | 165 | } |
Camilokingxd | 2:274426ac7654 | 166 | else if(c==CM_SN0DRAW) |
Camilokingxd | 2:274426ac7654 | 167 | { |
Camilokingxd | 2:274426ac7654 | 168 | SetZ(NODRAW); |
Camilokingxd | 2:274426ac7654 | 169 | } |
Camilokingxd | 2:274426ac7654 | 170 | mem_get(&val); |
Camilokingxd | 3:c3d197a71ecd | 171 | l1=(val&0xff00)>>8; |
Camilokingxd | 2:274426ac7654 | 172 | l2=(val&0xff0000)>>16; |
Camilokingxd | 2:274426ac7654 | 173 | l3=(val&0xff000000)>>24; |
Camilokingxd | 2:274426ac7654 | 174 | l=val&0xff; |
Camilokingxd | 2:274426ac7654 | 175 | wait(1); |
Camilokingxd | 2:274426ac7654 | 176 | } |
Camilokingxd | 2:274426ac7654 | 177 | pc.printf("el programa se termino de ejecutar \n"); |
Camilokingxd | 3:c3d197a71ecd | 178 | mem_tail=0; |
Camilokingxd | 0:2032b926fd86 | 179 | } |
Camilokingxd | 2:274426ac7654 | 180 | int guardar() |
Camilokingxd | 0:2032b926fd86 | 181 | { |
Camilokingxd | 2:274426ac7654 | 182 | mem_free(); |
Camilokingxd | 3:c3d197a71ecd | 183 | uint32_t l=0; |
Camilokingxd | 3:c3d197a71ecd | 184 | uint8_t sl; |
Camilokingxd | 0:2032b926fd86 | 185 | program_serial(); |
Camilokingxd | 2:274426ac7654 | 186 | pc.printf("ingrese sus comandos y coordenadas \n"); |
Camilokingxd | 2:274426ac7654 | 187 | sl=pc.getc(); |
Camilokingxd | 2:274426ac7654 | 188 | pc.putc(sl); |
Camilokingxd | 2:274426ac7654 | 189 | while(sl!=CM_END) |
Camilokingxd | 0:2032b926fd86 | 190 | { |
Camilokingxd | 2:274426ac7654 | 191 | switch(sl) |
Camilokingxd | 0:2032b926fd86 | 192 | { |
Camilokingxd | 2:274426ac7654 | 193 | case CM_SERVO: |
Camilokingxd | 3:c3d197a71ecd | 194 | l=l+sl<<8; |
Camilokingxd | 2:274426ac7654 | 195 | sl=pc.getc(); |
Camilokingxd | 2:274426ac7654 | 196 | l=l+sl; |
Camilokingxd | 2:274426ac7654 | 197 | pc.putc(l); |
Camilokingxd | 2:274426ac7654 | 198 | l=l<<8; |
Camilokingxd | 2:274426ac7654 | 199 | sl=pc.getc(); |
Camilokingxd | 2:274426ac7654 | 200 | l=l+sl; |
Camilokingxd | 2:274426ac7654 | 201 | pc.putc(l); |
Camilokingxd | 2:274426ac7654 | 202 | l=l<<8; |
Camilokingxd | 2:274426ac7654 | 203 | sl=pc.getc(); |
Camilokingxd | 3:c3d197a71ecd | 204 | if(sl!=CM_STOP) |
Camilokingxd | 2:274426ac7654 | 205 | { |
Camilokingxd | 2:274426ac7654 | 206 | pc.printf("comando End no definido \n"); |
Camilokingxd | 2:274426ac7654 | 207 | return 1; |
Camilokingxd | 2:274426ac7654 | 208 | } |
Camilokingxd | 2:274426ac7654 | 209 | l=l+sl; |
Camilokingxd | 2:274426ac7654 | 210 | pc.putc(l); |
Camilokingxd | 3:c3d197a71ecd | 211 | mem_put(l); |
Camilokingxd | 0:2032b926fd86 | 212 | break; |
Camilokingxd | 2:274426ac7654 | 213 | case CM_SDRAW: |
Camilokingxd | 2:274426ac7654 | 214 | l=l+sl<<8; |
Camilokingxd | 2:274426ac7654 | 215 | sl=pc.getc(); |
Camilokingxd | 2:274426ac7654 | 216 | if(sl!=CM_STOP) |
Camilokingxd | 2:274426ac7654 | 217 | { |
Camilokingxd | 2:274426ac7654 | 218 | pc.printf("comando End no definido \n"); |
Camilokingxd | 2:274426ac7654 | 219 | return 1; |
Camilokingxd | 2:274426ac7654 | 220 | } |
Camilokingxd | 2:274426ac7654 | 221 | l=l+sl; |
Camilokingxd | 2:274426ac7654 | 222 | mem_put(l); |
Camilokingxd | 0:2032b926fd86 | 223 | break; |
Camilokingxd | 2:274426ac7654 | 224 | case CM_SN0DRAW: |
Camilokingxd | 2:274426ac7654 | 225 | l=l+sl<<8; |
Camilokingxd | 2:274426ac7654 | 226 | sl=pc.getc(); |
Camilokingxd | 2:274426ac7654 | 227 | if(sl!=CM_STOP) |
Camilokingxd | 2:274426ac7654 | 228 | { |
Camilokingxd | 2:274426ac7654 | 229 | pc.printf("comando End no definido \n"); |
Camilokingxd | 2:274426ac7654 | 230 | return 1; |
Camilokingxd | 2:274426ac7654 | 231 | } |
Camilokingxd | 2:274426ac7654 | 232 | l=l+sl; |
Camilokingxd | 2:274426ac7654 | 233 | mem_put(l); |
Camilokingxd | 0:2032b926fd86 | 234 | break; |
Camilokingxd | 0:2032b926fd86 | 235 | } |
Camilokingxd | 2:274426ac7654 | 236 | l=0; |
Camilokingxd | 2:274426ac7654 | 237 | sl=pc.getc(); |
Camilokingxd | 0:2032b926fd86 | 238 | } |
Camilokingxd | 2:274426ac7654 | 239 | sl=pc.getc(); |
Camilokingxd | 2:274426ac7654 | 240 | pc.printf("el programa termino de guardar \n"); |
Camilokingxd | 2:274426ac7654 | 241 | mem_put(0xfaf0); |
Camilokingxd | 2:274426ac7654 | 242 | return 0; |
Camilokingxd | 0:2032b926fd86 | 243 | } |