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