Mateo Morales / Mbed 2 deprecated Triki_1

Dependencies:   mbed TextLCD

Committer:
Mateom0104
Date:
Wed Nov 13 22:27:51 2019 +0000
Revision:
0:e54d04f84276
Codigo funcionamiento triki

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mateom0104 0:e54d04f84276 1 #include "mbed.h"
Mateom0104 0:e54d04f84276 2 #include "PwmOut.h"
Mateom0104 0:e54d04f84276 3 #include "TextLCD.h"
Mateom0104 0:e54d04f84276 4
Mateom0104 0:e54d04f84276 5
Mateom0104 0:e54d04f84276 6
Mateom0104 0:e54d04f84276 7 float tiempo = 1;
Mateom0104 0:e54d04f84276 8
Mateom0104 0:e54d04f84276 9
Mateom0104 0:e54d04f84276 10 // final de carrera
Mateom0104 0:e54d04f84276 11 DigitalIn finaly(PC_10);
Mateom0104 0:e54d04f84276 12 DigitalIn finalx(PC_11);
Mateom0104 0:e54d04f84276 13 float fcy,fcx;
Mateom0104 0:e54d04f84276 14
Mateom0104 0:e54d04f84276 15
Mateom0104 0:e54d04f84276 16 //Serial
Mateom0104 0:e54d04f84276 17 Serial pc(SERIAL_TX, SERIAL_RX);
Mateom0104 0:e54d04f84276 18
Mateom0104 0:e54d04f84276 19 //Servo
Mateom0104 0:e54d04f84276 20 PwmOut servo (A1);
Mateom0104 0:e54d04f84276 21
Mateom0104 0:e54d04f84276 22 //LCD
Mateom0104 0:e54d04f84276 23 TextLCD lcd(PA_7, PA_6, PA_8, PB_6, PC_7, PA_9, TextLCD::LCD16x2); // rs, e, d4-d7
Mateom0104 0:e54d04f84276 24
Mateom0104 0:e54d04f84276 25 //Variables Sensores
Mateom0104 0:e54d04f84276 26 DigitalIn x0(PC_0);// elegir pieza
Mateom0104 0:e54d04f84276 27 DigitalIn o0(PC_3);
Mateom0104 0:e54d04f84276 28
Mateom0104 0:e54d04f84276 29 float lec_x;
Mateom0104 0:e54d04f84276 30 float lec_o;
Mateom0104 0:e54d04f84276 31
Mateom0104 0:e54d04f84276 32 DigitalIn x1(PC_9);// columna x
Mateom0104 0:e54d04f84276 33 DigitalIn x2(PB_8);
Mateom0104 0:e54d04f84276 34 DigitalIn x3(PA_0);
Mateom0104 0:e54d04f84276 35 DigitalIn x4(PH_1);
Mateom0104 0:e54d04f84276 36
Mateom0104 0:e54d04f84276 37 int l_x1,l_x2,l_x3,l_x4;
Mateom0104 0:e54d04f84276 38 int l_x[5];
Mateom0104 0:e54d04f84276 39
Mateom0104 0:e54d04f84276 40 DigitalIn o1(PA_4);// columna o
Mateom0104 0:e54d04f84276 41 DigitalIn o2(PB_0);
Mateom0104 0:e54d04f84276 42 DigitalIn o3(PC_2);
Mateom0104 0:e54d04f84276 43 DigitalIn o4(PC_1);
Mateom0104 0:e54d04f84276 44
Mateom0104 0:e54d04f84276 45 int l_o1,l_o2,l_o3,l_o4;
Mateom0104 0:e54d04f84276 46 int l_o[5];
Mateom0104 0:e54d04f84276 47
Mateom0104 0:e54d04f84276 48 DigitalIn t1(PB_14);// triki
Mateom0104 0:e54d04f84276 49 DigitalIn t2(PB_2);
Mateom0104 0:e54d04f84276 50 DigitalIn t3(PA_12);
Mateom0104 0:e54d04f84276 51 DigitalIn t4(PB_13);
Mateom0104 0:e54d04f84276 52 DigitalIn t5(PB_1);
Mateom0104 0:e54d04f84276 53 DigitalIn t6(PA_11);
Mateom0104 0:e54d04f84276 54 DigitalIn t7(PC_4);
Mateom0104 0:e54d04f84276 55 DigitalIn t8(PB_15);
Mateom0104 0:e54d04f84276 56 DigitalIn t9(PB_12);
Mateom0104 0:e54d04f84276 57
Mateom0104 0:e54d04f84276 58
Mateom0104 0:e54d04f84276 59 //int l_t1,l_t2,l_t3,l_t4,l_t5,l_t6,l_t7,l_t8,l_t9;
Mateom0104 0:e54d04f84276 60 int l_t[10];
Mateom0104 0:e54d04f84276 61 int l_t2[10];
Mateom0104 0:e54d04f84276 62
Mateom0104 0:e54d04f84276 63 // botones
Mateom0104 0:e54d04f84276 64 DigitalIn boton1(PC_8);
Mateom0104 0:e54d04f84276 65 DigitalIn boton2(PC_6);
Mateom0104 0:e54d04f84276 66
Mateom0104 0:e54d04f84276 67 float b1,b2;
Mateom0104 0:e54d04f84276 68
Mateom0104 0:e54d04f84276 69
Mateom0104 0:e54d04f84276 70 // electroiman
Mateom0104 0:e54d04f84276 71
Mateom0104 0:e54d04f84276 72 DigitalOut electro_i(PC_12);
Mateom0104 0:e54d04f84276 73
Mateom0104 0:e54d04f84276 74
Mateom0104 0:e54d04f84276 75
Mateom0104 0:e54d04f84276 76 // movimiento motores
Mateom0104 0:e54d04f84276 77
Mateom0104 0:e54d04f84276 78 DigitalOut dir_x(D5);
Mateom0104 0:e54d04f84276 79 DigitalOut step_x(D2);
Mateom0104 0:e54d04f84276 80
Mateom0104 0:e54d04f84276 81 DigitalOut dir_y(D6);
Mateom0104 0:e54d04f84276 82 DigitalOut step_y(D3);
Mateom0104 0:e54d04f84276 83
Mateom0104 0:e54d04f84276 84
Mateom0104 0:e54d04f84276 85 // variables utilizables
Mateom0104 0:e54d04f84276 86 int veri,veri2,veri3,veri4;
Mateom0104 0:e54d04f84276 87 int i;
Mateom0104 0:e54d04f84276 88 int sum,ficha;
Mateom0104 0:e54d04f84276 89 int anti;
Mateom0104 0:e54d04f84276 90 int cont;
Mateom0104 0:e54d04f84276 91 int letra=0;
Mateom0104 0:e54d04f84276 92 int diferencia;
Mateom0104 0:e54d04f84276 93
Mateom0104 0:e54d04f84276 94
Mateom0104 0:e54d04f84276 95 // posiciones
Mateom0104 0:e54d04f84276 96 // ubicacion fichas
Mateom0104 0:e54d04f84276 97 int x[9]={0,0,0,0,0,279,279,279,279};
Mateom0104 0:e54d04f84276 98 int y[9]={0,397,733,1040,1374,397,733,1040,1374};
Mateom0104 0:e54d04f84276 99
Mateom0104 0:e54d04f84276 100 // Ubicaciones de triki
Mateom0104 0:e54d04f84276 101 int x_t[10]={0,628,940,1258,628,940,1258,628,940,1258};
Mateom0104 0:e54d04f84276 102 int y_t[10]={0,590,590,590,905,905,905,1194,1194,1194};
Mateom0104 0:e54d04f84276 103
Mateom0104 0:e54d04f84276 104
Mateom0104 0:e54d04f84276 105
Mateom0104 0:e54d04f84276 106
Mateom0104 0:e54d04f84276 107 void origen (void);
Mateom0104 0:e54d04f84276 108 void adelante(void);
Mateom0104 0:e54d04f84276 109 void atras(void);
Mateom0104 0:e54d04f84276 110 void derecha (void);
Mateom0104 0:e54d04f84276 111 void izquierda(void);
Mateom0104 0:e54d04f84276 112 void lec_sen(void);
Mateom0104 0:e54d04f84276 113 void coger(void);
Mateom0104 0:e54d04f84276 114 void dejar(void);
Mateom0104 0:e54d04f84276 115 void ir_tomar(void);
Mateom0104 0:e54d04f84276 116 void ir_dejar(void);
Mateom0104 0:e54d04f84276 117
Mateom0104 0:e54d04f84276 118 ////////////////////////////////////////////
Mateom0104 0:e54d04f84276 119 void ir_dejar (void)
Mateom0104 0:e54d04f84276 120 {
Mateom0104 0:e54d04f84276 121
Mateom0104 0:e54d04f84276 122 int pos;
Mateom0104 0:e54d04f84276 123
Mateom0104 0:e54d04f84276 124 pos=letra;
Mateom0104 0:e54d04f84276 125 for(i=1;i<=x_t[pos];i++)
Mateom0104 0:e54d04f84276 126 {
Mateom0104 0:e54d04f84276 127 derecha();
Mateom0104 0:e54d04f84276 128 }
Mateom0104 0:e54d04f84276 129
Mateom0104 0:e54d04f84276 130 for(i=1;i<=y_t[pos];i++)
Mateom0104 0:e54d04f84276 131 {
Mateom0104 0:e54d04f84276 132 adelante();
Mateom0104 0:e54d04f84276 133 }
Mateom0104 0:e54d04f84276 134 dejar();
Mateom0104 0:e54d04f84276 135 origen();
Mateom0104 0:e54d04f84276 136 }
Mateom0104 0:e54d04f84276 137
Mateom0104 0:e54d04f84276 138
Mateom0104 0:e54d04f84276 139
Mateom0104 0:e54d04f84276 140
Mateom0104 0:e54d04f84276 141 void ir_tomar(void)
Mateom0104 0:e54d04f84276 142 {
Mateom0104 0:e54d04f84276 143
Mateom0104 0:e54d04f84276 144 int libre;
Mateom0104 0:e54d04f84276 145 int agrega;
Mateom0104 0:e54d04f84276 146 int pos;
Mateom0104 0:e54d04f84276 147
Mateom0104 0:e54d04f84276 148 if(ficha==20)
Mateom0104 0:e54d04f84276 149 {
Mateom0104 0:e54d04f84276 150 lec_sen();
Mateom0104 0:e54d04f84276 151 for(i=1;i<=4;i++)
Mateom0104 0:e54d04f84276 152 {
Mateom0104 0:e54d04f84276 153 if(l_x[i]==1)
Mateom0104 0:e54d04f84276 154 {
Mateom0104 0:e54d04f84276 155 libre=i;
Mateom0104 0:e54d04f84276 156 i=50;
Mateom0104 0:e54d04f84276 157 agrega=4;
Mateom0104 0:e54d04f84276 158 }
Mateom0104 0:e54d04f84276 159 }
Mateom0104 0:e54d04f84276 160 }
Mateom0104 0:e54d04f84276 161
Mateom0104 0:e54d04f84276 162 if(ficha==10)
Mateom0104 0:e54d04f84276 163 {
Mateom0104 0:e54d04f84276 164 lec_sen();
Mateom0104 0:e54d04f84276 165 for(i=1;i<=4;i++)
Mateom0104 0:e54d04f84276 166 {
Mateom0104 0:e54d04f84276 167 if(l_o[i]==1)
Mateom0104 0:e54d04f84276 168 {
Mateom0104 0:e54d04f84276 169 libre=i;
Mateom0104 0:e54d04f84276 170 i=50;
Mateom0104 0:e54d04f84276 171 agrega=0;
Mateom0104 0:e54d04f84276 172 }
Mateom0104 0:e54d04f84276 173 }
Mateom0104 0:e54d04f84276 174 }
Mateom0104 0:e54d04f84276 175
Mateom0104 0:e54d04f84276 176 pos=libre+agrega;
Mateom0104 0:e54d04f84276 177 for(i=1;i<=x[pos];i++)
Mateom0104 0:e54d04f84276 178 {
Mateom0104 0:e54d04f84276 179 derecha();
Mateom0104 0:e54d04f84276 180 }
Mateom0104 0:e54d04f84276 181
Mateom0104 0:e54d04f84276 182 for(i=1;i<=y[pos];i++)
Mateom0104 0:e54d04f84276 183 {
Mateom0104 0:e54d04f84276 184 adelante();
Mateom0104 0:e54d04f84276 185 }
Mateom0104 0:e54d04f84276 186 coger();
Mateom0104 0:e54d04f84276 187 origen();
Mateom0104 0:e54d04f84276 188
Mateom0104 0:e54d04f84276 189 }
Mateom0104 0:e54d04f84276 190 //////////////////////////////////////////////////////Lectura sensores todos
Mateom0104 0:e54d04f84276 191 void coger(void)
Mateom0104 0:e54d04f84276 192 {
Mateom0104 0:e54d04f84276 193 servo.pulsewidth_us(1220); // es constante
Mateom0104 0:e54d04f84276 194 electro_i=1;
Mateom0104 0:e54d04f84276 195 wait(1);
Mateom0104 0:e54d04f84276 196 servo.pulsewidth_us(640); // es constante
Mateom0104 0:e54d04f84276 197 wait(1);
Mateom0104 0:e54d04f84276 198
Mateom0104 0:e54d04f84276 199 }
Mateom0104 0:e54d04f84276 200 void dejar (void)
Mateom0104 0:e54d04f84276 201 {
Mateom0104 0:e54d04f84276 202 servo.pulsewidth_us(1220); // es constante
Mateom0104 0:e54d04f84276 203 wait(1);
Mateom0104 0:e54d04f84276 204 electro_i=0;
Mateom0104 0:e54d04f84276 205 servo.pulsewidth_us(640); // es constante
Mateom0104 0:e54d04f84276 206 wait(1);
Mateom0104 0:e54d04f84276 207
Mateom0104 0:e54d04f84276 208 }
Mateom0104 0:e54d04f84276 209 void lec_sen(void)
Mateom0104 0:e54d04f84276 210 {
Mateom0104 0:e54d04f84276 211 lec_x = !x0.read();//Elegir ficha
Mateom0104 0:e54d04f84276 212 lec_o = !o0.read();
Mateom0104 0:e54d04f84276 213
Mateom0104 0:e54d04f84276 214 //pc.printf("%f ",lec_x);
Mateom0104 0:e54d04f84276 215 //pc.printf("%f \n ",lec_o);
Mateom0104 0:e54d04f84276 216
Mateom0104 0:e54d04f84276 217 b1=boton1.read();// botones
Mateom0104 0:e54d04f84276 218 b2=boton2.read();
Mateom0104 0:e54d04f84276 219
Mateom0104 0:e54d04f84276 220 //pc.printf("%f ",b1);
Mateom0104 0:e54d04f84276 221 //pc.printf("%f \n ",b2);
Mateom0104 0:e54d04f84276 222
Mateom0104 0:e54d04f84276 223 l_o[1] = !o1.read();
Mateom0104 0:e54d04f84276 224 l_o[2] = !o2.read();
Mateom0104 0:e54d04f84276 225 l_o[3] = !o3.read();
Mateom0104 0:e54d04f84276 226 l_o[4] = !o4.read();
Mateom0104 0:e54d04f84276 227
Mateom0104 0:e54d04f84276 228
Mateom0104 0:e54d04f84276 229
Mateom0104 0:e54d04f84276 230 l_x[1] = !x1.read();
Mateom0104 0:e54d04f84276 231 l_x[2] = !x2.read();
Mateom0104 0:e54d04f84276 232 l_x[3] = !x3.read();
Mateom0104 0:e54d04f84276 233 l_x[4] = !x4.read();
Mateom0104 0:e54d04f84276 234
Mateom0104 0:e54d04f84276 235
Mateom0104 0:e54d04f84276 236 l_t[1] = !t1.read();
Mateom0104 0:e54d04f84276 237 l_t[2] = !t2.read();
Mateom0104 0:e54d04f84276 238 l_t[3] = !t3.read();
Mateom0104 0:e54d04f84276 239 l_t[4] = !t4.read();
Mateom0104 0:e54d04f84276 240 l_t[5] = !t5.read();
Mateom0104 0:e54d04f84276 241 l_t[6] = !t6.read();
Mateom0104 0:e54d04f84276 242 l_t[7] = !t7.read();
Mateom0104 0:e54d04f84276 243 l_t[8] = !t8.read();
Mateom0104 0:e54d04f84276 244 l_t[9] = !t9.read();
Mateom0104 0:e54d04f84276 245 /*
Mateom0104 0:e54d04f84276 246 pc.printf("%d ",l_o[1]);
Mateom0104 0:e54d04f84276 247 pc.printf("%d ",l_o[2]);
Mateom0104 0:e54d04f84276 248 pc.printf("%d ",l_o[3]);
Mateom0104 0:e54d04f84276 249 pc.printf("%d \n",l_o[4]);
Mateom0104 0:e54d04f84276 250
Mateom0104 0:e54d04f84276 251 pc.printf("%d ",l_x[1]);
Mateom0104 0:e54d04f84276 252 pc.printf("%d ",l_x[2]);
Mateom0104 0:e54d04f84276 253 pc.printf("%d ",l_x[3]);
Mateom0104 0:e54d04f84276 254 pc.printf("%d \n \n",l_x[4]);
Mateom0104 0:e54d04f84276 255
Mateom0104 0:e54d04f84276 256
Mateom0104 0:e54d04f84276 257 pc.printf("%d ",l_t[1]);
Mateom0104 0:e54d04f84276 258 pc.printf("%d ",l_t[2]);
Mateom0104 0:e54d04f84276 259 pc.printf("%d \n",l_t[3]);
Mateom0104 0:e54d04f84276 260 pc.printf("%d ",l_t[4]);
Mateom0104 0:e54d04f84276 261 pc.printf("%d ",l_t[5]);
Mateom0104 0:e54d04f84276 262 pc.printf("%d \n",l_t[6]);
Mateom0104 0:e54d04f84276 263 pc.printf("%d ",l_t[7]);
Mateom0104 0:e54d04f84276 264 pc.printf("%d ",l_t[8]);
Mateom0104 0:e54d04f84276 265 pc.printf("%d \n\n\n",l_t[9]);
Mateom0104 0:e54d04f84276 266
Mateom0104 0:e54d04f84276 267 */
Mateom0104 0:e54d04f84276 268
Mateom0104 0:e54d04f84276 269
Mateom0104 0:e54d04f84276 270 }
Mateom0104 0:e54d04f84276 271 /////////////////////////////////////////////////////adelante
Mateom0104 0:e54d04f84276 272 void adelante (void)
Mateom0104 0:e54d04f84276 273 {
Mateom0104 0:e54d04f84276 274 dir_y=0;
Mateom0104 0:e54d04f84276 275 step_y=1;
Mateom0104 0:e54d04f84276 276 wait_ms(tiempo);
Mateom0104 0:e54d04f84276 277 step_y=0;
Mateom0104 0:e54d04f84276 278 wait_ms(tiempo);
Mateom0104 0:e54d04f84276 279 }
Mateom0104 0:e54d04f84276 280 /////////////////////////////////////////////////////atras
Mateom0104 0:e54d04f84276 281 void atras (void)
Mateom0104 0:e54d04f84276 282 {
Mateom0104 0:e54d04f84276 283 dir_y=1;
Mateom0104 0:e54d04f84276 284 step_y=1;
Mateom0104 0:e54d04f84276 285 wait_ms(tiempo);
Mateom0104 0:e54d04f84276 286 step_y=0;
Mateom0104 0:e54d04f84276 287 wait_ms(tiempo);
Mateom0104 0:e54d04f84276 288 }
Mateom0104 0:e54d04f84276 289 /////////////////////////////////////////////////////Deerecha
Mateom0104 0:e54d04f84276 290
Mateom0104 0:e54d04f84276 291 void derecha (void)
Mateom0104 0:e54d04f84276 292 {
Mateom0104 0:e54d04f84276 293 dir_x=1;
Mateom0104 0:e54d04f84276 294 step_x=1;
Mateom0104 0:e54d04f84276 295 wait_ms(tiempo);
Mateom0104 0:e54d04f84276 296 step_x=0;
Mateom0104 0:e54d04f84276 297 wait_ms(tiempo);
Mateom0104 0:e54d04f84276 298 }
Mateom0104 0:e54d04f84276 299 /////////////////////////////////////////////////////izquierda
Mateom0104 0:e54d04f84276 300
Mateom0104 0:e54d04f84276 301 void izquierda (void)
Mateom0104 0:e54d04f84276 302 {
Mateom0104 0:e54d04f84276 303 dir_x=0;
Mateom0104 0:e54d04f84276 304 step_x=1;
Mateom0104 0:e54d04f84276 305 wait_ms(tiempo);
Mateom0104 0:e54d04f84276 306 step_x=0;
Mateom0104 0:e54d04f84276 307 wait_ms(tiempo);
Mateom0104 0:e54d04f84276 308 }
Mateom0104 0:e54d04f84276 309 /////////////////////////////////////////////////////origen
Mateom0104 0:e54d04f84276 310 void origen (void)
Mateom0104 0:e54d04f84276 311 {
Mateom0104 0:e54d04f84276 312
Mateom0104 0:e54d04f84276 313 while(veri==0)
Mateom0104 0:e54d04f84276 314 {
Mateom0104 0:e54d04f84276 315 fcy = finaly.read();
Mateom0104 0:e54d04f84276 316 fcx = finalx.read();
Mateom0104 0:e54d04f84276 317
Mateom0104 0:e54d04f84276 318 // pc.printf("%f ",fcx);
Mateom0104 0:e54d04f84276 319 // pc.printf("%f \n ",fcy);
Mateom0104 0:e54d04f84276 320
Mateom0104 0:e54d04f84276 321 if(fcy==0)
Mateom0104 0:e54d04f84276 322 atras();
Mateom0104 0:e54d04f84276 323
Mateom0104 0:e54d04f84276 324 if(fcx==0)
Mateom0104 0:e54d04f84276 325 izquierda();
Mateom0104 0:e54d04f84276 326
Mateom0104 0:e54d04f84276 327 if(fcx==1 && fcy==1)
Mateom0104 0:e54d04f84276 328 veri=1;
Mateom0104 0:e54d04f84276 329
Mateom0104 0:e54d04f84276 330 }
Mateom0104 0:e54d04f84276 331 veri=0;
Mateom0104 0:e54d04f84276 332 }
Mateom0104 0:e54d04f84276 333
Mateom0104 0:e54d04f84276 334 ////////////////////////////////////////////////////////////////////////////
Mateom0104 0:e54d04f84276 335 ////////////////////////////////////////////////////// main////////////////
Mateom0104 0:e54d04f84276 336 ///////////////////////////////////////////////////////////////////////////
Mateom0104 0:e54d04f84276 337
Mateom0104 0:e54d04f84276 338 int main() {
Mateom0104 0:e54d04f84276 339 /*
Mateom0104 0:e54d04f84276 340 while(1)
Mateom0104 0:e54d04f84276 341 {
Mateom0104 0:e54d04f84276 342 lec_sen();
Mateom0104 0:e54d04f84276 343 wait(0.5);
Mateom0104 0:e54d04f84276 344 }
Mateom0104 0:e54d04f84276 345 */
Mateom0104 0:e54d04f84276 346 int imprimir;
Mateom0104 0:e54d04f84276 347 int no;
Mateom0104 0:e54d04f84276 348 servo.period_ms(20); // es constante
Mateom0104 0:e54d04f84276 349
Mateom0104 0:e54d04f84276 350 // inicializa todo
Mateom0104 0:e54d04f84276 351 lcd.cls();
Mateom0104 0:e54d04f84276 352 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 353 lcd.printf(" Inicializando");
Mateom0104 0:e54d04f84276 354 servo.pulsewidth_us(640); // es constante
Mateom0104 0:e54d04f84276 355 origen();
Mateom0104 0:e54d04f84276 356 lcd.cls();
Mateom0104 0:e54d04f84276 357 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 358 lcd.printf("Elija X o O");
Mateom0104 0:e54d04f84276 359
Mateom0104 0:e54d04f84276 360
Mateom0104 0:e54d04f84276 361 while(veri2==0)
Mateom0104 0:e54d04f84276 362 {
Mateom0104 0:e54d04f84276 363 lec_sen();
Mateom0104 0:e54d04f84276 364
Mateom0104 0:e54d04f84276 365 // sabe si todas las fichas estan ubicadas
Mateom0104 0:e54d04f84276 366 for(i=0;i<=4;i++)
Mateom0104 0:e54d04f84276 367 {
Mateom0104 0:e54d04f84276 368 sum=sum+l_o[i]+l_x[i];
Mateom0104 0:e54d04f84276 369
Mateom0104 0:e54d04f84276 370 }
Mateom0104 0:e54d04f84276 371
Mateom0104 0:e54d04f84276 372 // si no estan todas marca error
Mateom0104 0:e54d04f84276 373 if(sum <8 && anti==0)
Mateom0104 0:e54d04f84276 374 {
Mateom0104 0:e54d04f84276 375 lcd.cls();
Mateom0104 0:e54d04f84276 376 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 377 lcd.printf(" Error");
Mateom0104 0:e54d04f84276 378 anti=1;
Mateom0104 0:e54d04f84276 379 no=1;
Mateom0104 0:e54d04f84276 380 }
Mateom0104 0:e54d04f84276 381 // si estan todas elija x o 0
Mateom0104 0:e54d04f84276 382 if(sum>=8 && anti==1)
Mateom0104 0:e54d04f84276 383 {
Mateom0104 0:e54d04f84276 384 lcd.cls();
Mateom0104 0:e54d04f84276 385 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 386 lcd.printf("Elija X o O");
Mateom0104 0:e54d04f84276 387 anti=0;
Mateom0104 0:e54d04f84276 388 no=0;
Mateom0104 0:e54d04f84276 389 }
Mateom0104 0:e54d04f84276 390 sum=0;
Mateom0104 0:e54d04f84276 391
Mateom0104 0:e54d04f84276 392
Mateom0104 0:e54d04f84276 393 // se determina q ficha se eligio
Mateom0104 0:e54d04f84276 394 if(lec_x ==0 && no==0)
Mateom0104 0:e54d04f84276 395 {
Mateom0104 0:e54d04f84276 396 lcd.cls();
Mateom0104 0:e54d04f84276 397 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 398 lcd.printf(" Ficha: O");
Mateom0104 0:e54d04f84276 399
Mateom0104 0:e54d04f84276 400 ficha=20;
Mateom0104 0:e54d04f84276 401 veri2=1;
Mateom0104 0:e54d04f84276 402 }
Mateom0104 0:e54d04f84276 403
Mateom0104 0:e54d04f84276 404 if(lec_o ==0 && no==0)
Mateom0104 0:e54d04f84276 405 {
Mateom0104 0:e54d04f84276 406
Mateom0104 0:e54d04f84276 407 lcd.cls();
Mateom0104 0:e54d04f84276 408 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 409 lcd.printf(" Ficha: x");
Mateom0104 0:e54d04f84276 410
Mateom0104 0:e54d04f84276 411 ficha=10;
Mateom0104 0:e54d04f84276 412 veri2=1;
Mateom0104 0:e54d04f84276 413 }
Mateom0104 0:e54d04f84276 414 wait(0.6);
Mateom0104 0:e54d04f84276 415
Mateom0104 0:e54d04f84276 416 }
Mateom0104 0:e54d04f84276 417 // hasta aca solo se sabe con q ficha comienza
Mateom0104 0:e54d04f84276 418 // se inicia todo y se espera 1 seg
Mateom0104 0:e54d04f84276 419 sum=0;
Mateom0104 0:e54d04f84276 420 wait(1);
Mateom0104 0:e54d04f84276 421 cont++;
Mateom0104 0:e54d04f84276 422
Mateom0104 0:e54d04f84276 423 lcd.cls();
Mateom0104 0:e54d04f84276 424 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 425 lcd.printf("Coloque la ficha");
Mateom0104 0:e54d04f84276 426
Mateom0104 0:e54d04f84276 427 while(veri3==0)
Mateom0104 0:e54d04f84276 428 {
Mateom0104 0:e54d04f84276 429 wait(2);
Mateom0104 0:e54d04f84276 430 lec_sen();
Mateom0104 0:e54d04f84276 431 for(i=1;i<=9;i++)
Mateom0104 0:e54d04f84276 432 {
Mateom0104 0:e54d04f84276 433 sum=sum+l_t[i];// suma todo el triki para saber si hay fichas
Mateom0104 0:e54d04f84276 434 }
Mateom0104 0:e54d04f84276 435 if(sum==1)
Mateom0104 0:e54d04f84276 436 veri3=1;
Mateom0104 0:e54d04f84276 437 //pc.printf("%d \n ",sum);
Mateom0104 0:e54d04f84276 438 sum=0;
Mateom0104 0:e54d04f84276 439
Mateom0104 0:e54d04f84276 440 }
Mateom0104 0:e54d04f84276 441 for(i=1;i<=9;i++)
Mateom0104 0:e54d04f84276 442 {
Mateom0104 0:e54d04f84276 443 if(l_t[i]==1)
Mateom0104 0:e54d04f84276 444 {
Mateom0104 0:e54d04f84276 445 imprimir=i+ficha;
Mateom0104 0:e54d04f84276 446 pc.printf("%d\n ",imprimir);
Mateom0104 0:e54d04f84276 447 imprimir=0;
Mateom0104 0:e54d04f84276 448 }
Mateom0104 0:e54d04f84276 449 }
Mateom0104 0:e54d04f84276 450 // busca y envia el dato con la ficha guardada
Mateom0104 0:e54d04f84276 451 ///////////////////////////////////////////////////////////////////////////comienza*********************************************************
Mateom0104 0:e54d04f84276 452 while(1)
Mateom0104 0:e54d04f84276 453 {
Mateom0104 0:e54d04f84276 454 sum=0;
Mateom0104 0:e54d04f84276 455 int l_oc[5];
Mateom0104 0:e54d04f84276 456 int l_xc[5];
Mateom0104 0:e54d04f84276 457
Mateom0104 0:e54d04f84276 458 lcd.cls();
Mateom0104 0:e54d04f84276 459 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 460 lcd.printf("Turno de pc");
Mateom0104 0:e54d04f84276 461
Mateom0104 0:e54d04f84276 462 letra = pc.getc();
Mateom0104 0:e54d04f84276 463
Mateom0104 0:e54d04f84276 464 for(i=0;i<=9;i++)
Mateom0104 0:e54d04f84276 465 l_t2[i]=l_t[i];
Mateom0104 0:e54d04f84276 466
Mateom0104 0:e54d04f84276 467
Mateom0104 0:e54d04f84276 468
Mateom0104 0:e54d04f84276 469 while(letra<49 && letra>57)
Mateom0104 0:e54d04f84276 470 {
Mateom0104 0:e54d04f84276 471 letra = pc.getc();
Mateom0104 0:e54d04f84276 472 //pc.printf("%d \n ",letra);
Mateom0104 0:e54d04f84276 473 //lcd.locate(0,1);
Mateom0104 0:e54d04f84276 474 //char a=letra;
Mateom0104 0:e54d04f84276 475 //lcd.printf(a);
Mateom0104 0:e54d04f84276 476 }
Mateom0104 0:e54d04f84276 477 letra=letra-48;// pasar a decimal
Mateom0104 0:e54d04f84276 478 ir_tomar();
Mateom0104 0:e54d04f84276 479 wait(1);
Mateom0104 0:e54d04f84276 480 ir_dejar();
Mateom0104 0:e54d04f84276 481
Mateom0104 0:e54d04f84276 482 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 483 lcd.printf(" Su turno ");
Mateom0104 0:e54d04f84276 484 l_oc[1] = !o1.read();
Mateom0104 0:e54d04f84276 485 l_oc[2] = !o2.read();
Mateom0104 0:e54d04f84276 486 l_oc[3] = !o3.read();
Mateom0104 0:e54d04f84276 487 l_oc[4] = !o4.read();
Mateom0104 0:e54d04f84276 488
Mateom0104 0:e54d04f84276 489
Mateom0104 0:e54d04f84276 490
Mateom0104 0:e54d04f84276 491 l_xc[1] = !x1.read();
Mateom0104 0:e54d04f84276 492 l_xc[2] = !x2.read();
Mateom0104 0:e54d04f84276 493 l_xc[3] = !x3.read();
Mateom0104 0:e54d04f84276 494 l_xc[4] = !x4.read();
Mateom0104 0:e54d04f84276 495
Mateom0104 0:e54d04f84276 496 while(veri4==0)
Mateom0104 0:e54d04f84276 497 {
Mateom0104 0:e54d04f84276 498 lec_sen();
Mateom0104 0:e54d04f84276 499 if(ficha==20)// determina si es x o 0
Mateom0104 0:e54d04f84276 500 {
Mateom0104 0:e54d04f84276 501 for(i=1;i<=4;i++)
Mateom0104 0:e54d04f84276 502 {
Mateom0104 0:e54d04f84276 503 if(l_oc[i] != l_o[i])
Mateom0104 0:e54d04f84276 504 {
Mateom0104 0:e54d04f84276 505 veri4=1;
Mateom0104 0:e54d04f84276 506 }
Mateom0104 0:e54d04f84276 507 }
Mateom0104 0:e54d04f84276 508 }
Mateom0104 0:e54d04f84276 509 if(ficha==10)// determina si es x o 0
Mateom0104 0:e54d04f84276 510 {
Mateom0104 0:e54d04f84276 511 for(i=1;i<=4;i++)
Mateom0104 0:e54d04f84276 512 {
Mateom0104 0:e54d04f84276 513 if(l_xc[i] != l_x[i])
Mateom0104 0:e54d04f84276 514 {
Mateom0104 0:e54d04f84276 515 veri4=1;
Mateom0104 0:e54d04f84276 516 }
Mateom0104 0:e54d04f84276 517 }
Mateom0104 0:e54d04f84276 518 }
Mateom0104 0:e54d04f84276 519 }
Mateom0104 0:e54d04f84276 520 veri4=0;
Mateom0104 0:e54d04f84276 521
Mateom0104 0:e54d04f84276 522 lcd.cls();
Mateom0104 0:e54d04f84276 523 lcd.locate(0,0);
Mateom0104 0:e54d04f84276 524 lcd.printf("Coloque la ficha");
Mateom0104 0:e54d04f84276 525 cont++;
Mateom0104 0:e54d04f84276 526 cont++;
Mateom0104 0:e54d04f84276 527 sum=0;
Mateom0104 0:e54d04f84276 528 while(veri4==0)
Mateom0104 0:e54d04f84276 529 {
Mateom0104 0:e54d04f84276 530 wait(2);
Mateom0104 0:e54d04f84276 531 lec_sen();
Mateom0104 0:e54d04f84276 532 for(i=1;i<=9;i++)
Mateom0104 0:e54d04f84276 533 {
Mateom0104 0:e54d04f84276 534 sum=sum+l_t[i];
Mateom0104 0:e54d04f84276 535 }
Mateom0104 0:e54d04f84276 536 if(sum==cont)
Mateom0104 0:e54d04f84276 537 veri4=1;
Mateom0104 0:e54d04f84276 538
Mateom0104 0:e54d04f84276 539 //pc.printf("%d \n ",sum);
Mateom0104 0:e54d04f84276 540 sum=0;
Mateom0104 0:e54d04f84276 541
Mateom0104 0:e54d04f84276 542 }
Mateom0104 0:e54d04f84276 543
Mateom0104 0:e54d04f84276 544 for(i=1;i<=9;i++)
Mateom0104 0:e54d04f84276 545 {
Mateom0104 0:e54d04f84276 546 if(l_t2[i]!= l_t[i])
Mateom0104 0:e54d04f84276 547 {
Mateom0104 0:e54d04f84276 548 diferencia=i;
Mateom0104 0:e54d04f84276 549 }
Mateom0104 0:e54d04f84276 550 }
Mateom0104 0:e54d04f84276 551
Mateom0104 0:e54d04f84276 552 imprimir=diferencia+ficha;
Mateom0104 0:e54d04f84276 553 pc.printf("%d\n",imprimir);
Mateom0104 0:e54d04f84276 554 imprimir=0;
Mateom0104 0:e54d04f84276 555
Mateom0104 0:e54d04f84276 556 /*
Mateom0104 0:e54d04f84276 557 for(i=1;i<=9;i++)
Mateom0104 0:e54d04f84276 558 {
Mateom0104 0:e54d04f84276 559
Mateom0104 0:e54d04f84276 560 if(l_t[i]==1)
Mateom0104 0:e54d04f84276 561 {
Mateom0104 0:e54d04f84276 562 imprimir=i+ficha;
Mateom0104 0:e54d04f84276 563 pc.printf("%d \n ",imprimir);
Mateom0104 0:e54d04f84276 564 imprimir=0;
Mateom0104 0:e54d04f84276 565 }
Mateom0104 0:e54d04f84276 566 }
Mateom0104 0:e54d04f84276 567
Mateom0104 0:e54d04f84276 568 */
Mateom0104 0:e54d04f84276 569 veri4=0;
Mateom0104 0:e54d04f84276 570
Mateom0104 0:e54d04f84276 571
Mateom0104 0:e54d04f84276 572 }
Mateom0104 0:e54d04f84276 573 }