Codigo fun

Dependencies:   mbed TextLCD

Files at this revision

API Documentation at this revision

Comitter:
Mateom0104
Date:
Wed Nov 13 22:27:51 2019 +0000
Commit message:
Codigo funcionamiento triki

Changed in this revision

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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