Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:cc4ffe9bb764, 2018-03-13 (annotated)
- Committer:
- DANIELOM1916
- Date:
- Tue Mar 13 22:47:00 2018 +0000
- Revision:
- 0:cc4ffe9bb764
PICCOLO
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| DANIELOM1916 | 0:cc4ffe9bb764 | 1 | #include "mbed.h" |
| DANIELOM1916 | 0:cc4ffe9bb764 | 2 | #include "draw.h" |
| DANIELOM1916 | 0:cc4ffe9bb764 | 3 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 4 | #define CM_EJECUTAR 0xff // FF COMO EJECUTAR |
| DANIELOM1916 | 0:cc4ffe9bb764 | 5 | #define CM_GUARDAR 0xfe // FE COMO GUARDAR |
| DANIELOM1916 | 0:cc4ffe9bb764 | 6 | #define CM_VERTEX2D 0xfd // FD COMO VERTEX |
| DANIELOM1916 | 0:cc4ffe9bb764 | 7 | #define CM_DRAW 0xfc // FC COMO DIBUJO |
| DANIELOM1916 | 0:cc4ffe9bb764 | 8 | #define CM_NODRAW 0xfb // FB COMO NO DIBUJO |
| DANIELOM1916 | 0:cc4ffe9bb764 | 9 | #define CM_STOP 0xfa // FA COMO PARADA |
| DANIELOM1916 | 0:cc4ffe9bb764 | 10 | #define CM_END 0xf0 // F0 COMO FINALIZAR LINEA |
| DANIELOM1916 | 0:cc4ffe9bb764 | 11 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 12 | #define MEM_SIZE 10 |
| DANIELOM1916 | 0:cc4ffe9bb764 | 13 | #define MEM_TYPE uint32_t |
| DANIELOM1916 | 0:cc4ffe9bb764 | 14 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 15 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 16 | int mem_head = 0; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 17 | int mem_tail = 0; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 18 | uint8_t full = 0; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 19 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 20 | Serial command(USBTX, USBRX); // configurar comando serial |
| DANIELOM1916 | 0:cc4ffe9bb764 | 21 | MEM_TYPE buffer[MEM_SIZE]; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 22 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 23 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 24 | void ejecutar(){ // subprograma ejecutar |
| DANIELOM1916 | 0:cc4ffe9bb764 | 25 | command.printf("se esta ejecutando el dibujo..."); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 26 | uint32_t mem_free(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 27 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 28 | while (command.getc() != CM_END) |
| DANIELOM1916 | 0:cc4ffe9bb764 | 29 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 30 | void initdraw(); // posicion inicio de dibujo |
| DANIELOM1916 | 0:cc4ffe9bb764 | 31 | void memory(); //revisar memoria |
| DANIELOM1916 | 0:cc4ffe9bb764 | 32 | void dinamic (); //memoria dinamica |
| DANIELOM1916 | 0:cc4ffe9bb764 | 33 | uint8_t mem_get (); //leer |
| DANIELOM1916 | 0:cc4ffe9bb764 | 34 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 35 | switch (command.getc()) |
| DANIELOM1916 | 0:cc4ffe9bb764 | 36 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 37 | case CM_VERTEX2D: |
| DANIELOM1916 | 0:cc4ffe9bb764 | 38 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 39 | for (int i=0; i<4; i++){ |
| DANIELOM1916 | 0:cc4ffe9bb764 | 40 | void vertex2d(uint8_t x, uint8_t y); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 41 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 42 | break; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 43 | case CM_DRAW: |
| DANIELOM1916 | 0:cc4ffe9bb764 | 44 | void draw (); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 45 | break; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 46 | case CM_NODRAW: |
| DANIELOM1916 | 0:cc4ffe9bb764 | 47 | void nodraw (); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 48 | break; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 49 | default: |
| DANIELOM1916 | 0:cc4ffe9bb764 | 50 | command.printf("error de comando"); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 51 | break ; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 52 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 53 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 54 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 55 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 56 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 57 | void guardar(){ // subprograma guardar |
| DANIELOM1916 | 0:cc4ffe9bb764 | 58 | command.printf("se inicia el comando de guardar.."); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 59 | uint32_t mem_free(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 60 | while (command.getc() != CM_END) |
| DANIELOM1916 | 0:cc4ffe9bb764 | 61 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 62 | void initdraw(); //posicion incial de dibujo |
| DANIELOM1916 | 0:cc4ffe9bb764 | 63 | void memory(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 64 | void dinamic (); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 65 | uint8_t mem_put(); //escribir |
| DANIELOM1916 | 0:cc4ffe9bb764 | 66 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 67 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 68 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 69 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 70 | void parada (){ //subprograma de parada |
| DANIELOM1916 | 0:cc4ffe9bb764 | 71 | command.printf("finalizando programa.."); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 72 | uint32_t mem_free(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 73 | void nodraw(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 74 | void home(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 75 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 76 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 77 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 78 | void init_serial() |
| DANIELOM1916 | 0:cc4ffe9bb764 | 79 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 80 | command.baud(9600); //configuracion velocidad de transmision |
| DANIELOM1916 | 0:cc4ffe9bb764 | 81 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 82 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 83 | int main() { // programa para reconocer efecutar o guardar |
| DANIELOM1916 | 0:cc4ffe9bb764 | 84 | init_servo(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 85 | init_serial(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 86 | home(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 87 | char read_cc; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 88 | while(1) |
| DANIELOM1916 | 0:cc4ffe9bb764 | 89 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 90 | switch (read_cc) { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 91 | case CM_EJECUTAR: ejecutar(); break; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 92 | case CM_GUARDAR: guardar(); break; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 93 | case CM_STOP: parada (); break; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 94 | default: command.printf("error de comando");break ; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 95 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 96 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 97 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 98 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 99 | uint32_t mem_free() //memoria libre |
| DANIELOM1916 | 0:cc4ffe9bb764 | 100 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 101 | mem_head=0; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 102 | full=0; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 103 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 104 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 105 | uint8_t mem_put(MEM_TYPE data) //Escribir en espacio de memoria |
| DANIELOM1916 | 0:cc4ffe9bb764 | 106 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 107 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 108 | if (full) |
| DANIELOM1916 | 0:cc4ffe9bb764 | 109 | return 1; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 110 | buffer[mem_head] = data; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 111 | mem_head += 1; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 112 | if (mem_head == MEM_SIZE) |
| DANIELOM1916 | 0:cc4ffe9bb764 | 113 | full =1; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 114 | return 0; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 115 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 116 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 117 | uint8_t mem_get(MEM_TYPE* data) // Leer espacio de memoria |
| DANIELOM1916 | 0:cc4ffe9bb764 | 118 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 119 | if (mem_head == 0) |
| DANIELOM1916 | 0:cc4ffe9bb764 | 120 | return 1; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 121 | if (mem_head == mem_tail) |
| DANIELOM1916 | 0:cc4ffe9bb764 | 122 | return 1; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 123 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 124 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 125 | *data = buffer[mem_tail]; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 126 | mem_tail += 1; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 127 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 128 | return 0; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 129 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 130 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 131 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 132 | void dinamic () // memoria dinamica de 32 bits |
| DANIELOM1916 | 0:cc4ffe9bb764 | 133 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 134 | int temp = command.getc(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 135 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 136 | temp = temp<<8 + command.getc(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 137 | temp = temp<<8 + command.getc(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 138 | temp = temp<<8 + command.getc(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 139 | temp = temp<<8 + command.getc(); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 140 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 141 | |
| DANIELOM1916 | 0:cc4ffe9bb764 | 142 | void memory () // memoria para obtener el dato |
| DANIELOM1916 | 0:cc4ffe9bb764 | 143 | { |
| DANIELOM1916 | 0:cc4ffe9bb764 | 144 | mem_put(command.getc()); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 145 | mem_put(command.getc()); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 146 | mem_put(command.getc()); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 147 | mem_put(command.getc()); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 148 | MEM_TYPE val; |
| DANIELOM1916 | 0:cc4ffe9bb764 | 149 | mem_get(&val); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 150 | command.putc(val); |
| DANIELOM1916 | 0:cc4ffe9bb764 | 151 | } |
| DANIELOM1916 | 0:cc4ffe9bb764 | 152 |