Acercamiento a lo que pide el profe
Fork of 01-01EjercicioFuncionXY by
Tomando como base los ejemplos que el Ing. Ferney subió, realizamos este primer acercamiento al objetivo del primer corte.
en síntesis se generó el código de guardar y ejecutar.
Slds!
01_main.cpp@6:87a37f4163bd, 2018-04-25 (annotated)
- Committer:
- Bethory
- Date:
- Wed Apr 25 02:12:19 2018 +0000
- Revision:
- 6:87a37f4163bd
- Parent:
- 5:8e100835b017
Ejercicio 2do corte
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Bethory | 3:3665eb7346e2 | 1 | #include "mbed.h" |
Bethory | 3:3665eb7346e2 | 2 | #include "draw.h" |
Bethory | 6:87a37f4163bd | 3 | #include "stepmotor.h" |
Bethory | 6:87a37f4163bd | 4 | |
Bethory | 3:3665eb7346e2 | 5 | #define CM_EJECUTAR 0xFF |
Bethory | 3:3665eb7346e2 | 6 | #define CM_GUARDAR 0xFE |
Bethory | 6:87a37f4163bd | 7 | #define CM_TRASLADAR 0xF9 |
Bethory | 3:3665eb7346e2 | 8 | #define CM_VERTEX2D 0xFD |
Bethory | 3:3665eb7346e2 | 9 | #define CM_DRAW 0XFC |
Bethory | 3:3665eb7346e2 | 10 | #define CM_NODRAW 0xFB |
Bethory | 3:3665eb7346e2 | 11 | #define CM_STOP 0xFA |
Bethory | 4:8a884a5dd8c8 | 12 | #define CM_ENTER 0xF0 |
Bethory | 6:87a37f4163bd | 13 | #define CM_GIRO 0xF8 |
Bethory | 3:3665eb7346e2 | 14 | |
Bethory | 6:87a37f4163bd | 15 | #define MEM_SIZE 100 |
Bethory | 3:3665eb7346e2 | 16 | #define MEM_TYPE uint32_t //significa que de ahora en más donde diga MEM_TYPE será tipo uint32_t |
Bethory | 6:87a37f4163bd | 17 | #define PASOSxCUADRANTE 250 //4096 |
Bethory | 3:3665eb7346e2 | 18 | uint8_t mem_head = 0; |
Bethory | 3:3665eb7346e2 | 19 | uint8_t mem_tail = 0; |
Bethory | 6:87a37f4163bd | 20 | char temp; |
Bethory | 3:3665eb7346e2 | 21 | bool full = 0; |
Bethory | 3:3665eb7346e2 | 22 | |
Bethory | 3:3665eb7346e2 | 23 | MEM_TYPE buffer[MEM_SIZE]; |
Bethory | 6:87a37f4163bd | 24 | stepmotor smotor1(D9,D10,D11,D12); |
Bethory | 6:87a37f4163bd | 25 | stepmotor smotor2(D2,D6,D7,D8); |
Bethory | 3:3665eb7346e2 | 26 | Serial command(USBTX, USBRX); |
Bethory | 3:3665eb7346e2 | 27 | |
Bethory | 6:87a37f4163bd | 28 | void girar(uint8_t sentido) |
Bethory | 6:87a37f4163bd | 29 | { |
Bethory | 6:87a37f4163bd | 30 | command.printf(">>>> %d \n",sentido); |
Bethory | 6:87a37f4163bd | 31 | uint32_t speed = 1500; |
Bethory | 6:87a37f4163bd | 32 | smotor1.set_speed(speed); |
Bethory | 6:87a37f4163bd | 33 | smotor2.set_speed(speed); |
Bethory | 6:87a37f4163bd | 34 | if(sentido==1) |
Bethory | 6:87a37f4163bd | 35 | { |
Bethory | 6:87a37f4163bd | 36 | command.printf("pa la derecha!!\n"); |
Bethory | 6:87a37f4163bd | 37 | smotor1.step(7* PASOSxCUADRANTE, 0); |
Bethory | 6:87a37f4163bd | 38 | smotor2.step(7 * PASOSxCUADRANTE, 1); |
Bethory | 6:87a37f4163bd | 39 | |
Bethory | 6:87a37f4163bd | 40 | }else |
Bethory | 6:87a37f4163bd | 41 | { |
Bethory | 6:87a37f4163bd | 42 | command.printf("pa la izquierda!\n"); |
Bethory | 6:87a37f4163bd | 43 | smotor1.step(7 * PASOSxCUADRANTE, 1); |
Bethory | 6:87a37f4163bd | 44 | smotor2.step(7 * PASOSxCUADRANTE, 0); |
Bethory | 6:87a37f4163bd | 45 | } |
Bethory | 6:87a37f4163bd | 46 | wait(2); |
Bethory | 3:3665eb7346e2 | 47 | } |
Bethory | 3:3665eb7346e2 | 48 | |
Bethory | 6:87a37f4163bd | 49 | void mem_free() |
Bethory | 6:87a37f4163bd | 50 | { //Estaba como uint32_t no como void |
Bethory | 6:87a37f4163bd | 51 | mem_head = 0; |
Bethory | 6:87a37f4163bd | 52 | full = 0; |
Bethory | 6:87a37f4163bd | 53 | } |
Bethory | 6:87a37f4163bd | 54 | |
Bethory | 6:87a37f4163bd | 55 | bool mem_put(MEM_TYPE data) |
Bethory | 6:87a37f4163bd | 56 | { //Escribir |
Bethory | 3:3665eb7346e2 | 57 | if (full) |
Bethory | 3:3665eb7346e2 | 58 | return 1; |
Bethory | 3:3665eb7346e2 | 59 | buffer[mem_head] = data; //carga en dato en el buffer |
Bethory | 3:3665eb7346e2 | 60 | mem_head += 1; |
Bethory | 3:3665eb7346e2 | 61 | if (mem_head == MEM_SIZE) |
Bethory | 6:87a37f4163bd | 62 | full = 1; |
Bethory | 3:3665eb7346e2 | 63 | return 0; |
Bethory | 3:3665eb7346e2 | 64 | } |
Bethory | 3:3665eb7346e2 | 65 | |
Bethory | 6:87a37f4163bd | 66 | bool mem_get(MEM_TYPE *data) |
Bethory | 6:87a37f4163bd | 67 | { //Leer |
Bethory | 3:3665eb7346e2 | 68 | if (mem_head == 0) |
Bethory | 6:87a37f4163bd | 69 | return 1; |
Bethory | 3:3665eb7346e2 | 70 | if (mem_head == mem_tail) |
Bethory | 6:87a37f4163bd | 71 | return 1; |
Bethory | 3:3665eb7346e2 | 72 | *data = buffer[mem_tail]; |
Bethory | 3:3665eb7346e2 | 73 | mem_tail += 1; |
Bethory | 3:3665eb7346e2 | 74 | return 0; |
Bethory | 3:3665eb7346e2 | 75 | } |
Bethory | 3:3665eb7346e2 | 76 | |
Bethory | 6:87a37f4163bd | 77 | void ejecutar() |
Bethory | 6:87a37f4163bd | 78 | { |
Bethory | 6:87a37f4163bd | 79 | command.printf("inicio de ejecutar...\n"); |
Bethory | 6:87a37f4163bd | 80 | for (int j = 0; j <= mem_head - 1; j++) |
Bethory | 6:87a37f4163bd | 81 | { |
Bethory | 6:87a37f4163bd | 82 | command.printf("%x\n", buffer[j]); |
Bethory | 6:87a37f4163bd | 83 | if (buffer[j] == CM_NODRAW) |
Bethory | 6:87a37f4163bd | 84 | { |
Bethory | 6:87a37f4163bd | 85 | nodraw(); |
Bethory | 6:87a37f4163bd | 86 | } |
Bethory | 6:87a37f4163bd | 87 | if (buffer[j] == CM_DRAW) |
Bethory | 6:87a37f4163bd | 88 | { |
Bethory | 6:87a37f4163bd | 89 | draw(); |
Bethory | 6:87a37f4163bd | 90 | } |
Bethory | 6:87a37f4163bd | 91 | if (buffer[j] == CM_STOP) |
Bethory | 6:87a37f4163bd | 92 | { |
Bethory | 6:87a37f4163bd | 93 | mem_free(); |
Bethory | 6:87a37f4163bd | 94 | return; |
Bethory | 6:87a37f4163bd | 95 | } |
Bethory | 6:87a37f4163bd | 96 | temp = buffer[j] >> 24 & 0xFF; |
Bethory | 6:87a37f4163bd | 97 | if (temp == CM_VERTEX2D) |
Bethory | 6:87a37f4163bd | 98 | { |
Bethory | 6:87a37f4163bd | 99 | uint8_t datoX = buffer[j] >> 16 & 0xFF; |
Bethory | 6:87a37f4163bd | 100 | uint8_t datoY = buffer[j] >> 8 & 0xFF; |
Bethory | 6:87a37f4163bd | 101 | vertex2d(datoX, datoY); |
Bethory | 6:87a37f4163bd | 102 | //wait(1); |
Bethory | 6:87a37f4163bd | 103 | } |
Bethory | 6:87a37f4163bd | 104 | if (temp == CM_TRASLADAR) //no mover si draw se encuentra activo |
Bethory | 6:87a37f4163bd | 105 | { |
Bethory | 6:87a37f4163bd | 106 | uint32_t speed = 1500; |
Bethory | 6:87a37f4163bd | 107 | smotor1.set_speed(speed); |
Bethory | 6:87a37f4163bd | 108 | smotor2.set_speed(speed); |
Bethory | 6:87a37f4163bd | 109 | uint32_t cuadrantes = buffer[j] >> 16 & 0xFF; |
Bethory | 6:87a37f4163bd | 110 | bool direccion = buffer[j] >> 8 & 0xFF; |
Bethory | 6:87a37f4163bd | 111 | smotor1.step(cuadrantes * PASOSxCUADRANTE, direccion); |
Bethory | 6:87a37f4163bd | 112 | smotor2.step(cuadrantes * PASOSxCUADRANTE, direccion); |
Bethory | 6:87a37f4163bd | 113 | wait(2); |
Bethory | 6:87a37f4163bd | 114 | } |
Bethory | 5:8e100835b017 | 115 | } |
Bethory | 6:87a37f4163bd | 116 | command.printf("fin de ejecutar...\n"); |
Bethory | 6:87a37f4163bd | 117 | mem_free(); |
Bethory | 3:3665eb7346e2 | 118 | } |
Bethory | 3:3665eb7346e2 | 119 | |
Bethory | 6:87a37f4163bd | 120 | void guardar() |
Bethory | 6:87a37f4163bd | 121 | { |
Bethory | 6:87a37f4163bd | 122 | command.printf("inicio de guardar...\n"); |
Bethory | 5:8e100835b017 | 123 | MEM_TYPE val; //significa que la variable "val" es del tipo uint32_t |
Bethory | 6:87a37f4163bd | 124 | char dato1, dato2; |
Bethory | 6:87a37f4163bd | 125 | do |
Bethory | 6:87a37f4163bd | 126 | { |
Bethory | 6:87a37f4163bd | 127 | dato1 = command.getc(); |
Bethory | 6:87a37f4163bd | 128 | if (dato1 == CM_STOP) |
Bethory | 6:87a37f4163bd | 129 | { |
Bethory | 6:87a37f4163bd | 130 | dato2 = command.getc(); |
Bethory | 6:87a37f4163bd | 131 | if (dato2 == CM_ENTER) |
Bethory | 6:87a37f4163bd | 132 | { |
Bethory | 6:87a37f4163bd | 133 | val = dato1; |
Bethory | 5:8e100835b017 | 134 | mem_put(val); |
Bethory | 5:8e100835b017 | 135 | return; |
Bethory | 5:8e100835b017 | 136 | } |
Bethory | 4:8a884a5dd8c8 | 137 | } |
Bethory | 6:87a37f4163bd | 138 | if (dato1 == CM_NODRAW | dato1 == CM_DRAW) |
Bethory | 6:87a37f4163bd | 139 | { |
Bethory | 6:87a37f4163bd | 140 | dato2 = command.getc(); |
Bethory | 6:87a37f4163bd | 141 | if (dato2 == CM_ENTER) |
Bethory | 6:87a37f4163bd | 142 | { |
Bethory | 6:87a37f4163bd | 143 | val = dato1; |
Bethory | 5:8e100835b017 | 144 | mem_put(val); |
Bethory | 5:8e100835b017 | 145 | } |
Bethory | 4:8a884a5dd8c8 | 146 | } |
Bethory | 6:87a37f4163bd | 147 | if (dato1 == CM_VERTEX2D) |
Bethory | 6:87a37f4163bd | 148 | { |
Bethory | 6:87a37f4163bd | 149 | dato2 = command.getc(); |
Bethory | 6:87a37f4163bd | 150 | if (dato2 <= 0x32) |
Bethory | 6:87a37f4163bd | 151 | { |
Bethory | 6:87a37f4163bd | 152 | val = CM_VERTEX2D; |
Bethory | 6:87a37f4163bd | 153 | val = val << 8; |
Bethory | 6:87a37f4163bd | 154 | val = val | dato2; |
Bethory | 6:87a37f4163bd | 155 | dato2 = command.getc(); |
Bethory | 6:87a37f4163bd | 156 | if (dato2 <= 0x32) |
Bethory | 6:87a37f4163bd | 157 | { |
Bethory | 6:87a37f4163bd | 158 | val = val << 8; |
Bethory | 6:87a37f4163bd | 159 | val = val | dato2; |
Bethory | 6:87a37f4163bd | 160 | dato2 = command.getc(); |
Bethory | 6:87a37f4163bd | 161 | if (dato2 == CM_ENTER) |
Bethory | 6:87a37f4163bd | 162 | { |
Bethory | 6:87a37f4163bd | 163 | val = val << 8; |
Bethory | 6:87a37f4163bd | 164 | val = val | CM_ENTER; |
Bethory | 6:87a37f4163bd | 165 | mem_put(val); |
Bethory | 6:87a37f4163bd | 166 | } |
Bethory | 6:87a37f4163bd | 167 | } |
Bethory | 6:87a37f4163bd | 168 | } |
Bethory | 6:87a37f4163bd | 169 | } |
Bethory | 6:87a37f4163bd | 170 | if (dato1 == CM_TRASLADAR) |
Bethory | 6:87a37f4163bd | 171 | { |
Bethory | 6:87a37f4163bd | 172 | dato2 = command.getc(); |
Bethory | 6:87a37f4163bd | 173 | if (dato2 <= 0xEF) |
Bethory | 6:87a37f4163bd | 174 | { |
Bethory | 6:87a37f4163bd | 175 | val = CM_TRASLADAR; |
Bethory | 6:87a37f4163bd | 176 | val = val << 8; |
Bethory | 6:87a37f4163bd | 177 | val = val | dato2; |
Bethory | 6:87a37f4163bd | 178 | dato2 = command.getc(); |
Bethory | 6:87a37f4163bd | 179 | if (dato2 <= 1) |
Bethory | 6:87a37f4163bd | 180 | { |
Bethory | 6:87a37f4163bd | 181 | val = val << 8; |
Bethory | 6:87a37f4163bd | 182 | val = val | dato2; |
Bethory | 6:87a37f4163bd | 183 | dato2 = command.getc(); |
Bethory | 6:87a37f4163bd | 184 | if (dato2 == CM_ENTER) |
Bethory | 6:87a37f4163bd | 185 | { |
Bethory | 6:87a37f4163bd | 186 | val = val << 8; |
Bethory | 6:87a37f4163bd | 187 | val = val | CM_ENTER; |
Bethory | 5:8e100835b017 | 188 | mem_put(val); |
Bethory | 5:8e100835b017 | 189 | } |
Bethory | 6:87a37f4163bd | 190 | } |
Bethory | 6:87a37f4163bd | 191 | } |
Bethory | 5:8e100835b017 | 192 | } |
Bethory | 6:87a37f4163bd | 193 | } while (!full); |
Bethory | 6:87a37f4163bd | 194 | command.printf("fin de guardar...\n"); |
Bethory | 4:8a884a5dd8c8 | 195 | } |
Bethory | 4:8a884a5dd8c8 | 196 | |
Bethory | 6:87a37f4163bd | 197 | int main() |
Bethory | 6:87a37f4163bd | 198 | { |
Bethory | 4:8a884a5dd8c8 | 199 | command.baud(9600); |
Bethory | 6:87a37f4163bd | 200 | init_servo(); |
Bethory | 6:87a37f4163bd | 201 | //home(); //llama a no_draw y va a 0,0 |
Bethory | 6:87a37f4163bd | 202 | |
Bethory | 4:8a884a5dd8c8 | 203 | char read_cc; |
Bethory | 6:87a37f4163bd | 204 | while (1) |
Bethory | 6:87a37f4163bd | 205 | { |
Bethory | 6:87a37f4163bd | 206 | read_cc = command.getc(); |
Bethory | 6:87a37f4163bd | 207 | switch (read_cc) |
Bethory | 6:87a37f4163bd | 208 | { |
Bethory | 6:87a37f4163bd | 209 | case CM_GUARDAR: |
Bethory | 6:87a37f4163bd | 210 | if (read_cc = command.getc() == CM_ENTER) |
Bethory | 6:87a37f4163bd | 211 | { |
Bethory | 6:87a37f4163bd | 212 | guardar(); |
Bethory | 6:87a37f4163bd | 213 | } |
Bethory | 6:87a37f4163bd | 214 | break; //FE |
Bethory | 6:87a37f4163bd | 215 | case CM_EJECUTAR: |
Bethory | 6:87a37f4163bd | 216 | if (read_cc = command.getc() == CM_ENTER) |
Bethory | 6:87a37f4163bd | 217 | { |
Bethory | 6:87a37f4163bd | 218 | ejecutar(); |
Bethory | 6:87a37f4163bd | 219 | } |
Bethory | 6:87a37f4163bd | 220 | break; //FF |
Bethory | 6:87a37f4163bd | 221 | case CM_GIRO: |
Bethory | 6:87a37f4163bd | 222 | uint8_t sentido = command.getc(); |
Bethory | 6:87a37f4163bd | 223 | if (sentido <= 1) |
Bethory | 6:87a37f4163bd | 224 | { |
Bethory | 6:87a37f4163bd | 225 | read_cc = command.getc(); |
Bethory | 6:87a37f4163bd | 226 | if (read_cc = command.getc() == CM_ENTER) |
Bethory | 6:87a37f4163bd | 227 | { |
Bethory | 6:87a37f4163bd | 228 | girar(sentido); |
Bethory | 6:87a37f4163bd | 229 | } |
Bethory | 6:87a37f4163bd | 230 | } |
Bethory | 6:87a37f4163bd | 231 | break; //F8 |
Bethory | 6:87a37f4163bd | 232 | default: |
Bethory | 6:87a37f4163bd | 233 | command.printf("Paila \n"); |
Bethory | 6:87a37f4163bd | 234 | break; |
Bethory | 4:8a884a5dd8c8 | 235 | } |
Bethory | 6:87a37f4163bd | 236 | } |
Bethory | 4:8a884a5dd8c8 | 237 | } |
Bethory | 4:8a884a5dd8c8 | 238 | /* |
Bethory | 6:87a37f4163bd | 239 | FE F0 FD 12 34 F0 FB F0 FD 0A 0A F0 FD 28 0A F0 FD 28 28 F0 FD 0A 28 F0 F9 27 00 F0 FC F0 FA F0 FF F0 |
Bethory | 6:87a37f4163bd | 240 | FE F0 F9 02 00 F0 F9 02 01 F0 F9 01 01 F0 F9 01 00 F0 FA F0 FF F0 |
Bethory | 6:87a37f4163bd | 241 | https://os.mbed.com/users/fabeltranm/ |
Bethory | 3:3665eb7346e2 | 242 | */ |