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@2:ff10ffd246e2, 2018-11-20 (annotated)
- Committer:
- JohanParraga
- Date:
- Tue Nov 20 02:26:04 2018 +0000
- Revision:
- 2:ff10ffd246e2
- Parent:
- 1:526bdd5faa37
- Child:
- 4:05cffda0b6a6
ENTREGA FINAL CUADRUPEDO
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fabeltranm | 0:89b318e49395 | 1 | #include "mbed.h" |
fabeltranm | 0:89b318e49395 | 2 | #include "main.h" |
fabeltranm | 0:89b318e49395 | 3 | |
JohanParraga | 2:ff10ffd246e2 | 4 | Timer tiempo; |
fabeltranm | 0:89b318e49395 | 5 | Serial command(USBTX, USBRX); |
fabeltranm | 0:89b318e49395 | 6 | |
JohanParraga | 2:ff10ffd246e2 | 7 | DigitalIn entrada (PC_9); |
JohanParraga | 2:ff10ffd246e2 | 8 | DigitalOut S0 (PA_9); |
JohanParraga | 2:ff10ffd246e2 | 9 | DigitalOut S1 (PA_8); |
JohanParraga | 2:ff10ffd246e2 | 10 | DigitalOut S3 (PC_7); |
JohanParraga | 2:ff10ffd246e2 | 11 | DigitalOut S2 (PA_10); |
fabeltranm | 0:89b318e49395 | 12 | |
JohanParraga | 2:ff10ffd246e2 | 13 | AnalogIn analog_valueX(A0); |
JohanParraga | 2:ff10ffd246e2 | 14 | AnalogIn analog_valueY(A1); |
JohanParraga | 2:ff10ffd246e2 | 15 | |
JohanParraga | 2:ff10ffd246e2 | 16 | int valor; |
JohanParraga | 2:ff10ffd246e2 | 17 | int color=0; |
JohanParraga | 2:ff10ffd246e2 | 18 | int rojo=0; |
JohanParraga | 2:ff10ffd246e2 | 19 | int azul=0; |
JohanParraga | 2:ff10ffd246e2 | 20 | int verde=0; |
JohanParraga | 2:ff10ffd246e2 | 21 | int Detectar(); |
JohanParraga | 2:ff10ffd246e2 | 22 | int tme=0; |
fabeltranm | 0:89b318e49395 | 23 | |
fabeltranm | 0:89b318e49395 | 24 | int main() { |
fabeltranm | 0:89b318e49395 | 25 | init_servo(); |
JohanParraga | 2:ff10ffd246e2 | 26 | init_serial(); |
fabeltranm | 0:89b318e49395 | 27 | debug_m("inicio \n"); |
JohanParraga | 2:ff10ffd246e2 | 28 | uint32_t read_cc; |
fabeltranm | 0:89b318e49395 | 29 | while(1) |
fabeltranm | 0:89b318e49395 | 30 | { |
JohanParraga | 2:ff10ffd246e2 | 31 | read_cc=read_command(); |
fabeltranm | 0:89b318e49395 | 32 | switch (read_cc) { |
JohanParraga | 2:ff10ffd246e2 | 33 | case 0x01: moving(); break ; |
JohanParraga | 2:ff10ffd246e2 | 34 | case 0x02: moving2();break ; |
JohanParraga | 2:ff10ffd246e2 | 35 | case 0x03: sensor();break ; |
JohanParraga | 2:ff10ffd246e2 | 36 | case 0x04: joystick();break; |
fabeltranm | 0:89b318e49395 | 37 | } |
fabeltranm | 0:89b318e49395 | 38 | } |
fabeltranm | 0:89b318e49395 | 39 | } |
fabeltranm | 0:89b318e49395 | 40 | |
fabeltranm | 0:89b318e49395 | 41 | uint32_t read_command() |
fabeltranm | 0:89b318e49395 | 42 | { |
fabeltranm | 0:89b318e49395 | 43 | |
JohanParraga | 2:ff10ffd246e2 | 44 | |
JohanParraga | 2:ff10ffd246e2 | 45 | char intc=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 46 | while(intc != 0xFF) |
JohanParraga | 2:ff10ffd246e2 | 47 | intc=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 48 | return command.getc(); |
fabeltranm | 0:89b318e49395 | 49 | } |
fabeltranm | 0:89b318e49395 | 50 | void init_serial() |
fabeltranm | 0:89b318e49395 | 51 | { |
fabeltranm | 0:89b318e49395 | 52 | command.baud(9600); |
fabeltranm | 0:89b318e49395 | 53 | } |
JohanParraga | 2:ff10ffd246e2 | 54 | void moving(){ |
JohanParraga | 2:ff10ffd246e2 | 55 | debug_m("se inicia el comado mover..\n"); |
JohanParraga | 2:ff10ffd246e2 | 56 | char nmotor=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 57 | char pos=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 58 | char endc=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 59 | mover_ser(nmotor,pos); |
JohanParraga | 2:ff10ffd246e2 | 60 | debug_m("fin del comado guardar..\n"); |
JohanParraga | 2:ff10ffd246e2 | 61 | } |
JohanParraga | 2:ff10ffd246e2 | 62 | void moving2(){ |
JohanParraga | 2:ff10ffd246e2 | 63 | debug_m("se inicia el comado mover arana..\n"); |
JohanParraga | 2:ff10ffd246e2 | 64 | char nmotor=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 65 | char pos=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 66 | char endc=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 67 | mover_ser2(nmotor,pos); |
JohanParraga | 2:ff10ffd246e2 | 68 | debug_m("fin del comado guardar..\n"); |
JohanParraga | 2:ff10ffd246e2 | 69 | } |
JohanParraga | 2:ff10ffd246e2 | 70 | |
JohanParraga | 2:ff10ffd246e2 | 71 | void moving3(){ |
JohanParraga | 2:ff10ffd246e2 | 72 | debug_m("se inicia el comado caminar adelante..\n"); |
JohanParraga | 2:ff10ffd246e2 | 73 | derecha(); |
JohanParraga | 2:ff10ffd246e2 | 74 | debug_m("fin del comado guardar..\n"); |
JohanParraga | 2:ff10ffd246e2 | 75 | } |
JohanParraga | 2:ff10ffd246e2 | 76 | |
JohanParraga | 2:ff10ffd246e2 | 77 | void joystick(){ |
JohanParraga | 2:ff10ffd246e2 | 78 | |
JohanParraga | 2:ff10ffd246e2 | 79 | double posX; |
JohanParraga | 2:ff10ffd246e2 | 80 | double posY; |
JohanParraga | 2:ff10ffd246e2 | 81 | |
JohanParraga | 2:ff10ffd246e2 | 82 | printf("\nJoystick\n"); |
JohanParraga | 2:ff10ffd246e2 | 83 | |
JohanParraga | 2:ff10ffd246e2 | 84 | while(1) { |
JohanParraga | 2:ff10ffd246e2 | 85 | |
JohanParraga | 2:ff10ffd246e2 | 86 | posX = analog_valueX.read(); |
JohanParraga | 2:ff10ffd246e2 | 87 | posY = analog_valueY.read(); |
JohanParraga | 2:ff10ffd246e2 | 88 | |
JohanParraga | 2:ff10ffd246e2 | 89 | posX = posX * 3300; |
JohanParraga | 2:ff10ffd246e2 | 90 | posY = posY * 3300; |
JohanParraga | 2:ff10ffd246e2 | 91 | if (posX > 3000) { |
JohanParraga | 2:ff10ffd246e2 | 92 | debug_m("se inicia el comado mover a la derecha por joystick..\n"); |
JohanParraga | 2:ff10ffd246e2 | 93 | derecha(); |
JohanParraga | 2:ff10ffd246e2 | 94 | } |
JohanParraga | 2:ff10ffd246e2 | 95 | |
JohanParraga | 2:ff10ffd246e2 | 96 | else if (posX < 1000) { |
JohanParraga | 2:ff10ffd246e2 | 97 | debug_m("se inicia el comado mover a la izquierda por joystick..\n"); |
JohanParraga | 2:ff10ffd246e2 | 98 | izquierda(); |
JohanParraga | 2:ff10ffd246e2 | 99 | } |
JohanParraga | 2:ff10ffd246e2 | 100 | |
JohanParraga | 2:ff10ffd246e2 | 101 | else if (posY > 3000) { |
JohanParraga | 2:ff10ffd246e2 | 102 | debug_m("se inicia el comado mover a la adelante por joystick..\n"); |
JohanParraga | 2:ff10ffd246e2 | 103 | adelante(); |
JohanParraga | 2:ff10ffd246e2 | 104 | } |
JohanParraga | 2:ff10ffd246e2 | 105 | |
JohanParraga | 2:ff10ffd246e2 | 106 | else if (posY < 1000) { |
JohanParraga | 2:ff10ffd246e2 | 107 | debug_m("se inicia el comado mover hacia atras por joystick..\n"); |
JohanParraga | 2:ff10ffd246e2 | 108 | atras(); |
JohanParraga | 2:ff10ffd246e2 | 109 | } |
JohanParraga | 2:ff10ffd246e2 | 110 | |
JohanParraga | 2:ff10ffd246e2 | 111 | else { |
JohanParraga | 2:ff10ffd246e2 | 112 | } |
JohanParraga | 2:ff10ffd246e2 | 113 | wait(1); // |
JohanParraga | 2:ff10ffd246e2 | 114 | } |
JohanParraga | 2:ff10ffd246e2 | 115 | |
JohanParraga | 2:ff10ffd246e2 | 116 | } |
fabeltranm | 0:89b318e49395 | 117 | |
fabeltranm | 0:89b318e49395 | 118 | |
JohanParraga | 2:ff10ffd246e2 | 119 | void sensor() |
JohanParraga | 2:ff10ffd246e2 | 120 | { |
JohanParraga | 2:ff10ffd246e2 | 121 | while(1){ |
JohanParraga | 2:ff10ffd246e2 | 122 | color=command.getc(); |
JohanParraga | 2:ff10ffd246e2 | 123 | S0=1; |
JohanParraga | 2:ff10ffd246e2 | 124 | S1=1; |
JohanParraga | 2:ff10ffd246e2 | 125 | S2=0; |
JohanParraga | 2:ff10ffd246e2 | 126 | S3=0; |
JohanParraga | 2:ff10ffd246e2 | 127 | rojo=Detectar(); |
JohanParraga | 2:ff10ffd246e2 | 128 | command.printf("ROJO "); |
JohanParraga | 2:ff10ffd246e2 | 129 | command.printf("%d ",rojo); |
JohanParraga | 2:ff10ffd246e2 | 130 | S0=1; |
JohanParraga | 2:ff10ffd246e2 | 131 | S1=1; |
JohanParraga | 2:ff10ffd246e2 | 132 | S2=0; |
JohanParraga | 2:ff10ffd246e2 | 133 | S3=1; |
JohanParraga | 2:ff10ffd246e2 | 134 | azul=Detectar(); |
JohanParraga | 2:ff10ffd246e2 | 135 | command.printf("AZUL "); |
JohanParraga | 2:ff10ffd246e2 | 136 | command.printf("%d ",azul); |
JohanParraga | 2:ff10ffd246e2 | 137 | S0=1; |
JohanParraga | 2:ff10ffd246e2 | 138 | S1=1; |
JohanParraga | 2:ff10ffd246e2 | 139 | S2=1; |
JohanParraga | 2:ff10ffd246e2 | 140 | S3=1; |
JohanParraga | 2:ff10ffd246e2 | 141 | verde=Detectar(); |
JohanParraga | 2:ff10ffd246e2 | 142 | command.printf("VERDE"); |
JohanParraga | 2:ff10ffd246e2 | 143 | command.printf("%d\n ",verde); |
JohanParraga | 2:ff10ffd246e2 | 144 | |
JohanParraga | 2:ff10ffd246e2 | 145 | |
JohanParraga | 2:ff10ffd246e2 | 146 | if ((rojo>500)&(rojo<700) & (azul>100)&(azul<200) & (verde>100)&(verde<200)){ |
JohanParraga | 2:ff10ffd246e2 | 147 | |
JohanParraga | 2:ff10ffd246e2 | 148 | abajo(); |
JohanParraga | 2:ff10ffd246e2 | 149 | |
JohanParraga | 2:ff10ffd246e2 | 150 | |
JohanParraga | 2:ff10ffd246e2 | 151 | command.printf("AZUL \n");} |
JohanParraga | 2:ff10ffd246e2 | 152 | |
JohanParraga | 2:ff10ffd246e2 | 153 | else{ |
JohanParraga | 2:ff10ffd246e2 | 154 | if ((rojo>0)&(rojo<200) & (azul>200)&(azul<400) & (verde>200)&(verde<400)){ |
JohanParraga | 2:ff10ffd246e2 | 155 | |
JohanParraga | 2:ff10ffd246e2 | 156 | arriba(); |
JohanParraga | 2:ff10ffd246e2 | 157 | |
JohanParraga | 2:ff10ffd246e2 | 158 | command.printf("ROJO\n");} |
JohanParraga | 2:ff10ffd246e2 | 159 | |
JohanParraga | 2:ff10ffd246e2 | 160 | else{ |
JohanParraga | 2:ff10ffd246e2 | 161 | |
JohanParraga | 2:ff10ffd246e2 | 162 | if ((rojo>400)&(rojo<600) & (azul>200)&(azul<300) & (verde>200)&(verde<300)){ |
JohanParraga | 2:ff10ffd246e2 | 163 | |
JohanParraga | 2:ff10ffd246e2 | 164 | adelante(); |
JohanParraga | 2:ff10ffd246e2 | 165 | |
JohanParraga | 2:ff10ffd246e2 | 166 | command.printf("VERDE\n");} |
JohanParraga | 2:ff10ffd246e2 | 167 | |
JohanParraga | 2:ff10ffd246e2 | 168 | else{ |
JohanParraga | 2:ff10ffd246e2 | 169 | command.printf("COLOR NO VALIDO\n"); |
JohanParraga | 2:ff10ffd246e2 | 170 | } |
JohanParraga | 2:ff10ffd246e2 | 171 | } |
JohanParraga | 2:ff10ffd246e2 | 172 | } |
JohanParraga | 2:ff10ffd246e2 | 173 | } |
JohanParraga | 2:ff10ffd246e2 | 174 | } |
fabeltranm | 0:89b318e49395 | 175 | |
JohanParraga | 2:ff10ffd246e2 | 176 | int Detectar(){ |
JohanParraga | 2:ff10ffd246e2 | 177 | tme=0; |
JohanParraga | 2:ff10ffd246e2 | 178 | while (!entrada){} |
JohanParraga | 2:ff10ffd246e2 | 179 | while (entrada) {} |
JohanParraga | 2:ff10ffd246e2 | 180 | while (!entrada){} |
JohanParraga | 2:ff10ffd246e2 | 181 | tiempo.start(); |
JohanParraga | 2:ff10ffd246e2 | 182 | while (entrada) {} |
JohanParraga | 2:ff10ffd246e2 | 183 | while (!entrada){} |
JohanParraga | 2:ff10ffd246e2 | 184 | while (entrada) {} |
JohanParraga | 2:ff10ffd246e2 | 185 | while (!entrada){} |
JohanParraga | 2:ff10ffd246e2 | 186 | while (entrada) {} |
JohanParraga | 2:ff10ffd246e2 | 187 | tiempo.stop(); |
JohanParraga | 2:ff10ffd246e2 | 188 | tme=tiempo.read_us(); |
JohanParraga | 2:ff10ffd246e2 | 189 | tiempo.reset(); |
JohanParraga | 2:ff10ffd246e2 | 190 | return(tme); |
fabeltranm | 0:89b318e49395 | 191 | |
JohanParraga | 2:ff10ffd246e2 | 192 | |
JohanParraga | 2:ff10ffd246e2 | 193 | } |
JohanParraga | 2:ff10ffd246e2 | 194 | |
JohanParraga | 2:ff10ffd246e2 | 195 | |
fabeltranm | 0:89b318e49395 | 196 | |
fabeltranm | 0:89b318e49395 | 197 | void debug_m(char *s , ... ){ |
fabeltranm | 0:89b318e49395 | 198 | #if DEBUG |
fabeltranm | 0:89b318e49395 | 199 | command.printf(s); |
fabeltranm | 0:89b318e49395 | 200 | #endif |
fabeltranm | 0:89b318e49395 | 201 | } |