Codigo fun
Revision 0:e54d04f84276, committed 2019-11-13
- Comitter:
- Mateom0104
- Date:
- Wed Nov 13 22:27:51 2019 +0000
- Commit message:
- Codigo funcionamiento triki
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Wed Nov 13 22:27:51 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Nov 13 22:27:51 2019 +0000
@@ -0,0 +1,573 @@
+#include "mbed.h"
+#include "PwmOut.h"
+#include "TextLCD.h"
+
+
+
+float tiempo = 1;
+
+
+// final de carrera
+DigitalIn finaly(PC_10);
+DigitalIn finalx(PC_11);
+float fcy,fcx;
+
+
+//Serial
+Serial pc(SERIAL_TX, SERIAL_RX);
+
+//Servo
+PwmOut servo (A1);
+
+//LCD
+TextLCD lcd(PA_7, PA_6, PA_8, PB_6, PC_7, PA_9, TextLCD::LCD16x2); // rs, e, d4-d7
+
+//Variables Sensores
+DigitalIn x0(PC_0);// elegir pieza
+DigitalIn o0(PC_3);
+
+float lec_x;
+float lec_o;
+
+DigitalIn x1(PC_9);// columna x
+DigitalIn x2(PB_8);
+DigitalIn x3(PA_0);
+DigitalIn x4(PH_1);
+
+int l_x1,l_x2,l_x3,l_x4;
+int l_x[5];
+
+DigitalIn o1(PA_4);// columna o
+DigitalIn o2(PB_0);
+DigitalIn o3(PC_2);
+DigitalIn o4(PC_1);
+
+int l_o1,l_o2,l_o3,l_o4;
+int l_o[5];
+
+DigitalIn t1(PB_14);// triki
+DigitalIn t2(PB_2);
+DigitalIn t3(PA_12);
+DigitalIn t4(PB_13);
+DigitalIn t5(PB_1);
+DigitalIn t6(PA_11);
+DigitalIn t7(PC_4);
+DigitalIn t8(PB_15);
+DigitalIn t9(PB_12);
+
+
+//int l_t1,l_t2,l_t3,l_t4,l_t5,l_t6,l_t7,l_t8,l_t9;
+int l_t[10];
+int l_t2[10];
+
+// botones
+DigitalIn boton1(PC_8);
+DigitalIn boton2(PC_6);
+
+float b1,b2;
+
+
+// electroiman
+
+DigitalOut electro_i(PC_12);
+
+
+
+// movimiento motores
+
+DigitalOut dir_x(D5);
+DigitalOut step_x(D2);
+
+DigitalOut dir_y(D6);
+DigitalOut step_y(D3);
+
+
+// variables utilizables
+int veri,veri2,veri3,veri4;
+int i;
+int sum,ficha;
+int anti;
+int cont;
+int letra=0;
+int diferencia;
+
+
+// posiciones
+// ubicacion fichas
+int x[9]={0,0,0,0,0,279,279,279,279};
+int y[9]={0,397,733,1040,1374,397,733,1040,1374};
+
+// Ubicaciones de triki
+int x_t[10]={0,628,940,1258,628,940,1258,628,940,1258};
+int y_t[10]={0,590,590,590,905,905,905,1194,1194,1194};
+
+
+
+
+void origen (void);
+void adelante(void);
+void atras(void);
+void derecha (void);
+void izquierda(void);
+void lec_sen(void);
+void coger(void);
+void dejar(void);
+void ir_tomar(void);
+void ir_dejar(void);
+
+////////////////////////////////////////////
+void ir_dejar (void)
+{
+
+int pos;
+
+ pos=letra;
+ for(i=1;i<=x_t[pos];i++)
+ {
+ derecha();
+ }
+
+ for(i=1;i<=y_t[pos];i++)
+ {
+ adelante();
+ }
+ dejar();
+ origen();
+}
+
+
+
+
+void ir_tomar(void)
+{
+
+int libre;
+int agrega;
+int pos;
+
+ if(ficha==20)
+ {
+ lec_sen();
+ for(i=1;i<=4;i++)
+ {
+ if(l_x[i]==1)
+ {
+ libre=i;
+ i=50;
+ agrega=4;
+ }
+ }
+ }
+
+ if(ficha==10)
+ {
+ lec_sen();
+ for(i=1;i<=4;i++)
+ {
+ if(l_o[i]==1)
+ {
+ libre=i;
+ i=50;
+ agrega=0;
+ }
+ }
+ }
+
+ pos=libre+agrega;
+ for(i=1;i<=x[pos];i++)
+ {
+ derecha();
+ }
+
+ for(i=1;i<=y[pos];i++)
+ {
+ adelante();
+ }
+ coger();
+ origen();
+
+}
+//////////////////////////////////////////////////////Lectura sensores todos
+void coger(void)
+{
+ servo.pulsewidth_us(1220); // es constante
+ electro_i=1;
+ wait(1);
+ servo.pulsewidth_us(640); // es constante
+ wait(1);
+
+}
+void dejar (void)
+{
+ servo.pulsewidth_us(1220); // es constante
+ wait(1);
+ electro_i=0;
+ servo.pulsewidth_us(640); // es constante
+ wait(1);
+
+}
+void lec_sen(void)
+{
+ lec_x = !x0.read();//Elegir ficha
+ lec_o = !o0.read();
+
+ //pc.printf("%f ",lec_x);
+ //pc.printf("%f \n ",lec_o);
+
+ b1=boton1.read();// botones
+ b2=boton2.read();
+
+ //pc.printf("%f ",b1);
+ //pc.printf("%f \n ",b2);
+
+ l_o[1] = !o1.read();
+ l_o[2] = !o2.read();
+ l_o[3] = !o3.read();
+ l_o[4] = !o4.read();
+
+
+
+ l_x[1] = !x1.read();
+ l_x[2] = !x2.read();
+ l_x[3] = !x3.read();
+ l_x[4] = !x4.read();
+
+
+ l_t[1] = !t1.read();
+ l_t[2] = !t2.read();
+ l_t[3] = !t3.read();
+ l_t[4] = !t4.read();
+ l_t[5] = !t5.read();
+ l_t[6] = !t6.read();
+ l_t[7] = !t7.read();
+ l_t[8] = !t8.read();
+ l_t[9] = !t9.read();
+ /*
+ pc.printf("%d ",l_o[1]);
+ pc.printf("%d ",l_o[2]);
+ pc.printf("%d ",l_o[3]);
+ pc.printf("%d \n",l_o[4]);
+
+ pc.printf("%d ",l_x[1]);
+ pc.printf("%d ",l_x[2]);
+ pc.printf("%d ",l_x[3]);
+ pc.printf("%d \n \n",l_x[4]);
+
+
+ pc.printf("%d ",l_t[1]);
+ pc.printf("%d ",l_t[2]);
+ pc.printf("%d \n",l_t[3]);
+ pc.printf("%d ",l_t[4]);
+ pc.printf("%d ",l_t[5]);
+ pc.printf("%d \n",l_t[6]);
+ pc.printf("%d ",l_t[7]);
+ pc.printf("%d ",l_t[8]);
+ pc.printf("%d \n\n\n",l_t[9]);
+
+ */
+
+
+}
+/////////////////////////////////////////////////////adelante
+void adelante (void)
+{
+ dir_y=0;
+ step_y=1;
+ wait_ms(tiempo);
+ step_y=0;
+ wait_ms(tiempo);
+}
+/////////////////////////////////////////////////////atras
+void atras (void)
+{
+ dir_y=1;
+ step_y=1;
+ wait_ms(tiempo);
+ step_y=0;
+ wait_ms(tiempo);
+}
+/////////////////////////////////////////////////////Deerecha
+
+void derecha (void)
+{
+ dir_x=1;
+ step_x=1;
+ wait_ms(tiempo);
+ step_x=0;
+ wait_ms(tiempo);
+}
+/////////////////////////////////////////////////////izquierda
+
+void izquierda (void)
+{
+ dir_x=0;
+ step_x=1;
+ wait_ms(tiempo);
+ step_x=0;
+ wait_ms(tiempo);
+}
+/////////////////////////////////////////////////////origen
+void origen (void)
+{
+
+while(veri==0)
+{
+ fcy = finaly.read();
+ fcx = finalx.read();
+
+// pc.printf("%f ",fcx);
+// pc.printf("%f \n ",fcy);
+
+if(fcy==0)
+atras();
+
+if(fcx==0)
+izquierda();
+
+if(fcx==1 && fcy==1)
+veri=1;
+
+}
+veri=0;
+}
+
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////// main////////////////
+///////////////////////////////////////////////////////////////////////////
+
+int main() {
+ /*
+ while(1)
+ {
+ lec_sen();
+ wait(0.5);
+ }
+ */
+int imprimir;
+int no;
+servo.period_ms(20); // es constante
+
+ // inicializa todo
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf(" Inicializando");
+ servo.pulsewidth_us(640); // es constante
+ origen();
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("Elija X o O");
+
+
+ while(veri2==0)
+ {
+ lec_sen();
+
+ // sabe si todas las fichas estan ubicadas
+ for(i=0;i<=4;i++)
+ {
+ sum=sum+l_o[i]+l_x[i];
+
+ }
+
+ // si no estan todas marca error
+ if(sum <8 && anti==0)
+ {
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf(" Error");
+ anti=1;
+ no=1;
+ }
+ // si estan todas elija x o 0
+ if(sum>=8 && anti==1)
+ {
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("Elija X o O");
+ anti=0;
+ no=0;
+ }
+ sum=0;
+
+
+// se determina q ficha se eligio
+ if(lec_x ==0 && no==0)
+ {
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf(" Ficha: O");
+
+ ficha=20;
+ veri2=1;
+ }
+
+ if(lec_o ==0 && no==0)
+ {
+
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf(" Ficha: x");
+
+ ficha=10;
+ veri2=1;
+ }
+ wait(0.6);
+
+ }
+ // hasta aca solo se sabe con q ficha comienza
+ // se inicia todo y se espera 1 seg
+ sum=0;
+ wait(1);
+ cont++;
+
+lcd.cls();
+lcd.locate(0,0);
+lcd.printf("Coloque la ficha");
+
+ while(veri3==0)
+ {
+ wait(2);
+ lec_sen();
+ for(i=1;i<=9;i++)
+ {
+ sum=sum+l_t[i];// suma todo el triki para saber si hay fichas
+ }
+ if(sum==1)
+ veri3=1;
+ //pc.printf("%d \n ",sum);
+ sum=0;
+
+ }
+ for(i=1;i<=9;i++)
+ {
+ if(l_t[i]==1)
+ {
+ imprimir=i+ficha;
+ pc.printf("%d\n ",imprimir);
+ imprimir=0;
+ }
+ }
+ // busca y envia el dato con la ficha guardada
+///////////////////////////////////////////////////////////////////////////comienza*********************************************************
+while(1)
+{
+sum=0;
+int l_oc[5];
+int l_xc[5];
+
+lcd.cls();
+lcd.locate(0,0);
+lcd.printf("Turno de pc");
+
+ letra = pc.getc();
+
+ for(i=0;i<=9;i++)
+ l_t2[i]=l_t[i];
+
+
+
+ while(letra<49 && letra>57)
+ {
+ letra = pc.getc();
+ //pc.printf("%d \n ",letra);
+ //lcd.locate(0,1);
+ //char a=letra;
+ //lcd.printf(a);
+ }
+ letra=letra-48;// pasar a decimal
+ ir_tomar();
+ wait(1);
+ ir_dejar();
+
+ lcd.locate(0,0);
+ lcd.printf(" Su turno ");
+ l_oc[1] = !o1.read();
+ l_oc[2] = !o2.read();
+ l_oc[3] = !o3.read();
+ l_oc[4] = !o4.read();
+
+
+
+ l_xc[1] = !x1.read();
+ l_xc[2] = !x2.read();
+ l_xc[3] = !x3.read();
+ l_xc[4] = !x4.read();
+
+ while(veri4==0)
+ {
+ lec_sen();
+ if(ficha==20)// determina si es x o 0
+ {
+ for(i=1;i<=4;i++)
+ {
+ if(l_oc[i] != l_o[i])
+ {
+ veri4=1;
+ }
+ }
+ }
+ if(ficha==10)// determina si es x o 0
+ {
+ for(i=1;i<=4;i++)
+ {
+ if(l_xc[i] != l_x[i])
+ {
+ veri4=1;
+ }
+ }
+ }
+ }
+ veri4=0;
+
+lcd.cls();
+lcd.locate(0,0);
+lcd.printf("Coloque la ficha");
+cont++;
+cont++;
+sum=0;
+ while(veri4==0)
+ {
+ wait(2);
+ lec_sen();
+ for(i=1;i<=9;i++)
+ {
+ sum=sum+l_t[i];
+ }
+ if(sum==cont)
+ veri4=1;
+
+ //pc.printf("%d \n ",sum);
+ sum=0;
+
+ }
+
+ for(i=1;i<=9;i++)
+ {
+ if(l_t2[i]!= l_t[i])
+ {
+ diferencia=i;
+ }
+ }
+
+ imprimir=diferencia+ficha;
+ pc.printf("%d\n",imprimir);
+ imprimir=0;
+
+/*
+ for(i=1;i<=9;i++)
+ {
+
+ if(l_t[i]==1)
+ {
+ imprimir=i+ficha;
+ pc.printf("%d \n ",imprimir);
+ imprimir=0;
+ }
+ }
+
+ */
+ veri4=0;
+
+
+}
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Nov 13 22:27:51 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file