mbedbidos
/
recoge_manzanas_7
Funciona con acelero-metro, falta comunicación y blink.
Diff: recoge_manzanas.cpp
- Revision:
- 5:1292da7b7c6f
- Parent:
- 4:3426b2472f99
- Child:
- 6:eadec7d43859
--- 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); }