Giro en su propio eje Presentado por: Julio Fajardo, Cesar Pacheco, Angel Trujillo, Daniel Vizcaya

Dependencies:   mbed

Fork of 01_Embebidos by Daniel Vizcaya

Committer:
Bethory
Date:
Wed Mar 14 04:57:30 2018 +0000
Revision:
4:8a884a5dd8c8
Parent:
3:3665eb7346e2
Child:
5:8e100835b017
Entrega para que reciba el c?digo el mi?rcoles; ; Presentado por:; Angel Trujillo; Cesar; Julio; Daniel Vizcaya

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bethory 3:3665eb7346e2 1 #include "mbed.h"
Bethory 3:3665eb7346e2 2 #include "draw.h"
Bethory 3:3665eb7346e2 3 #define CM_EJECUTAR 0xFF
Bethory 3:3665eb7346e2 4 #define CM_GUARDAR 0xFE
Bethory 3:3665eb7346e2 5 #define CM_VERTEX2D 0xFD
Bethory 3:3665eb7346e2 6 #define CM_DRAW 0XFC
Bethory 3:3665eb7346e2 7 #define CM_NODRAW 0xFB
Bethory 3:3665eb7346e2 8 #define CM_STOP 0xFA
Bethory 4:8a884a5dd8c8 9 #define CM_ENTER 0xF0
Bethory 3:3665eb7346e2 10
Bethory 3:3665eb7346e2 11 #define MEM_SIZE 10
Bethory 3:3665eb7346e2 12 #define MEM_TYPE uint32_t //significa que de ahora en más donde diga MEM_TYPE será tipo uint32_t
Bethory 3:3665eb7346e2 13
Bethory 3:3665eb7346e2 14 uint8_t mem_head = 0;
Bethory 3:3665eb7346e2 15 uint8_t mem_tail = 0;
Bethory 3:3665eb7346e2 16 bool full = 0;
Bethory 3:3665eb7346e2 17
Bethory 3:3665eb7346e2 18 MEM_TYPE buffer[MEM_SIZE];
Bethory 3:3665eb7346e2 19 Serial command(USBTX, USBRX);
Bethory 3:3665eb7346e2 20
Bethory 3:3665eb7346e2 21 void mem_free(){ //Estaba como uint32_t no como void
Bethory 3:3665eb7346e2 22 mem_head=0;
Bethory 3:3665eb7346e2 23 full=0;
Bethory 3:3665eb7346e2 24 }
Bethory 3:3665eb7346e2 25
Bethory 3:3665eb7346e2 26 bool mem_put(MEM_TYPE data){ //Escribir
Bethory 3:3665eb7346e2 27 if (full)
Bethory 3:3665eb7346e2 28 return 1;
Bethory 3:3665eb7346e2 29 buffer[mem_head] = data; //carga en dato en el buffer
Bethory 3:3665eb7346e2 30 mem_head += 1;
Bethory 3:3665eb7346e2 31 if (mem_head == MEM_SIZE)
Bethory 3:3665eb7346e2 32 full =1;
Bethory 3:3665eb7346e2 33 return 0;
Bethory 3:3665eb7346e2 34 }
Bethory 3:3665eb7346e2 35
Bethory 3:3665eb7346e2 36 bool mem_get(MEM_TYPE* data){ //Leer
Bethory 3:3665eb7346e2 37 if (mem_head == 0)
Bethory 3:3665eb7346e2 38 return 1;
Bethory 3:3665eb7346e2 39 if (mem_head == mem_tail)
Bethory 3:3665eb7346e2 40 return 1;
Bethory 3:3665eb7346e2 41 *data = buffer[mem_tail];
Bethory 3:3665eb7346e2 42 mem_tail += 1;
Bethory 3:3665eb7346e2 43 return 0;
Bethory 3:3665eb7346e2 44 }
Bethory 3:3665eb7346e2 45
Bethory 3:3665eb7346e2 46 void ejecutar(){
Bethory 3:3665eb7346e2 47 command.printf("se inicia el comando de ejecutar...\n");
Bethory 3:3665eb7346e2 48 /*for(int i=1;i<=MEM_SIZE;i++){
Bethory 3:3665eb7346e2 49 command.printf("%x\n",buffer[i]);
Bethory 3:3665eb7346e2 50 }*/
Bethory 3:3665eb7346e2 51 }
Bethory 3:3665eb7346e2 52
Bethory 3:3665eb7346e2 53 void guardar(){
Bethory 3:3665eb7346e2 54 command.printf("se inicia el comando de guardar...\n");
Bethory 4:8a884a5dd8c8 55 uint32_t val; //significa que la variable "val" es del tipo uint32_t
Bethory 4:8a884a5dd8c8 56 char dato1,dato2;
Bethory 3:3665eb7346e2 57
Bethory 4:8a884a5dd8c8 58 dato1=command.getc();
Bethory 4:8a884a5dd8c8 59 if(dato1==CM_STOP){
Bethory 4:8a884a5dd8c8 60 dato2=command.getc();
Bethory 4:8a884a5dd8c8 61 if(dato2==CM_ENTER){
Bethory 4:8a884a5dd8c8 62 val=dato1;
Bethory 4:8a884a5dd8c8 63 return;
Bethory 4:8a884a5dd8c8 64 }
Bethory 4:8a884a5dd8c8 65 }
Bethory 4:8a884a5dd8c8 66 if(dato1==CM_NODRAW|dato1==CM_DRAW){
Bethory 4:8a884a5dd8c8 67 dato2=command.getc();
Bethory 4:8a884a5dd8c8 68 if(dato2==CM_ENTER){
Bethory 4:8a884a5dd8c8 69 val=dato1;
Bethory 4:8a884a5dd8c8 70 }
Bethory 4:8a884a5dd8c8 71 }
Bethory 4:8a884a5dd8c8 72 if(dato1==CM_VERTEX2D){
Bethory 4:8a884a5dd8c8 73 dato2=command.getc();
Bethory 4:8a884a5dd8c8 74 if(dato2<=0x32){
Bethory 4:8a884a5dd8c8 75 val=CM_VERTEX2D;
Bethory 4:8a884a5dd8c8 76 val=val<<8;
Bethory 4:8a884a5dd8c8 77 val=val|dato2;
Bethory 4:8a884a5dd8c8 78 dato2=command.getc();
Bethory 4:8a884a5dd8c8 79 if(dato2<=0x32){
Bethory 4:8a884a5dd8c8 80 val=val<<8;
Bethory 4:8a884a5dd8c8 81 val=val|dato2;
Bethory 4:8a884a5dd8c8 82 dato2=command.getc();
Bethory 4:8a884a5dd8c8 83 if(dato2==CM_ENTER){
Bethory 4:8a884a5dd8c8 84 val=val<<8;
Bethory 4:8a884a5dd8c8 85 val=val|CM_ENTER;
Bethory 4:8a884a5dd8c8 86 }
Bethory 4:8a884a5dd8c8 87 }
Bethory 4:8a884a5dd8c8 88 }
Bethory 4:8a884a5dd8c8 89 }
Bethory 4:8a884a5dd8c8 90 }
Bethory 4:8a884a5dd8c8 91
Bethory 4:8a884a5dd8c8 92 int main(){
Bethory 4:8a884a5dd8c8 93 init_servo();
Bethory 4:8a884a5dd8c8 94 command.baud(9600);
Bethory 4:8a884a5dd8c8 95 home(); //llama a no_draw y va a 0,0
Bethory 4:8a884a5dd8c8 96
Bethory 4:8a884a5dd8c8 97 char read_cc;
Bethory 4:8a884a5dd8c8 98 while(1){
Bethory 4:8a884a5dd8c8 99 read_cc=command.getc();
Bethory 4:8a884a5dd8c8 100 switch (read_cc){
Bethory 4:8a884a5dd8c8 101 //case CM_STOP: command.printf("comando no válido en este momento");break; //FA
Bethory 4:8a884a5dd8c8 102 //case CM_NODRAW: guardar(read_cc);break; //FB
Bethory 4:8a884a5dd8c8 103 //case CM_DRAW: guardar(read_cc);break; //FC
Bethory 4:8a884a5dd8c8 104 //case CM_VERTEX2D: command.printf("comando no válido en este momento");break; //FD
Bethory 4:8a884a5dd8c8 105 case CM_GUARDAR: guardar(); break; //FE
Bethory 4:8a884a5dd8c8 106 case CM_EJECUTAR: ejecutar(); break; //FF
Bethory 4:8a884a5dd8c8 107 default: command.printf("Error de comando \n");break;
Bethory 4:8a884a5dd8c8 108 }
Bethory 4:8a884a5dd8c8 109 }
Bethory 4:8a884a5dd8c8 110 }
Bethory 4:8a884a5dd8c8 111 /*
Bethory 4:8a884a5dd8c8 112 FE FB FD 00 00 F0
Bethory 4:8a884a5dd8c8 113 FC F0 FD 32 00 F0
Bethory 4:8a884a5dd8c8 114 FD 32 32 F0 FD 00
Bethory 4:8a884a5dd8c8 115 32 F0 FD 00 00 F0
Bethory 4:8a884a5dd8c8 116 FB F0 FA F0 FF
Bethory 4:8a884a5dd8c8 117
Bethory 4:8a884a5dd8c8 118 FE F0 FD 54 32 F0 FC F0 FD 32 00 F0 FD 32 32 F0 FD 00 32 F0 FD 00 00 F0 FB F0 FA F0 FF
Bethory 4:8a884a5dd8c8 119 FE 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 FA FF
Bethory 4:8a884a5dd8c8 120
Bethory 4:8a884a5dd8c8 121 #define CM_EJECUTAR 0xFF
Bethory 4:8a884a5dd8c8 122 #define CM_GUARDAR 0xFE
Bethory 4:8a884a5dd8c8 123 #define CM_VERTEX2D 0xFD
Bethory 4:8a884a5dd8c8 124 #define CM_DRAW 0XFC
Bethory 4:8a884a5dd8c8 125 #define CM_NODRAW 0xFB
Bethory 4:8a884a5dd8c8 126 #define CM_STOP 0xFA
Bethory 4:8a884a5dd8c8 127 #define CM_END 0xF0
Bethory 4:8a884a5dd8c8 128
Bethory 4:8a884a5dd8c8 129 while(!full){
Bethory 3:3665eb7346e2 130 for(int i=1;i<=4;i++){
Bethory 3:3665eb7346e2 131 raw_data=command.getc();
Bethory 3:3665eb7346e2 132 command.printf("%x",raw_data);
Bethory 3:3665eb7346e2 133 if(raw_data==CM_STOP)
Bethory 3:3665eb7346e2 134 return;
Bethory 3:3665eb7346e2 135 if(i==1){
Bethory 3:3665eb7346e2 136 val=raw_data;
Bethory 3:3665eb7346e2 137 }else{
Bethory 3:3665eb7346e2 138
Bethory 3:3665eb7346e2 139 val=val << 8;
Bethory 3:3665eb7346e2 140 val=val|raw_data;
Bethory 3:3665eb7346e2 141 }
Bethory 3:3665eb7346e2 142 command.printf(" %d",i);
Bethory 3:3665eb7346e2 143 command.printf(" %x\n",val);
Bethory 3:3665eb7346e2 144 }
Bethory 3:3665eb7346e2 145 mem_put(val);
Bethory 3:3665eb7346e2 146 }
Bethory 3:3665eb7346e2 147 //mem_get(&val); //&val es la dirección de la variable, no su contenido
Bethory 3:3665eb7346e2 148 //command.putc(val); //manda por puerto serial el contenido de "val" npi para qué
Bethory 3:3665eb7346e2 149
Bethory 3:3665eb7346e2 150 */