sebastian martinez / Mbed 2 deprecated Movimiento_8Servos

Dependencies:   mbed

Fork of 01-04_Primer_Avance by sebastian martinez

Committer:
sebasmartinez
Date:
Sat Oct 06 17:45:42 2018 +0000
Revision:
5:6ca97bfe9406
Parent:
4:ba51736778e1
Programa Movimiento 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabeltranm 0:89b318e49395 1 #include "mbed.h"
fabeltranm 0:89b318e49395 2 #include "main.h"
sebasmartinez 3:60722da62531 3 #define MEM_SIZE 5
sebasmartinez 2:10956b8ceffb 4 #define MEM_TYPE char
sebasmartinez 2:10956b8ceffb 5 MEM_TYPE buffer[MEM_SIZE];
sebasmartinez 5:6ca97bfe9406 6 Serial command(USBTX, USBRX); // Usar Serial PC USB
sebasmartinez 5:6ca97bfe9406 7 //Serial command(PC_10,PC_11); //Tx, RX. Usar Bluetooth HC-06.
fabeltranm 0:89b318e49395 8
sebasmartinez 4:ba51736778e1 9 DigitalIn button(USER_BUTTON);
fabeltranm 0:89b318e49395 10
fabeltranm 0:89b318e49395 11 int main() {
fabeltranm 0:89b318e49395 12 init_servo();
fabeltranm 0:89b318e49395 13 init_serial();
fabeltranm 0:89b318e49395 14 debug_m("inicio \n");
fabeltranm 0:89b318e49395 15 uint32_t read_cc;
fabeltranm 0:89b318e49395 16 while(1)
fabeltranm 0:89b318e49395 17 {
fabeltranm 0:89b318e49395 18 read_cc=read_command();
sebasmartinez 2:10956b8ceffb 19 debug_m("Entrando TC...\n");
sebasmartinez 2:10956b8ceffb 20
fabeltranm 0:89b318e49395 21 switch (read_cc) {
sebasmartinez 2:10956b8ceffb 22
sebasmartinez 2:10956b8ceffb 23 case 0x01:
sebasmartinez 4:ba51736778e1 24 debug_m("Tc 1 Iniciado..\n");
sebasmartinez 2:10956b8ceffb 25 moving();
sebasmartinez 4:ba51736778e1 26 debug_m("Tc 1 Finalizado\n");
sebasmartinez 2:10956b8ceffb 27 break;
sebasmartinez 2:10956b8ceffb 28 case 0x02:
sebasmartinez 4:ba51736778e1 29 debug_m("Tc 2 Iniciado.. \n");
sebasmartinez 4:ba51736778e1 30 pares();
sebasmartinez 4:ba51736778e1 31 debug_m("Tc 2 Finalizado\n");
sebasmartinez 2:10956b8ceffb 32 break;
sebasmartinez 5:6ca97bfe9406 33 case 0x03:
sebasmartinez 5:6ca97bfe9406 34 debug_m("Tc 3 Iniciado.. \n");
sebasmartinez 5:6ca97bfe9406 35 caminar();
sebasmartinez 5:6ca97bfe9406 36 debug_m("Tc 3 Finalizado\n");
sebasmartinez 5:6ca97bfe9406 37 break;
sebasmartinez 5:6ca97bfe9406 38 case 0x05:
sebasmartinez 5:6ca97bfe9406 39 debug_m("Tc 5 Centrar Iniciado.. \n");
sebasmartinez 5:6ca97bfe9406 40 centro(01);
sebasmartinez 5:6ca97bfe9406 41 centro(02);
sebasmartinez 5:6ca97bfe9406 42 centro(03);
sebasmartinez 5:6ca97bfe9406 43 centro(04);
sebasmartinez 5:6ca97bfe9406 44 debug_m("Tc 5 Centrar Finalizado\n");
sebasmartinez 5:6ca97bfe9406 45 break;
sebasmartinez 4:ba51736778e1 46 default: debug_m("Error de comando. \nSe espera entre 0x01 - 0x08 \n");break ;
fabeltranm 0:89b318e49395 47 }
fabeltranm 0:89b318e49395 48 }
fabeltranm 0:89b318e49395 49 }
fabeltranm 0:89b318e49395 50
fabeltranm 0:89b318e49395 51
fabeltranm 0:89b318e49395 52
fabeltranm 0:89b318e49395 53 uint32_t read_command()
fabeltranm 0:89b318e49395 54 {
fabeltranm 1:526bdd5faa37 55 // retorna los byte recibidos concatenados en un entero,
sebasmartinez 3:60722da62531 56 // Formato | FF | TC | NM | GR | FD
sebasmartinez 3:60722da62531 57 // Datos | Inicio | Tele-comando | Numero Motor | Grados | Cierre
sebasmartinez 2:10956b8ceffb 58 //char intc=command.getc();
sebasmartinez 2:10956b8ceffb 59 buffer[0] = command.getc();
sebasmartinez 4:ba51736778e1 60
sebasmartinez 4:ba51736778e1 61 inicio:
sebasmartinez 4:ba51736778e1 62
sebasmartinez 5:6ca97bfe9406 63 while(buffer[0] != 0xFF ){ //7B y 7D son { y }
fabeltranm 1:526bdd5faa37 64
sebasmartinez 4:ba51736778e1 65 buffer[0] = command.getc();
sebasmartinez 2:10956b8ceffb 66
sebasmartinez 2:10956b8ceffb 67 debug_m("comando inicio invalido \n");
sebasmartinez 2:10956b8ceffb 68 }
sebasmartinez 5:6ca97bfe9406 69 debug_m("comando inicio Valido \n");
sebasmartinez 5:6ca97bfe9406 70 char ini = buffer[0];
sebasmartinez 5:6ca97bfe9406 71 printf("inicio encontrado: %x \n", ini);
sebasmartinez 4:ba51736778e1 72
sebasmartinez 4:ba51736778e1 73 buffer[1] = command.getc();
sebasmartinez 4:ba51736778e1 74 if (buffer[1] != 0xFF && buffer[1] != 0xFD){
sebasmartinez 4:ba51736778e1 75 buffer[2] = command.getc();
sebasmartinez 4:ba51736778e1 76 }else{
sebasmartinez 4:ba51736778e1 77 buffer[0] = buffer[1];
sebasmartinez 4:ba51736778e1 78 goto inicio;
sebasmartinez 4:ba51736778e1 79 }
sebasmartinez 4:ba51736778e1 80 if (buffer[2] != 0xFF && buffer[2] != 0xFD){
sebasmartinez 4:ba51736778e1 81 buffer[3] = command.getc();
sebasmartinez 4:ba51736778e1 82 }else{
sebasmartinez 4:ba51736778e1 83 buffer[0] = buffer[2];
sebasmartinez 4:ba51736778e1 84 goto inicio;
sebasmartinez 4:ba51736778e1 85 }
sebasmartinez 4:ba51736778e1 86 if (buffer[3] != 0xFF && buffer[3] != 0xFD){
sebasmartinez 4:ba51736778e1 87 buffer[4] = command.getc();
sebasmartinez 4:ba51736778e1 88 }else{
sebasmartinez 4:ba51736778e1 89 buffer[0] = buffer[3];
sebasmartinez 4:ba51736778e1 90 goto inicio;
sebasmartinez 4:ba51736778e1 91 }
sebasmartinez 4:ba51736778e1 92 //para que evalue el cierre
sebasmartinez 4:ba51736778e1 93 if (buffer[4] != 0xFF && buffer[4] == 0xFD){
sebasmartinez 4:ba51736778e1 94 debug_m("comando Cierre valido \n");
sebasmartinez 4:ba51736778e1 95 }else{
sebasmartinez 4:ba51736778e1 96 buffer[0] = buffer[4];
sebasmartinez 4:ba51736778e1 97 goto inicio;
sebasmartinez 4:ba51736778e1 98 }
sebasmartinez 4:ba51736778e1 99
sebasmartinez 4:ba51736778e1 100
sebasmartinez 4:ba51736778e1 101
sebasmartinez 2:10956b8ceffb 102 //intc=command.getc();
sebasmartinez 2:10956b8ceffb 103 int tele = buffer[1];
sebasmartinez 5:6ca97bfe9406 104 char telec = buffer[1];
sebasmartinez 5:6ca97bfe9406 105 printf("Tele comando: %x \n", telec );
sebasmartinez 2:10956b8ceffb 106
sebasmartinez 2:10956b8ceffb 107
sebasmartinez 2:10956b8ceffb 108 return tele;
sebasmartinez 2:10956b8ceffb 109
fabeltranm 0:89b318e49395 110 }
fabeltranm 1:526bdd5faa37 111
fabeltranm 1:526bdd5faa37 112
fabeltranm 0:89b318e49395 113 void init_serial()
fabeltranm 0:89b318e49395 114 {
sebasmartinez 2:10956b8ceffb 115 command.baud(9600);
sebasmartinez 2:10956b8ceffb 116 debug_m("Serial 9600 \n");
fabeltranm 0:89b318e49395 117 }
fabeltranm 0:89b318e49395 118
fabeltranm 0:89b318e49395 119
fabeltranm 1:526bdd5faa37 120 void moving(){
fabeltranm 1:526bdd5faa37 121 debug_m("se inicia el comado mover..\n");
fabeltranm 0:89b318e49395 122
sebasmartinez 2:10956b8ceffb 123 char nmotor = buffer[2];
sebasmartinez 5:6ca97bfe9406 124 printf("Motor: %x \n", nmotor );
sebasmartinez 2:10956b8ceffb 125 char grados = buffer[3];
sebasmartinez 5:6ca97bfe9406 126 printf("Grados: %x \n", grados );
sebasmartinez 4:ba51736778e1 127 //char endc = buffer[4];
sebasmartinez 4:ba51736778e1 128 //printf("Cierre: %c \n", endc );
fabeltranm 1:526bdd5faa37 129 mover_ser(nmotor,grados);
sebasmartinez 2:10956b8ceffb 130
sebasmartinez 2:10956b8ceffb 131 debug_m("fin del comado mover..\n");
fabeltranm 0:89b318e49395 132
fabeltranm 0:89b318e49395 133 }
sebasmartinez 4:ba51736778e1 134 void pares(){
sebasmartinez 4:ba51736778e1 135 debug_m("se inicia el comado pares..\n");
sebasmartinez 4:ba51736778e1 136
sebasmartinez 4:ba51736778e1 137 char par = buffer[2];
sebasmartinez 5:6ca97bfe9406 138 printf("Par: %x \n", par );
sebasmartinez 4:ba51736778e1 139 char dire = buffer[3];
sebasmartinez 5:6ca97bfe9406 140 printf("Dir: %x \n", dire );
sebasmartinez 4:ba51736778e1 141 char endcc = buffer[4];
sebasmartinez 5:6ca97bfe9406 142 printf("Cierre: %x \n", endcc );
sebasmartinez 4:ba51736778e1 143 while(button == 0) {
sebasmartinez 4:ba51736778e1 144 mover_par(par,dire);
sebasmartinez 4:ba51736778e1 145 }
sebasmartinez 4:ba51736778e1 146 centro(par);
sebasmartinez 4:ba51736778e1 147 debug_m("fin del comado pares..\n");
sebasmartinez 4:ba51736778e1 148 }
sebasmartinez 5:6ca97bfe9406 149
sebasmartinez 5:6ca97bfe9406 150 void caminar(){
sebasmartinez 5:6ca97bfe9406 151 debug_m("Caminando..\n");
sebasmartinez 5:6ca97bfe9406 152
sebasmartinez 5:6ca97bfe9406 153 char par = buffer[2];
sebasmartinez 5:6ca97bfe9406 154 printf("Par: %x \n", par );
sebasmartinez 5:6ca97bfe9406 155 char dire = buffer[3];
sebasmartinez 5:6ca97bfe9406 156 printf("Dir: %x \n", dire );
sebasmartinez 5:6ca97bfe9406 157 char endcc = buffer[4];
sebasmartinez 5:6ca97bfe9406 158 printf("Cierre: %x \n", endcc );
sebasmartinez 5:6ca97bfe9406 159 while(button == 0) {
sebasmartinez 5:6ca97bfe9406 160 mover_par(par,dire);
sebasmartinez 5:6ca97bfe9406 161 }
sebasmartinez 5:6ca97bfe9406 162 centro(par);
sebasmartinez 5:6ca97bfe9406 163 debug_m("Stop..\n");
sebasmartinez 5:6ca97bfe9406 164 }
fabeltranm 0:89b318e49395 165 void debug_m(char *s , ... ){
fabeltranm 0:89b318e49395 166 #if DEBUG
fabeltranm 0:89b318e49395 167 command.printf(s);
fabeltranm 0:89b318e49395 168 #endif
fabeltranm 0:89b318e49395 169 }