Daniel Vizcaya
/
04_RTOS_Embebidos
Entrega 3er corte - sistemas embebidos
04_main.cpp@1:fcdb45ee95b9, 2018-05-30 (annotated)
- Committer:
- Bethory
- Date:
- Wed May 30 04:46:28 2018 +0000
- Revision:
- 1:fcdb45ee95b9
- Parent:
- 0:6ad07c9019fd
Entrega Final
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Bethory | 0:6ad07c9019fd | 1 | #include "mbed.h" |
Bethory | 0:6ad07c9019fd | 2 | #include "draw.h" |
Bethory | 0:6ad07c9019fd | 3 | #include "stepmotor.h" |
Bethory | 0:6ad07c9019fd | 4 | //#include<string> |
Bethory | 0:6ad07c9019fd | 5 | |
Bethory | 0:6ad07c9019fd | 6 | #define CM_ENTER 0xF0 |
Bethory | 0:6ad07c9019fd | 7 | #define CM_PLAY 0xF6 |
Bethory | 0:6ad07c9019fd | 8 | #define CM_PAUSE 0xF7 |
Bethory | 0:6ad07c9019fd | 9 | #define CM_GIRO 0xF8 |
Bethory | 0:6ad07c9019fd | 10 | #define CM_TRASLADAR 0xF9 |
Bethory | 0:6ad07c9019fd | 11 | #define CM_STOP 0xFA |
Bethory | 0:6ad07c9019fd | 12 | #define CM_NODRAW 0xFB |
Bethory | 0:6ad07c9019fd | 13 | #define CM_DRAW 0XFC |
Bethory | 0:6ad07c9019fd | 14 | #define CM_VERTEX2D 0xFD |
Bethory | 0:6ad07c9019fd | 15 | #define CM_GUARDAR 0xFE |
Bethory | 0:6ad07c9019fd | 16 | #define CM_EJECUTAR 0xFF |
Bethory | 0:6ad07c9019fd | 17 | |
Bethory | 0:6ad07c9019fd | 18 | #define MEM_SIZE 100 |
Bethory | 0:6ad07c9019fd | 19 | #define MEM_TYPE uint32_t //significa que de ahora en más donde diga MEM_TYPE será tipo uint32_t |
Bethory | 0:6ad07c9019fd | 20 | #define PASOSxCUADRANTE 1000 //4096 |
Bethory | 0:6ad07c9019fd | 21 | uint8_t mem_head = 0; |
Bethory | 0:6ad07c9019fd | 22 | uint8_t mem_tail = 0; |
Bethory | 0:6ad07c9019fd | 23 | char temp; |
Bethory | 0:6ad07c9019fd | 24 | bool full = 0; |
Bethory | 0:6ad07c9019fd | 25 | int valor=1; |
Bethory | 0:6ad07c9019fd | 26 | uint32_t cuadrantes = 0; |
Bethory | 0:6ad07c9019fd | 27 | bool direccion = 0; |
Bethory | 0:6ad07c9019fd | 28 | |
Bethory | 0:6ad07c9019fd | 29 | MEM_TYPE buffer[MEM_SIZE]; |
Bethory | 0:6ad07c9019fd | 30 | stepmotor smotor1(D9, D10, D11, D12); |
Bethory | 0:6ad07c9019fd | 31 | stepmotor smotor2(D2, D6, D7, D8); |
Bethory | 0:6ad07c9019fd | 32 | Serial command(PC_10, PC_11, 9600); |
Bethory | 1:fcdb45ee95b9 | 33 | Serial letrero(PC_12, PD_2, 9600); |
Bethory | 0:6ad07c9019fd | 34 | |
Bethory | 0:6ad07c9019fd | 35 | Thread hilo1; |
Bethory | 0:6ad07c9019fd | 36 | |
Bethory | 0:6ad07c9019fd | 37 | void giroIzq() |
Bethory | 0:6ad07c9019fd | 38 | { |
Bethory | 0:6ad07c9019fd | 39 | smotor1.step(1000, 1); |
Bethory | 0:6ad07c9019fd | 40 | } |
Bethory | 0:6ad07c9019fd | 41 | |
Bethory | 0:6ad07c9019fd | 42 | void stepforward() |
Bethory | 0:6ad07c9019fd | 43 | { |
Bethory | 0:6ad07c9019fd | 44 | smotor1.step(cuadrantes * PASOSxCUADRANTE, !direccion); |
Bethory | 0:6ad07c9019fd | 45 | hilo1.join(); |
Bethory | 0:6ad07c9019fd | 46 | } |
Bethory | 0:6ad07c9019fd | 47 | |
Bethory | 0:6ad07c9019fd | 48 | int dec2hex(char data) |
Bethory | 0:6ad07c9019fd | 49 | { |
Bethory | 0:6ad07c9019fd | 50 | int dividendo = (int)data; |
Bethory | 0:6ad07c9019fd | 51 | int cociente = dividendo / 16; |
Bethory | 0:6ad07c9019fd | 52 | int residuo = dividendo % 16; |
Bethory | 0:6ad07c9019fd | 53 | dividendo = cociente * 10 + residuo; |
Bethory | 0:6ad07c9019fd | 54 | //cociente=dividendo/16; |
Bethory | 0:6ad07c9019fd | 55 | //residuo=dividendo%16; |
Bethory | 0:6ad07c9019fd | 56 | //letrero.printf("%X = %d\n",data,dividendo); |
Bethory | 0:6ad07c9019fd | 57 | return dividendo; |
Bethory | 0:6ad07c9019fd | 58 | } |
Bethory | 0:6ad07c9019fd | 59 | |
Bethory | 0:6ad07c9019fd | 60 | void giroDer() |
Bethory | 0:6ad07c9019fd | 61 | { |
Bethory | 0:6ad07c9019fd | 62 | smotor1.step(1000, 0); |
Bethory | 0:6ad07c9019fd | 63 | } |
Bethory | 0:6ad07c9019fd | 64 | |
Bethory | 0:6ad07c9019fd | 65 | void girar(uint8_t sentido) |
Bethory | 0:6ad07c9019fd | 66 | { |
Bethory | 0:6ad07c9019fd | 67 | letrero.printf(">>>> %d \n", sentido); |
Bethory | 0:6ad07c9019fd | 68 | uint32_t speed = 1500; |
Bethory | 0:6ad07c9019fd | 69 | smotor1.set_speed(speed); |
Bethory | 0:6ad07c9019fd | 70 | smotor2.set_speed(speed); |
Bethory | 0:6ad07c9019fd | 71 | if (sentido == 1) |
Bethory | 0:6ad07c9019fd | 72 | { |
Bethory | 0:6ad07c9019fd | 73 | letrero.printf("pa la derecha!!\n"); |
Bethory | 0:6ad07c9019fd | 74 | hilo1.start(giroIzq); |
Bethory | 0:6ad07c9019fd | 75 | smotor2.step(1000, 1); |
Bethory | 0:6ad07c9019fd | 76 | } |
Bethory | 0:6ad07c9019fd | 77 | else |
Bethory | 0:6ad07c9019fd | 78 | { |
Bethory | 0:6ad07c9019fd | 79 | letrero.printf("pa la izquierda!\n"); |
Bethory | 0:6ad07c9019fd | 80 | hilo1.start(giroDer); |
Bethory | 0:6ad07c9019fd | 81 | smotor2.step(1000, 0); |
Bethory | 0:6ad07c9019fd | 82 | } |
Bethory | 0:6ad07c9019fd | 83 | wait(2); |
Bethory | 0:6ad07c9019fd | 84 | } |
Bethory | 0:6ad07c9019fd | 85 | |
Bethory | 0:6ad07c9019fd | 86 | void mem_free() |
Bethory | 0:6ad07c9019fd | 87 | { //Estaba como uint32_t no como void |
Bethory | 0:6ad07c9019fd | 88 | mem_head = 0; |
Bethory | 0:6ad07c9019fd | 89 | full = 0; |
Bethory | 0:6ad07c9019fd | 90 | } |
Bethory | 0:6ad07c9019fd | 91 | |
Bethory | 0:6ad07c9019fd | 92 | bool mem_put(MEM_TYPE data) |
Bethory | 0:6ad07c9019fd | 93 | { //Escribir |
Bethory | 0:6ad07c9019fd | 94 | if (full) |
Bethory | 0:6ad07c9019fd | 95 | return 1; |
Bethory | 0:6ad07c9019fd | 96 | buffer[mem_head] = data; //carga en dato en el buffer |
Bethory | 0:6ad07c9019fd | 97 | mem_head += 1; |
Bethory | 0:6ad07c9019fd | 98 | if (mem_head == MEM_SIZE) |
Bethory | 0:6ad07c9019fd | 99 | full = 1; |
Bethory | 0:6ad07c9019fd | 100 | return 0; |
Bethory | 0:6ad07c9019fd | 101 | } |
Bethory | 0:6ad07c9019fd | 102 | |
Bethory | 0:6ad07c9019fd | 103 | bool mem_get(MEM_TYPE *data) |
Bethory | 0:6ad07c9019fd | 104 | { //Leer |
Bethory | 0:6ad07c9019fd | 105 | if (mem_head == 0) |
Bethory | 0:6ad07c9019fd | 106 | return 1; |
Bethory | 0:6ad07c9019fd | 107 | if (mem_head == mem_tail) |
Bethory | 0:6ad07c9019fd | 108 | return 1; |
Bethory | 0:6ad07c9019fd | 109 | *data = buffer[mem_tail]; |
Bethory | 0:6ad07c9019fd | 110 | mem_tail += 1; |
Bethory | 0:6ad07c9019fd | 111 | return 0; |
Bethory | 0:6ad07c9019fd | 112 | } |
Bethory | 0:6ad07c9019fd | 113 | |
Bethory | 0:6ad07c9019fd | 114 | void Rx_interrupt() |
Bethory | 0:6ad07c9019fd | 115 | { |
Bethory | 0:6ad07c9019fd | 116 | char raw_data; |
Bethory | 0:6ad07c9019fd | 117 | raw_data = command.getc(); |
Bethory | 0:6ad07c9019fd | 118 | letrero.printf(">>>>"); |
Bethory | 0:6ad07c9019fd | 119 | switch (raw_data) |
Bethory | 0:6ad07c9019fd | 120 | { |
Bethory | 0:6ad07c9019fd | 121 | case CM_PAUSE: |
Bethory | 0:6ad07c9019fd | 122 | valor=0; |
Bethory | 0:6ad07c9019fd | 123 | break; |
Bethory | 0:6ad07c9019fd | 124 | case CM_PLAY: |
Bethory | 0:6ad07c9019fd | 125 | valor=1; |
Bethory | 0:6ad07c9019fd | 126 | break; |
Bethory | 0:6ad07c9019fd | 127 | default: |
Bethory | 0:6ad07c9019fd | 128 | break; |
Bethory | 0:6ad07c9019fd | 129 | } |
Bethory | 0:6ad07c9019fd | 130 | return; |
Bethory | 0:6ad07c9019fd | 131 | } |
Bethory | 0:6ad07c9019fd | 132 | |
Bethory | 0:6ad07c9019fd | 133 | //quitar el for y poner un do,while |
Bethory | 0:6ad07c9019fd | 134 | //crear una variable global que sea la que le aumenta o no al j |
Bethory | 0:6ad07c9019fd | 135 | //así en la función de interrupción se cambia esa variable de 0 a 1 dependiendo si se quiere sumar o no |
Bethory | 0:6ad07c9019fd | 136 | |
Bethory | 0:6ad07c9019fd | 137 | void ejecutar() |
Bethory | 0:6ad07c9019fd | 138 | { |
Bethory | 0:6ad07c9019fd | 139 | letrero.printf("inicio de ejecutar...\n"); |
Bethory | 0:6ad07c9019fd | 140 | int j=0; |
Bethory | 0:6ad07c9019fd | 141 | do |
Bethory | 0:6ad07c9019fd | 142 | { |
Bethory | 0:6ad07c9019fd | 143 | letrero.attach(&Rx_interrupt, Serial::RxIrq); |
Bethory | 0:6ad07c9019fd | 144 | if (buffer[j] == CM_NODRAW) |
Bethory | 0:6ad07c9019fd | 145 | { |
Bethory | 0:6ad07c9019fd | 146 | nodraw(); |
Bethory | 0:6ad07c9019fd | 147 | } |
Bethory | 0:6ad07c9019fd | 148 | if (buffer[j] == CM_DRAW) |
Bethory | 0:6ad07c9019fd | 149 | { |
Bethory | 0:6ad07c9019fd | 150 | draw(); |
Bethory | 0:6ad07c9019fd | 151 | } |
Bethory | 0:6ad07c9019fd | 152 | if (buffer[j] == CM_STOP) |
Bethory | 0:6ad07c9019fd | 153 | { |
Bethory | 0:6ad07c9019fd | 154 | mem_free(); |
Bethory | 0:6ad07c9019fd | 155 | return; |
Bethory | 0:6ad07c9019fd | 156 | } |
Bethory | 0:6ad07c9019fd | 157 | temp = buffer[j] >> 24 & 0xFF; |
Bethory | 0:6ad07c9019fd | 158 | if (temp == CM_VERTEX2D) |
Bethory | 0:6ad07c9019fd | 159 | { |
Bethory | 0:6ad07c9019fd | 160 | uint8_t datoX = buffer[j] >> 16 & 0xFF; |
Bethory | 0:6ad07c9019fd | 161 | uint8_t datoY = buffer[j] >> 8 & 0xFF; |
Bethory | 0:6ad07c9019fd | 162 | vertex2d(datoX, datoY); |
Bethory | 0:6ad07c9019fd | 163 | } |
Bethory | 0:6ad07c9019fd | 164 | if (temp == CM_TRASLADAR) //no mover si draw se encuentra activo |
Bethory | 0:6ad07c9019fd | 165 | { |
Bethory | 0:6ad07c9019fd | 166 | uint32_t speed = 1500; |
Bethory | 0:6ad07c9019fd | 167 | smotor1.set_speed(speed); |
Bethory | 0:6ad07c9019fd | 168 | smotor2.set_speed(speed); |
Bethory | 0:6ad07c9019fd | 169 | cuadrantes = buffer[j] >> 16 & 0xFF; |
Bethory | 0:6ad07c9019fd | 170 | direccion = buffer[j] >> 8 & 0xFF; |
Bethory | 0:6ad07c9019fd | 171 | hilo1.start(stepforward); |
Bethory | 0:6ad07c9019fd | 172 | smotor2.step(cuadrantes * PASOSxCUADRANTE, direccion); |
Bethory | 0:6ad07c9019fd | 173 | wait(1); |
Bethory | 0:6ad07c9019fd | 174 | } |
Bethory | 0:6ad07c9019fd | 175 | j+=valor; |
Bethory | 0:6ad07c9019fd | 176 | }while(j <= mem_head); |
Bethory | 0:6ad07c9019fd | 177 | letrero.printf("fin de ejecutar...\n"); |
Bethory | 0:6ad07c9019fd | 178 | mem_free(); |
Bethory | 0:6ad07c9019fd | 179 | } |
Bethory | 0:6ad07c9019fd | 180 | |
Bethory | 0:6ad07c9019fd | 181 | void guardar() |
Bethory | 0:6ad07c9019fd | 182 | { |
Bethory | 0:6ad07c9019fd | 183 | letrero.printf("inicio de guardar...\n"); |
Bethory | 0:6ad07c9019fd | 184 | MEM_TYPE val; //significa que la variable "val" es del tipo uint32_t |
Bethory | 0:6ad07c9019fd | 185 | char dato1, dato2; |
Bethory | 0:6ad07c9019fd | 186 | do |
Bethory | 0:6ad07c9019fd | 187 | { |
Bethory | 0:6ad07c9019fd | 188 | dato1 = command.getc(); |
Bethory | 0:6ad07c9019fd | 189 | letrero.printf("%X\n",dato1); |
Bethory | 0:6ad07c9019fd | 190 | if (dato1 == CM_STOP) |
Bethory | 0:6ad07c9019fd | 191 | { |
Bethory | 0:6ad07c9019fd | 192 | dato2 = command.getc(); |
Bethory | 0:6ad07c9019fd | 193 | if (dato2 == CM_ENTER) |
Bethory | 0:6ad07c9019fd | 194 | { |
Bethory | 0:6ad07c9019fd | 195 | val = dato1; |
Bethory | 0:6ad07c9019fd | 196 | mem_put(val); |
Bethory | 0:6ad07c9019fd | 197 | full = 1; |
Bethory | 0:6ad07c9019fd | 198 | } |
Bethory | 0:6ad07c9019fd | 199 | } |
Bethory | 0:6ad07c9019fd | 200 | if (dato1 == CM_NODRAW | dato1 == CM_DRAW) |
Bethory | 0:6ad07c9019fd | 201 | { |
Bethory | 0:6ad07c9019fd | 202 | dato2 = command.getc(); |
Bethory | 0:6ad07c9019fd | 203 | if (dato2 == CM_ENTER) |
Bethory | 0:6ad07c9019fd | 204 | { |
Bethory | 0:6ad07c9019fd | 205 | val = dato1; |
Bethory | 0:6ad07c9019fd | 206 | mem_put(val); |
Bethory | 0:6ad07c9019fd | 207 | } |
Bethory | 0:6ad07c9019fd | 208 | } |
Bethory | 0:6ad07c9019fd | 209 | if (dato1 == CM_VERTEX2D) |
Bethory | 0:6ad07c9019fd | 210 | { |
Bethory | 0:6ad07c9019fd | 211 | dato2 = command.getc(); |
Bethory | 0:6ad07c9019fd | 212 | if (dec2hex(dato2) <= 50) |
Bethory | 0:6ad07c9019fd | 213 | { |
Bethory | 0:6ad07c9019fd | 214 | val = CM_VERTEX2D; |
Bethory | 0:6ad07c9019fd | 215 | val = val << 8; |
Bethory | 0:6ad07c9019fd | 216 | val = val | dato2; |
Bethory | 0:6ad07c9019fd | 217 | dato2 = command.getc(); |
Bethory | 0:6ad07c9019fd | 218 | if (dec2hex(dato2) <= 50) |
Bethory | 0:6ad07c9019fd | 219 | { |
Bethory | 0:6ad07c9019fd | 220 | val = val << 8; |
Bethory | 0:6ad07c9019fd | 221 | val = val | dato2; |
Bethory | 0:6ad07c9019fd | 222 | dato2 = command.getc(); |
Bethory | 0:6ad07c9019fd | 223 | if (dato2 == CM_ENTER) |
Bethory | 0:6ad07c9019fd | 224 | { |
Bethory | 0:6ad07c9019fd | 225 | val = val << 8; |
Bethory | 0:6ad07c9019fd | 226 | val = val | CM_ENTER; |
Bethory | 0:6ad07c9019fd | 227 | mem_put(val); |
Bethory | 0:6ad07c9019fd | 228 | } |
Bethory | 0:6ad07c9019fd | 229 | } |
Bethory | 0:6ad07c9019fd | 230 | } |
Bethory | 0:6ad07c9019fd | 231 | } |
Bethory | 0:6ad07c9019fd | 232 | if (dato1 == CM_TRASLADAR) |
Bethory | 0:6ad07c9019fd | 233 | { |
Bethory | 0:6ad07c9019fd | 234 | dato2 = command.getc(); |
Bethory | 0:6ad07c9019fd | 235 | if (dato2 <= 0xEF) |
Bethory | 0:6ad07c9019fd | 236 | { |
Bethory | 0:6ad07c9019fd | 237 | val = CM_TRASLADAR; |
Bethory | 0:6ad07c9019fd | 238 | val = val << 8; |
Bethory | 0:6ad07c9019fd | 239 | val = val | dato2; |
Bethory | 0:6ad07c9019fd | 240 | dato2 = command.getc(); |
Bethory | 0:6ad07c9019fd | 241 | if (dato2 <= 1) |
Bethory | 0:6ad07c9019fd | 242 | { |
Bethory | 0:6ad07c9019fd | 243 | val = val << 8; |
Bethory | 0:6ad07c9019fd | 244 | val = val | dato2; |
Bethory | 0:6ad07c9019fd | 245 | dato2 = command.getc(); |
Bethory | 0:6ad07c9019fd | 246 | if (dato2 == CM_ENTER) |
Bethory | 0:6ad07c9019fd | 247 | { |
Bethory | 0:6ad07c9019fd | 248 | val = val << 8; |
Bethory | 0:6ad07c9019fd | 249 | val = val | CM_ENTER; |
Bethory | 0:6ad07c9019fd | 250 | mem_put(val); |
Bethory | 0:6ad07c9019fd | 251 | } |
Bethory | 0:6ad07c9019fd | 252 | } |
Bethory | 0:6ad07c9019fd | 253 | } |
Bethory | 0:6ad07c9019fd | 254 | } |
Bethory | 0:6ad07c9019fd | 255 | } while (!full); |
Bethory | 0:6ad07c9019fd | 256 | letrero.printf("fin de guardar...\n"); |
Bethory | 0:6ad07c9019fd | 257 | } |
Bethory | 0:6ad07c9019fd | 258 | |
Bethory | 0:6ad07c9019fd | 259 | int main() |
Bethory | 0:6ad07c9019fd | 260 | { |
Bethory | 0:6ad07c9019fd | 261 | //command.baud(9600); |
Bethory | 0:6ad07c9019fd | 262 | init_servo(); |
Bethory | 0:6ad07c9019fd | 263 | //home(); //llama a no_draw y va a 0,0 |
Bethory | 0:6ad07c9019fd | 264 | |
Bethory | 0:6ad07c9019fd | 265 | char read_cc; |
Bethory | 0:6ad07c9019fd | 266 | while (1) |
Bethory | 0:6ad07c9019fd | 267 | { |
Bethory | 0:6ad07c9019fd | 268 | read_cc = command.getc(); |
Bethory | 0:6ad07c9019fd | 269 | switch (read_cc) |
Bethory | 0:6ad07c9019fd | 270 | { |
Bethory | 0:6ad07c9019fd | 271 | case CM_GUARDAR: |
Bethory | 0:6ad07c9019fd | 272 | if (read_cc = command.getc() == CM_ENTER) |
Bethory | 0:6ad07c9019fd | 273 | { |
Bethory | 0:6ad07c9019fd | 274 | guardar(); |
Bethory | 0:6ad07c9019fd | 275 | } |
Bethory | 0:6ad07c9019fd | 276 | break; //FE |
Bethory | 0:6ad07c9019fd | 277 | case CM_EJECUTAR: |
Bethory | 0:6ad07c9019fd | 278 | if (read_cc = command.getc() == CM_ENTER) |
Bethory | 0:6ad07c9019fd | 279 | { |
Bethory | 0:6ad07c9019fd | 280 | ejecutar(); |
Bethory | 0:6ad07c9019fd | 281 | } |
Bethory | 0:6ad07c9019fd | 282 | break; //FF |
Bethory | 0:6ad07c9019fd | 283 | case CM_GIRO: |
Bethory | 0:6ad07c9019fd | 284 | uint8_t sentido = command.getc(); |
Bethory | 0:6ad07c9019fd | 285 | if (sentido <= 1) |
Bethory | 0:6ad07c9019fd | 286 | { |
Bethory | 0:6ad07c9019fd | 287 | read_cc = command.getc(); |
Bethory | 0:6ad07c9019fd | 288 | if (read_cc = command.getc() == CM_ENTER) |
Bethory | 0:6ad07c9019fd | 289 | { |
Bethory | 0:6ad07c9019fd | 290 | girar(sentido); |
Bethory | 0:6ad07c9019fd | 291 | } |
Bethory | 0:6ad07c9019fd | 292 | } |
Bethory | 0:6ad07c9019fd | 293 | break; //F8 |
Bethory | 0:6ad07c9019fd | 294 | default: |
Bethory | 0:6ad07c9019fd | 295 | letrero.printf("Paila \n"); |
Bethory | 0:6ad07c9019fd | 296 | break; |
Bethory | 0:6ad07c9019fd | 297 | } |
Bethory | 0:6ad07c9019fd | 298 | } |
Bethory | 0:6ad07c9019fd | 299 | } |
Bethory | 0:6ad07c9019fd | 300 | /* |
Bethory | 0:6ad07c9019fd | 301 | 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 | 0:6ad07c9019fd | 302 | FE F0 FD 12 34 F0 FC F0 FD 10 10 F0 FD 40 10 F0 FD 40 40 F0 FD 10 40 F0 FB F0 F9 05 00 F0 FA F0 FF F0 |
Bethory | 0:6ad07c9019fd | 303 | FE F0 FD 10 10 F0 FC F0 FD 40 10 F0 FD 40 40 F0 FD 10 40 F0 FD 10 10 F0 FB F0 FA F0 FF F0 //cuadrado |
Bethory | 0:6ad07c9019fd | 304 | FE F0 FD 10 10 F0 FC F0 FD 40 10 F0 FD 25 40 F0 FD 10 10 F0 FB F0 FA F0 FF F0 //triángulo |
Bethory | 0:6ad07c9019fd | 305 | FE F0 F9 02 00 F0 F9 02 01 F0 F9 01 01 F0 F9 01 00 F0 FA F0 FF F0 //prueba trasladar |
Bethory | 0:6ad07c9019fd | 306 | https://os.mbed.com/users/fabeltranm/ |
Bethory | 0:6ad07c9019fd | 307 | */ |
Bethory | 0:6ad07c9019fd | 308 | /* |
Bethory | 0:6ad07c9019fd | 309 | #include "mbed.h" |
Bethory | 0:6ad07c9019fd | 310 | |
Bethory | 0:6ad07c9019fd | 311 | void print_char(char c = '*') |
Bethory | 0:6ad07c9019fd | 312 | { |
Bethory | 0:6ad07c9019fd | 313 | printf("%c", c); |
Bethory | 0:6ad07c9019fd | 314 | fflush(stdout); |
Bethory | 0:6ad07c9019fd | 315 | } |
Bethory | 0:6ad07c9019fd | 316 | |
Bethory | 0:6ad07c9019fd | 317 | Thread thread; |
Bethory | 0:6ad07c9019fd | 318 | |
Bethory | 0:6ad07c9019fd | 319 | DigitalOut led1(LED1); |
Bethory | 0:6ad07c9019fd | 320 | |
Bethory | 0:6ad07c9019fd | 321 | void print_thread() |
Bethory | 0:6ad07c9019fd | 322 | { |
Bethory | 0:6ad07c9019fd | 323 | while (true) { |
Bethory | 0:6ad07c9019fd | 324 | wait(1); |
Bethory | 0:6ad07c9019fd | 325 | print_char(); |
Bethory | 0:6ad07c9019fd | 326 | } |
Bethory | 0:6ad07c9019fd | 327 | } |
Bethory | 0:6ad07c9019fd | 328 | |
Bethory | 0:6ad07c9019fd | 329 | int main() |
Bethory | 0:6ad07c9019fd | 330 | { |
Bethory | 0:6ad07c9019fd | 331 | printf("\n\n*** RTOS basic example ***\n"); |
Bethory | 0:6ad07c9019fd | 332 | |
Bethory | 0:6ad07c9019fd | 333 | thread.start(print_thread); |
Bethory | 0:6ad07c9019fd | 334 | |
Bethory | 0:6ad07c9019fd | 335 | while (true) { |
Bethory | 0:6ad07c9019fd | 336 | led1 = !led1; |
Bethory | 0:6ad07c9019fd | 337 | wait(0.5); |
Bethory | 0:6ad07c9019fd | 338 | } |
Bethory | 0:6ad07c9019fd | 339 | } |
Bethory | 0:6ad07c9019fd | 340 | */ |