Funciona con acelero-metro, falta comunicación y blink.

Dependencies:   mbed MPU6050

Revision:
5:1292da7b7c6f
Parent:
4:3426b2472f99
--- a/recoge_manzanas.cpp	Mon Nov 19 06:25:35 2018 +0000
+++ b/recoge_manzanas.cpp	Tue Nov 20 08:30:45 2018 +0000
@@ -18,6 +18,7 @@
 DigitalIn pulsador(PH_1);
 AnalogIn in1(PC_2);
 AnalogIn in2(PC_3);
+DigitalOut led(LED1);
 
 #define  VEL 200                     //Velocidad de actualizacion de dato en el controlador.
 #define  MIN 1
@@ -25,21 +26,31 @@
 #define  MINC 128
 #define  MAXC 1
 #define  DEL 0.1
-#define  GIRO 2
-#define  G_DIAG 2
+#define  GIRO 3
+#define  G_DIAG 3
 
-int columna=1,manzanas=0;
-int fila=1, fil=1, colum=1;
+int columna=1, manzanas=0, fila=1, fil=1, colum=0;
+uint8_t _guarda_manzanas[8]={0,0,0,0,0,0,0,0};
 bool _boton=0;
 void blink();
 void boton();
+void guarda_manzana();
+void imprime_manzanas();
+
+//--------------------------------------------------
+//-------------------GUARDA_MANZANAS------------------------
+//-------------------------------------------------- 
+void guarda_manzana()
+{
+       _guarda_manzanas[fil]=_guarda_manzanas[fil]+colum; 
+}
 
 //--------------------------------------------------
 //-------------------TICKER------------------------
 //--------------------------------------------------  
 void attime() {
     blink();
-    //boton();
+    boton();
     }; 
 
 //--------------------------------------------------
@@ -47,28 +58,13 @@
 //--------------------------------------------------  
 void boton()
 {
-  int x=0;
-  while(1) 
-  {
-    if (pulsador == 1) 
-          x=0;
-    else
+    if (pulsador == 0) 
         {
-            command.printf("Button pressed %d\n", x);
-            x++;
-            if(x>20)
-                {
-                    for(int i=0; i<5;i++)
-                    {
-                    //led = !led; // Toggle the LED state
-                    _boton=!_boton;
-                    wait(0.2);
-                    }
-                x=0;
-                }
+            command.printf("Button pressed %b\n", _boton);
+            _boton= !_boton;
         }
-  }
 }  
+
 //--------------------------------------------------
 //-------------------SPI------------------------
 //--------------------------------------------------   
@@ -82,7 +78,6 @@
     deviceM.lock();
 };
 
-
 //--------------------------------------------------
 //-------------------TEST------------------------
 //--------------------------------------------------   
@@ -95,7 +90,6 @@
     sendSPI(0x0F,0);        //operacion normal     
 }
 
-
 //--------------------------------------------------
 //-------------------BORRAR------------------------
 //--------------------------------------------------   
@@ -108,6 +102,26 @@
     }
 }
 
+//--------------------------------------------------
+//-------------------IMPRIME_MANZANAS------------------------
+//--------------------------------------------------  
+void imprime_manzanas()
+{
+    for(int i=0;i<9;i++)
+    {
+        if(i==fila)
+        {
+            uint8_t x=_guarda_manzanas[i]+columna;
+            sendSPI(i,x);
+            command.printf("if=fila.imprime_manzanas: X=%d\n", x);
+        }  
+        else
+        {
+            sendSPI(i,_guarda_manzanas[i]);
+            command.printf("else.imprime_manzanas: %d\n", _guarda_manzanas[i]);
+        }
+    }
+}
 
 //--------------------------------------------------
 //-------------------GENERAR_PUNTO------------------------
@@ -115,129 +129,114 @@
 void generar_punto()
 {
     int col[8]={1,2,4,8,16,32,64,128};
-    //int fil=0;
-    borrar();
     int _fil=fil;
     fil= rand() % 7+1;
     int y= rand() % 7+1;
-    command.printf("\n\n Fila: %d",fil); 
-    command.printf("\n Columna:%d",col[y]);
-    //int time=0;
-    //while(time<4)
-    //    {
+    int colum=col[y];
     if(_fil==fil)
-    colum=colum+col[y];
-    colum=col[y];
-    if(fil==fila){
-                    int guarda_linea=columna+colum;
-                    sendSPI(fila,guarda_linea);
-                    }
+        _guarda_manzanas[fil]=colum+_guarda_manzanas[fil];
     else
-    sendSPI(fil,col[y]);
-    
-    //    wait_ms(VEL);
-    //    sendSPI(fil,0);
-    //    wait_ms(VEL);
-    //    time++;
-    //    }
-    
+        _guarda_manzanas[fil]=colum;
+    command.printf("Generar_punto: %d\n", _guarda_manzanas[fil]);
+    imprime_manzanas();
 }
 
 //--------------------------------------------------
 //-------------------BLINK------------------------
 //--------------------------------------------------  
-void blink(){
-    sendSPI(fil,0);
-        if(fil==fila)
-                sendSPI(fila,columna);
-    }
+void blink()
+{
+    borrar();
+    sendSPI(fila,columna);
+    wait(0.05);
+}
 
 //--------------------------------------------------
 //-------------------REVISAR_MOV------------------------
 //--------------------------------------------------   
 void revisar_mov(uint8_t correr){
-    switch (correr){
+    //uint8_t guardar_linea=0;
+    switch (correr)
+    {
         
         case 2:
-        columna=columna<<1;
-        fila--;
-        if (columna>MINC)
-            columna=MAXC;
-        if (fila<MIN){
-            fila=MAX;
-            sendSPI(MIN,0);
-            }
-        sendSPI(fila+1,0);
+                columna=columna<<1;
+                fila--;
+                if (columna>MINC)
+                    columna=MAXC;
+                if (fila<MIN)
+                {
+                    fila=MAX;
+                    uint8_t x=_guarda_manzanas[MIN];
+                    sendSPI(MIN,0);
+                }
+                sendSPI(fila+1,0);
         break;
         
         case 4:
-        columna=columna<<1;
-        fila++;
-        if (fila>MAX){
-            fila=MIN;
-            sendSPI(MAX,0);
-            }
-        if (columna>MINC)
-            columna=MAXC;
-        sendSPI(fila-1,0);
+                columna=columna<<1;
+                fila++;
+                if (fila>MAX){
+                    fila=MIN;
+                    sendSPI(MAX,0);
+                    }
+                if (columna>MINC)
+                    columna=MAXC;
+                sendSPI(fila-1,0);
         break;
         
         case 1:
-        columna=columna>>1;
-        fila--;
-        if (columna<MAXC)
-            columna=MINC;
-        if (fila<MIN){
-            fila=MAX;
-            sendSPI(MIN,0);
-            }
-        sendSPI(fila+1,0);
-        //command.printf("\n case1 Col:%d",columna);
-        //command.printf("\n FIL:%d",fila);
+                columna=columna>>1;
+                fila--;
+                if (columna<MAXC)
+                    columna=MINC;
+                if (fila<MIN){
+                    fila=MAX;
+                    sendSPI(MIN,0);
+                    }
+                sendSPI(fila+1,0);
         break;
         
         case 3:
-        columna=columna>>1;
-        fila++;
-        if (columna<MAXC)
-            columna=MINC;
-        if (fila>MAX){
-            fila=MIN;
-            sendSPI(MAX,0);
-            }
-        sendSPI(fila-1,0);
-        //command.printf("\n case3 Col:%d",columna);
-        //command.printf("\n FIL:%d",fila);
+                columna=columna>>1;
+                fila++;
+                if (columna<MAXC)
+                    columna=MINC;
+                if (fila>MAX){
+                    fila=MIN;
+                    sendSPI(MAX,0);
+                    }
+                sendSPI(fila-1,0);
         break;
         
         case 28:
-        columna=columna<<1;
-        if (columna>MINC)
-            columna=MAXC;
+                columna=columna<<1;
+                if (columna>MINC)
+                    columna=MAXC;
         break;
         
         case 29:
-        columna=columna>>1;
-        if (columna<MAXC)
-            columna=MINC;
+                columna=columna>>1;
+                if (columna<MAXC)
+                    columna=MINC;
         break;
         
         case 30:
-        fila--;
-        if (fila<MIN){
-            fila=MAX;
-            sendSPI(MIN,0);
-            }
-        sendSPI(fila+1,0);
+                fila--;
+                if (fila<MIN){
+                    fila=MAX;
+                    sendSPI(MIN,0);
+                    }
+                sendSPI(fila+1,0);
         break;
         
         case 31:
-        fila++;
-        if (fila>MAX){
-            fila=MIN;
-            sendSPI(MAX,0);
-            }
-        sendSPI(fila-1,0);
+                fila++;
+                if (fila>MAX){
+                    fila=MIN;
+                    sendSPI(MAX,0);
+                    }
+                sendSPI(fila-1,0);
         break;  
         
         case 0:
@@ -250,7 +249,7 @@
 //-------------------------------------------------- 
 int velocidad(float _acc[3])
 {
-    int vel,x=3,y=5; //
+    int vel=0,x=2,y=4; //
     int acc[3];
         acc[0]=(int)_acc[0];
         acc[1]=(int)_acc[1];
@@ -271,43 +270,43 @@
 //--------------------------------------------------
 //-------------------BUSCADOR------------------------
 //--------------------------------------------------   
+    //command.printf("Accelerometer: \t X= %f, \t Y= %f, \t Z=%f \n", acc[0],acc[1],acc[2]);
+    //command.printf("Gyroscope: \t X= %f, \t Y= %f, \t Z=%f \n", gyro[0],gyro[1],gyro[2]);
+    //float gyro[3]; Wire.getGyro(gyro);
+    //command.printf("Accelerometer: \t X= %d, \t Y= %d, \n", acc[0],acc[1]);  
+    
 void buscador()
 {
     uint8_t correr;
     int y=0,x=0,acc[3],v;
-    //float gyro[3]; Wire.getGyro(gyro);
     float _acc[3];     
-    //command.printf("Accelerometer: \t X= %f, \t Y= %f, \t Z=%f \n", acc[0],acc[1],acc[2]);
-    //command.printf("Gyroscope: \t X= %f, \t Y= %f, \t Z=%f \n", gyro[0],gyro[1],gyro[2]);
-       if(_boton==0) 
+
+        if(_boton==1) 
+        {
+            Wire.getAccelero(_acc);
+            acc[0]=((int)_acc[0])+2;
+            acc[1]=((int)_acc[1])+2; 
+        }
+        else
         {
             x=((int)(in1.read()*-650))+13;
             y=((int)(in2.read()*-650))+13;
-            //x=-x;
-            //y=-y;
             acc[0]=x;
             acc[1]=y;
-            command.printf("Joystick: \t X= %d, \t Y= %d, \n", x,y); 
-        }
-        else
-        {
-            Wire.getAccelero(_acc);
-            acc[0]=(int)_acc[0];
-            acc[1]=(int)_acc[1];
-            command.printf("Accelerometer: \t X= %d, \t Y= %d, \n", acc[0],acc[1]);     
+            //command.printf("Joystick: \t X= %d, \t Y= %d, \n", x,y);     
         }
         
-        command.printf("Velocidad %d \n", v);
-        if(acc[0]>GIRO)         //eje x derecha
+        //command.printf("Velocidad %d \n", v);
+        if(acc[0]>GIRO)            //eje x derecha
         {
-            if(acc[1]>G_DIAG)     //eje y arriba
+            if(acc[1]>G_DIAG)      //eje y arriba
             correr=1;
             else if(acc[1]<-G_DIAG)//eje y abajo
             correr=2;
             else
             correr=30;
-            }          
-    else if(acc[0]<-GIRO)   //eje x izquierda
+        }          
+        else if(acc[0]<-GIRO)   //eje x izquierda
         {
             if(acc[1]>G_DIAG)     //eje y arriba
                     correr=3;
@@ -315,18 +314,16 @@
                     correr=4;
                     else
                     correr=31;
-                    }           
-    else if(acc[1]>GIRO)    //eje y arriba
+        }           
+        else if(acc[1]>GIRO)    //eje y arriba
                     correr=29;
-    else if(acc[1]<-GIRO)   //eje y abajo
+        else if(acc[1]<-GIRO)   //eje y abajo
                     correr=28;
-                else
-                correr=0; //
+        else
+        correr=0;
         revisar_mov(correr);        
         v=velocidad(_acc);
         wait_ms(v);
-        //wait (DEL);
-    //command.printf("\n correr:\n %d",correr);    
 }