Codigo con interfaz gráfica. Falta juntar los dos programas. Ya accede a ambos juegos

Dependencies:   mbed

Committer:
acastiblancoc
Date:
Thu Nov 22 13:00:32 2018 +0000
Revision:
1:67d0c7d450e2
Parent:
0:aa4d235c4151
Child:
2:142a1071fcc7
OK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
acastiblancoc 0:aa4d235c4151 1 #include "mbed.h"
acastiblancoc 0:aa4d235c4151 2 #include "MPU6050.h"
acastiblancoc 0:aa4d235c4151 3 #include "figs.h"
acastiblancoc 0:aa4d235c4151 4 Ticker bajar;
acastiblancoc 0:aa4d235c4151 5 Serial command(USBTX,USBRX);
acastiblancoc 0:aa4d235c4151 6 AnalogIn joy(A0);
acastiblancoc 0:aa4d235c4151 7 AnalogIn joy1(A1);
acastiblancoc 0:aa4d235c4151 8 float vx=0;
acastiblancoc 0:aa4d235c4151 9 float vy=0;
acastiblancoc 0:aa4d235c4151 10 DigitalIn cambios(PB_8);
acastiblancoc 0:aa4d235c4151 11 int cc=0, punto=1;
acastiblancoc 0:aa4d235c4151 12 uint8_t movimiento=0;
acastiblancoc 0:aa4d235c4151 13 float VEL= 500;
acastiblancoc 0:aa4d235c4151 14 uint8_t matrix_act [11]={0,0,0,0,0,0,0,0,0,0,0};
acastiblancoc 0:aa4d235c4151 15 uint8_t matrix_temp [8]={0,0,0,0,0,0,0,0};
acastiblancoc 0:aa4d235c4151 16 uint8_t matrix_temp1[8]={0,0,0,0,0,0,0,0};
acastiblancoc 0:aa4d235c4151 17 uint8_t fila=1,cont=0,columna=1,rotacion=1,figura=0;
acastiblancoc 0:aa4d235c4151 18 SPI deviceM(PB_15, PB_14, PB_13);
acastiblancoc 0:aa4d235c4151 19 DigitalOut ssel (PB_12);
acastiblancoc 0:aa4d235c4151 20 Serial a(USBTX,USBRX);
acastiblancoc 1:67d0c7d450e2 21 //Ticker cambio;
acastiblancoc 0:aa4d235c4151 22 MPU6050 Wire(PB_9,PB_8);
acastiblancoc 0:aa4d235c4151 23 InterruptIn iz(PA_14);
acastiblancoc 0:aa4d235c4151 24 InterruptIn de(PA_13);
acastiblancoc 0:aa4d235c4151 25 #define uint8_t unsigned char
acastiblancoc 0:aa4d235c4151 26 float q[3];
acastiblancoc 0:aa4d235c4151 27 int pos;
acastiblancoc 0:aa4d235c4151 28 float vel=200;
acastiblancoc 0:aa4d235c4151 29 int b;
acastiblancoc 0:aa4d235c4151 30 uint8_t cam[3]={0b01100000,0b00011000,0b00000110};
acastiblancoc 0:aa4d235c4151 31 uint8_t Matr[9]={0,0,0,0,0,0,0,0,0};
acastiblancoc 0:aa4d235c4151 32 uint8_t entorno={0b10000001};
acastiblancoc 0:aa4d235c4151 33 uint8_t carro={0b00011000};
acastiblancoc 0:aa4d235c4151 34 uint8_t obs=0b01100000;
acastiblancoc 0:aa4d235c4151 35 void derecha();
acastiblancoc 0:aa4d235c4151 36 void izquierda();
acastiblancoc 0:aa4d235c4151 37 void colision();
acastiblancoc 0:aa4d235c4151 38 void juego();
acastiblancoc 0:aa4d235c4151 39 void accelerometro();
acastiblancoc 1:67d0c7d450e2 40 void cambio();
acastiblancoc 1:67d0c7d450e2 41 void vell();
acastiblancoc 1:67d0c7d450e2 42 void carro_juego();
acastiblancoc 0:aa4d235c4151 43 int con;
acastiblancoc 0:aa4d235c4151 44 int az;
acastiblancoc 0:aa4d235c4151 45
acastiblancoc 0:aa4d235c4151 46 void sendSPI(uint8_t d1, uint8_t d2)
acastiblancoc 0:aa4d235c4151 47 {
acastiblancoc 0:aa4d235c4151 48 deviceM.unlock();
acastiblancoc 0:aa4d235c4151 49 ssel=0;
acastiblancoc 0:aa4d235c4151 50 deviceM.write(d1);
acastiblancoc 0:aa4d235c4151 51 deviceM.write(d2);
acastiblancoc 0:aa4d235c4151 52 ssel=1;
acastiblancoc 0:aa4d235c4151 53 deviceM.lock();
acastiblancoc 0:aa4d235c4151 54 }
acastiblancoc 0:aa4d235c4151 55
acastiblancoc 0:aa4d235c4151 56 void borrar()
acastiblancoc 0:aa4d235c4151 57 {
acastiblancoc 0:aa4d235c4151 58 for(int i;i<=8;i++) {
acastiblancoc 0:aa4d235c4151 59 sendSPI(i,0);
acastiblancoc 0:aa4d235c4151 60 }
acastiblancoc 0:aa4d235c4151 61 }
acastiblancoc 1:67d0c7d450e2 62 ///////////////////////////////////////
acastiblancoc 0:aa4d235c4151 63 void inicializar(){
acastiblancoc 0:aa4d235c4151 64 a.baud(9600);
acastiblancoc 0:aa4d235c4151 65 sendSPI(0x0c,1);
acastiblancoc 0:aa4d235c4151 66 sendSPI(0x09,0);
acastiblancoc 0:aa4d235c4151 67 sendSPI(0x0A,0x01);
acastiblancoc 0:aa4d235c4151 68 sendSPI(0x0F,1);
acastiblancoc 0:aa4d235c4151 69 wait (0.5);
acastiblancoc 0:aa4d235c4151 70 sendSPI(0x0F,0);
acastiblancoc 0:aa4d235c4151 71 wait(0.5);
acastiblancoc 0:aa4d235c4151 72 sendSPI(0xB,0x7);
acastiblancoc 0:aa4d235c4151 73 borrar();
acastiblancoc 0:aa4d235c4151 74 vel=200;
acastiblancoc 0:aa4d235c4151 75 carro=0b00011000;
acastiblancoc 0:aa4d235c4151 76 }
acastiblancoc 1:67d0c7d450e2 77 //////////////////////////////////////////
acastiblancoc 0:aa4d235c4151 78 void imprimir()
acastiblancoc 0:aa4d235c4151 79 {
acastiblancoc 0:aa4d235c4151 80 int c_d; //carro, obstaculo y entorno
acastiblancoc 0:aa4d235c4151 81 int c_e; //carro y entorno
acastiblancoc 0:aa4d235c4151 82 int din;
acastiblancoc 0:aa4d235c4151 83 for(int i=1;i<=7;i++){
acastiblancoc 0:aa4d235c4151 84 sendSPI(i,entorno);
acastiblancoc 0:aa4d235c4151 85 }
acastiblancoc 0:aa4d235c4151 86 for(int j=1;j<=10;j++){
acastiblancoc 0:aa4d235c4151 87 din=(obs>>b) | entorno ;
acastiblancoc 0:aa4d235c4151 88 c_d= carro | din;
acastiblancoc 0:aa4d235c4151 89 c_e=carro | entorno;
acastiblancoc 0:aa4d235c4151 90 sendSPI(8,c_e);
acastiblancoc 0:aa4d235c4151 91 if(j<=7){
acastiblancoc 0:aa4d235c4151 92 sendSPI(j,din);
acastiblancoc 0:aa4d235c4151 93 }
acastiblancoc 0:aa4d235c4151 94
acastiblancoc 0:aa4d235c4151 95 if(j>1 && j<=8)
acastiblancoc 0:aa4d235c4151 96 sendSPI(j-1,din);
acastiblancoc 0:aa4d235c4151 97
acastiblancoc 0:aa4d235c4151 98 if(j>2 && j<=9){
acastiblancoc 0:aa4d235c4151 99 sendSPI(j-2,entorno);
acastiblancoc 0:aa4d235c4151 100 }
acastiblancoc 0:aa4d235c4151 101 if(j>=8&&j<=9){
acastiblancoc 0:aa4d235c4151 102 sendSPI(8,c_d);
acastiblancoc 0:aa4d235c4151 103 }
acastiblancoc 0:aa4d235c4151 104 if(j>10){
acastiblancoc 0:aa4d235c4151 105 sendSPI(8,c_e);
acastiblancoc 0:aa4d235c4151 106 }
acastiblancoc 0:aa4d235c4151 107
acastiblancoc 0:aa4d235c4151 108 if( (obs>>b)==carro && j==8 ){
acastiblancoc 0:aa4d235c4151 109 colision();
acastiblancoc 0:aa4d235c4151 110 }
acastiblancoc 1:67d0c7d450e2 111 accelerometro();
acastiblancoc 1:67d0c7d450e2 112 cambio();
acastiblancoc 0:aa4d235c4151 113 wait_ms(vel);
acastiblancoc 0:aa4d235c4151 114 }
acastiblancoc 0:aa4d235c4151 115 }
acastiblancoc 1:67d0c7d450e2 116 //////////////////////////////////////////
acastiblancoc 1:67d0c7d450e2 117 void carro_juego() {
acastiblancoc 0:aa4d235c4151 118 while(1){
acastiblancoc 1:67d0c7d450e2 119 juego();
acastiblancoc 0:aa4d235c4151 120 }
acastiblancoc 1:67d0c7d450e2 121 }
acastiblancoc 1:67d0c7d450e2 122 ///////////////////////////////////////////
acastiblancoc 0:aa4d235c4151 123 void juego(){
acastiblancoc 0:aa4d235c4151 124 inicializar();
acastiblancoc 1:67d0c7d450e2 125 //de.rise(&derecha);
acastiblancoc 1:67d0c7d450e2 126 //iz.rise(&izquierda);
acastiblancoc 0:aa4d235c4151 127 a.printf("inicio\n");
acastiblancoc 0:aa4d235c4151 128 while(1){
acastiblancoc 0:aa4d235c4151 129 b=2*(rand()%3);
acastiblancoc 1:67d0c7d450e2 130 a.printf("umero %d\n",az);
acastiblancoc 1:67d0c7d450e2 131 imprimir();
acastiblancoc 1:67d0c7d450e2 132 vell();
acastiblancoc 0:aa4d235c4151 133 }
acastiblancoc 0:aa4d235c4151 134 }
acastiblancoc 1:67d0c7d450e2 135 ///////////////////////////////////
acastiblancoc 0:aa4d235c4151 136 void derecha()
acastiblancoc 0:aa4d235c4151 137 {
acastiblancoc 0:aa4d235c4151 138 if(carro==0b00011000 || carro==0b01100000)
acastiblancoc 0:aa4d235c4151 139 carro=carro>>2;
acastiblancoc 0:aa4d235c4151 140 a.printf("entra der \n");
acastiblancoc 0:aa4d235c4151 141 return;
acastiblancoc 0:aa4d235c4151 142 }
acastiblancoc 1:67d0c7d450e2 143 ///////////////////////////////////
acastiblancoc 0:aa4d235c4151 144 void izquierda()
acastiblancoc 0:aa4d235c4151 145 {
acastiblancoc 0:aa4d235c4151 146 if( carro==0b00000110 || carro==0b00011000 )
acastiblancoc 0:aa4d235c4151 147 carro=carro<<2;
acastiblancoc 0:aa4d235c4151 148 a.printf("entra izq \n");
acastiblancoc 0:aa4d235c4151 149 return;
acastiblancoc 0:aa4d235c4151 150 }
acastiblancoc 1:67d0c7d450e2 151 ////////////////////////////////////
acastiblancoc 1:67d0c7d450e2 152 void cambio(){
acastiblancoc 1:67d0c7d450e2 153 switch(az){
acastiblancoc 1:67d0c7d450e2 154 case 1: carro = cam[0];break;
acastiblancoc 1:67d0c7d450e2 155 case 2: carro = cam[1];break;
acastiblancoc 1:67d0c7d450e2 156 case 3: carro = cam[2];break;
acastiblancoc 1:67d0c7d450e2 157 default: break;}
acastiblancoc 1:67d0c7d450e2 158
acastiblancoc 1:67d0c7d450e2 159 }
acastiblancoc 1:67d0c7d450e2 160 ////////////////////////////////////
acastiblancoc 0:aa4d235c4151 161 void colision ()
acastiblancoc 0:aa4d235c4151 162 {
acastiblancoc 0:aa4d235c4151 163 borrar();
acastiblancoc 0:aa4d235c4151 164 sendSPI(0x0F,0);
acastiblancoc 0:aa4d235c4151 165 sendSPI(3,0b01111110);
acastiblancoc 0:aa4d235c4151 166 sendSPI(4,0b01111110);
acastiblancoc 0:aa4d235c4151 167 sendSPI(5,0b01111110);
acastiblancoc 0:aa4d235c4151 168 sendSPI(6,0b01111110);
acastiblancoc 1:67d0c7d450e2 169 con=0;
acastiblancoc 1:67d0c7d450e2 170 vel=200;
acastiblancoc 0:aa4d235c4151 171 wait(2);
acastiblancoc 0:aa4d235c4151 172 juego();
acastiblancoc 0:aa4d235c4151 173 }
acastiblancoc 1:67d0c7d450e2 174 /////////////////////////////////////
acastiblancoc 0:aa4d235c4151 175 void accelerometro(){
acastiblancoc 0:aa4d235c4151 176 Wire.getAccelero(q);
acastiblancoc 0:aa4d235c4151 177 a.printf("accelero: \t x= %f,\t y= %f, \t z= %f \n",q[0],q[1],q[2]);
acastiblancoc 1:67d0c7d450e2 178 int valor=q[1];
acastiblancoc 1:67d0c7d450e2 179 if(valor<=(-4) && valor>=(-10)){
acastiblancoc 0:aa4d235c4151 180 az=1;}
acastiblancoc 1:67d0c7d450e2 181 if(valor<(4) && valor>=(-4)){
acastiblancoc 0:aa4d235c4151 182 az=2;}
acastiblancoc 1:67d0c7d450e2 183 if(valor<(10) && valor>=(4)){
acastiblancoc 0:aa4d235c4151 184 az=3;}
acastiblancoc 1:67d0c7d450e2 185 a.printf("az : \t %d \n",az);
acastiblancoc 0:aa4d235c4151 186 }
acastiblancoc 1:67d0c7d450e2 187 /////////////////////////////////////
acastiblancoc 1:67d0c7d450e2 188 void vell(){
acastiblancoc 1:67d0c7d450e2 189 con++;
acastiblancoc 1:67d0c7d450e2 190 if(con>2 && vel>=20)
acastiblancoc 1:67d0c7d450e2 191 {
acastiblancoc 1:67d0c7d450e2 192 vel=vel-(vel*0.2);
acastiblancoc 1:67d0c7d450e2 193 }
acastiblancoc 0:aa4d235c4151 194 }
acastiblancoc 0:aa4d235c4151 195
acastiblancoc 0:aa4d235c4151 196 /////////////////////////////////////////////////////////////////////////////////////
acastiblancoc 0:aa4d235c4151 197
acastiblancoc 1:67d0c7d450e2 198
acastiblancoc 1:67d0c7d450e2 199 void init_display()
acastiblancoc 0:aa4d235c4151 200 {
acastiblancoc 0:aa4d235c4151 201 sendSPI(0x0c,1);
acastiblancoc 0:aa4d235c4151 202 sendSPI(0x0b,7);
acastiblancoc 0:aa4d235c4151 203 sendSPI(0x09,0);
acastiblancoc 0:aa4d235c4151 204 sendSPI(0x0A,0x0E);
acastiblancoc 0:aa4d235c4151 205 int j;
acastiblancoc 0:aa4d235c4151 206 for (j=0;j<4;j++){
acastiblancoc 0:aa4d235c4151 207 sendSPI(0x0F,1);
acastiblancoc 0:aa4d235c4151 208 wait (0.2);
acastiblancoc 0:aa4d235c4151 209 sendSPI(0x0f,0);
acastiblancoc 0:aa4d235c4151 210 wait (0.2);
acastiblancoc 0:aa4d235c4151 211 }
acastiblancoc 0:aa4d235c4151 212 }
acastiblancoc 0:aa4d235c4151 213
acastiblancoc 0:aa4d235c4151 214 void copy_matrix(uint8_t a,uint8_t b,uint8_t c,uint8_t* fig,uint8_t columna)
acastiblancoc 0:aa4d235c4151 215 {
acastiblancoc 0:aa4d235c4151 216 if(((matrix_act[cont-2]& *(fig+c)>>columna-1)==0)&&((matrix_act[cont-1]& *(fig+b)>>columna-1)==0)&&((matrix_act[cont]& *(fig+a)>>columna-1)==0)){
acastiblancoc 0:aa4d235c4151 217 matrix_temp[0]= *(fig+5)>>columna-1;
acastiblancoc 0:aa4d235c4151 218 matrix_temp[1]= *(fig+a)>>columna-1;
acastiblancoc 0:aa4d235c4151 219 matrix_temp[2]= *(fig+b)>>columna-1;
acastiblancoc 0:aa4d235c4151 220 matrix_temp[3]= *(fig+c)>>columna-1;
acastiblancoc 0:aa4d235c4151 221 }
acastiblancoc 0:aa4d235c4151 222 }
acastiblancoc 0:aa4d235c4151 223
acastiblancoc 0:aa4d235c4151 224 void borraraa()
acastiblancoc 0:aa4d235c4151 225 {
acastiblancoc 0:aa4d235c4151 226 int i;
acastiblancoc 0:aa4d235c4151 227 for(i=0;i<=8;i++)
acastiblancoc 0:aa4d235c4151 228 {
acastiblancoc 0:aa4d235c4151 229 sendSPI(i,0);
acastiblancoc 0:aa4d235c4151 230 matrix_act[i]=0;
acastiblancoc 0:aa4d235c4151 231 }
acastiblancoc 0:aa4d235c4151 232 };
acastiblancoc 0:aa4d235c4151 233
acastiblancoc 1:67d0c7d450e2 234 void game_over()
acastiblancoc 1:67d0c7d450e2 235 {
acastiblancoc 1:67d0c7d450e2 236 uint8_t go [9]={0,0,0b01000010,0b00100100,0b00011000,0b00100100,0b01000010,0b00000000,0};
acastiblancoc 1:67d0c7d450e2 237 int k,n;
acastiblancoc 1:67d0c7d450e2 238 for(n=0;n<6;n++)
acastiblancoc 1:67d0c7d450e2 239 {
acastiblancoc 1:67d0c7d450e2 240 borraraa();
acastiblancoc 1:67d0c7d450e2 241 for(k=1;k<=8;k++)
acastiblancoc 1:67d0c7d450e2 242 {
acastiblancoc 1:67d0c7d450e2 243 sendSPI(k,go[k]);
acastiblancoc 1:67d0c7d450e2 244 }
acastiblancoc 1:67d0c7d450e2 245 wait(0.2);
acastiblancoc 1:67d0c7d450e2 246 borraraa();
acastiblancoc 1:67d0c7d450e2 247 wait(0.2);
acastiblancoc 1:67d0c7d450e2 248 }
acastiblancoc 1:67d0c7d450e2 249 }
acastiblancoc 1:67d0c7d450e2 250
acastiblancoc 1:67d0c7d450e2 251
acastiblancoc 0:aa4d235c4151 252 void buscar_fila(){
acastiblancoc 0:aa4d235c4151 253 for (uint8_t i=0;i<9;i++){
acastiblancoc 0:aa4d235c4151 254 if((matrix_act[i]& matrix_temp[3])==0){
acastiblancoc 0:aa4d235c4151 255 fila=i;
acastiblancoc 0:aa4d235c4151 256 }
acastiblancoc 0:aa4d235c4151 257 if(((matrix_act[i]& matrix_temp[3])!=0)&& (i!=9)){
acastiblancoc 0:aa4d235c4151 258 fila=i-1;
acastiblancoc 0:aa4d235c4151 259 command.printf("Fila pos 1: %d \n", fila);
acastiblancoc 0:aa4d235c4151 260 i=9;
acastiblancoc 0:aa4d235c4151 261 }
acastiblancoc 0:aa4d235c4151 262 if(((matrix_act[i]& matrix_temp[2])!=0)&& (i!=9)){
acastiblancoc 0:aa4d235c4151 263 fila=i;
acastiblancoc 0:aa4d235c4151 264 i=9;
acastiblancoc 0:aa4d235c4151 265 command.printf("Fila pos 2: %d \n", fila);
acastiblancoc 0:aa4d235c4151 266 }
acastiblancoc 0:aa4d235c4151 267 if(((matrix_act[i]& matrix_temp[1])!=0)&& (i!=9)){
acastiblancoc 0:aa4d235c4151 268 fila=i+1;
acastiblancoc 0:aa4d235c4151 269 i=9;
acastiblancoc 0:aa4d235c4151 270 command.printf("Fila pos 3: %d \n", fila);
acastiblancoc 0:aa4d235c4151 271 }
acastiblancoc 0:aa4d235c4151 272 }
acastiblancoc 0:aa4d235c4151 273 if(fila>8)
acastiblancoc 0:aa4d235c4151 274 fila=8;
acastiblancoc 0:aa4d235c4151 275 if(fila<=1){
acastiblancoc 0:aa4d235c4151 276 punto=1;
acastiblancoc 0:aa4d235c4151 277 VEL=500;
acastiblancoc 0:aa4d235c4151 278 wait_ms(VEL);
acastiblancoc 1:67d0c7d450e2 279 game_over();
acastiblancoc 1:67d0c7d450e2 280 borraraa();
acastiblancoc 0:aa4d235c4151 281 fila=8;
acastiblancoc 0:aa4d235c4151 282 }
acastiblancoc 0:aa4d235c4151 283 };
acastiblancoc 0:aa4d235c4151 284
acastiblancoc 0:aa4d235c4151 285 void guardar(){
acastiblancoc 0:aa4d235c4151 286 matrix_act[fila-3]=matrix_temp1[0];
acastiblancoc 0:aa4d235c4151 287 matrix_act[fila-2]=matrix_temp1[1];
acastiblancoc 0:aa4d235c4151 288 matrix_act[fila-1]=matrix_temp1[2];
acastiblancoc 0:aa4d235c4151 289 matrix_act[fila ]=matrix_temp1[3];
acastiblancoc 0:aa4d235c4151 290 };
acastiblancoc 0:aa4d235c4151 291
acastiblancoc 0:aa4d235c4151 292 void reada()
acastiblancoc 0:aa4d235c4151 293 { vx=0;
acastiblancoc 0:aa4d235c4151 294 vy=0;
acastiblancoc 0:aa4d235c4151 295 vx=joy.read();
acastiblancoc 0:aa4d235c4151 296 vy=joy1.read();
acastiblancoc 0:aa4d235c4151 297 cc=cambios.read();
acastiblancoc 0:aa4d235c4151 298 }
acastiblancoc 0:aa4d235c4151 299
acastiblancoc 0:aa4d235c4151 300 void bajaf()
acastiblancoc 0:aa4d235c4151 301 {
acastiblancoc 0:aa4d235c4151 302 movimiento=4;}
acastiblancoc 0:aa4d235c4151 303 void movimiento_fig(){
acastiblancoc 0:aa4d235c4151 304 reada();
acastiblancoc 0:aa4d235c4151 305 command.printf("vy = %f \n", vy);
acastiblancoc 0:aa4d235c4151 306 command.printf("vx = %f \n", vx);
acastiblancoc 0:aa4d235c4151 307 command.printf("cc = %f \n", cambios.read());
acastiblancoc 0:aa4d235c4151 308 if(vy<0.2)
acastiblancoc 0:aa4d235c4151 309 movimiento=1;
acastiblancoc 0:aa4d235c4151 310 if(vy>0.8)
acastiblancoc 0:aa4d235c4151 311 movimiento=4;
acastiblancoc 0:aa4d235c4151 312 if(vx<0.2)
acastiblancoc 0:aa4d235c4151 313 movimiento=3;
acastiblancoc 0:aa4d235c4151 314 if(vx>0.80)
acastiblancoc 0:aa4d235c4151 315 movimiento=2;
acastiblancoc 0:aa4d235c4151 316 command.printf("movimiento = %d \n", movimiento);
acastiblancoc 0:aa4d235c4151 317 switch (movimiento){
acastiblancoc 0:aa4d235c4151 318
acastiblancoc 0:aa4d235c4151 319 case 4:
acastiblancoc 0:aa4d235c4151 320 cont++;
acastiblancoc 0:aa4d235c4151 321 //printf("%f", joy.read());
acastiblancoc 0:aa4d235c4151 322 if(cont>8)cont=8;
acastiblancoc 0:aa4d235c4151 323 break;
acastiblancoc 0:aa4d235c4151 324
acastiblancoc 0:aa4d235c4151 325 case 1:
acastiblancoc 0:aa4d235c4151 326 if( (matrix_temp[1]==2) || (matrix_temp[1]==1)|| (matrix_temp[1]==3))
acastiblancoc 0:aa4d235c4151 327 columna--;
acastiblancoc 0:aa4d235c4151 328 rotacion++;
acastiblancoc 0:aa4d235c4151 329 if(rotacion>4)
acastiblancoc 0:aa4d235c4151 330 rotacion=1;
acastiblancoc 0:aa4d235c4151 331 break;
acastiblancoc 0:aa4d235c4151 332
acastiblancoc 0:aa4d235c4151 333 case 2:
acastiblancoc 0:aa4d235c4151 334 if((matrix_temp[2]==7 || matrix_temp[3]==7)||(matrix_temp[2]==3 && matrix_temp[3]==6)) {
acastiblancoc 0:aa4d235c4151 335 command.printf("a");
acastiblancoc 0:aa4d235c4151 336 columna=6;
acastiblancoc 0:aa4d235c4151 337 }
acastiblancoc 0:aa4d235c4151 338 else if((matrix_temp[1]==2 && matrix_temp[2]==2 && matrix_temp[3]==2)){
acastiblancoc 0:aa4d235c4151 339 command.printf("b");
acastiblancoc 0:aa4d235c4151 340 columna=8;
acastiblancoc 0:aa4d235c4151 341 }
acastiblancoc 0:aa4d235c4151 342 else if (columna<7){
acastiblancoc 0:aa4d235c4151 343 command.printf("c");
acastiblancoc 0:aa4d235c4151 344 columna++;
acastiblancoc 0:aa4d235c4151 345 }
acastiblancoc 0:aa4d235c4151 346 //printf("%f", joy1.read());
acastiblancoc 0:aa4d235c4151 347 break;
acastiblancoc 0:aa4d235c4151 348
acastiblancoc 0:aa4d235c4151 349 case 3:
acastiblancoc 0:aa4d235c4151 350 columna--;
acastiblancoc 0:aa4d235c4151 351 if(columna<1)
acastiblancoc 0:aa4d235c4151 352 columna=1;
acastiblancoc 0:aa4d235c4151 353 //printf("%f", joy.read());
acastiblancoc 0:aa4d235c4151 354 break;
acastiblancoc 0:aa4d235c4151 355
acastiblancoc 0:aa4d235c4151 356 }
acastiblancoc 0:aa4d235c4151 357 }
acastiblancoc 0:aa4d235c4151 358
acastiblancoc 0:aa4d235c4151 359
acastiblancoc 0:aa4d235c4151 360 void print_matrix(uint8_t *temp){
acastiblancoc 0:aa4d235c4151 361 matrix_temp1[0]=(matrix_temp[0]+ matrix_act[cont-3]);
acastiblancoc 0:aa4d235c4151 362 matrix_temp1[1]=(matrix_temp[1]+ matrix_act[cont-2]);
acastiblancoc 0:aa4d235c4151 363 matrix_temp1[2]=(matrix_temp[2]+ matrix_act[cont-1]);
acastiblancoc 0:aa4d235c4151 364 matrix_temp1[3]=(matrix_temp[3]+ matrix_act[cont]);
acastiblancoc 0:aa4d235c4151 365 sendSPI(cont-3,matrix_temp1[0]);
acastiblancoc 0:aa4d235c4151 366 sendSPI(cont-2,matrix_temp1[1]);
acastiblancoc 0:aa4d235c4151 367 sendSPI(cont-1,matrix_temp1[2]);
acastiblancoc 0:aa4d235c4151 368 sendSPI(cont ,matrix_temp1[3]); //pasa de i+2 a i+1
acastiblancoc 1:67d0c7d450e2 369 if(punto%4==0)
acastiblancoc 0:aa4d235c4151 370 {
acastiblancoc 0:aa4d235c4151 371 VEL=VEL/3;
acastiblancoc 0:aa4d235c4151 372 if(VEL<=50)
acastiblancoc 0:aa4d235c4151 373 VEL=50;
acastiblancoc 0:aa4d235c4151 374 }
acastiblancoc 0:aa4d235c4151 375 wait_ms(VEL);
acastiblancoc 0:aa4d235c4151 376 }
acastiblancoc 0:aa4d235c4151 377
acastiblancoc 0:aa4d235c4151 378 void crear_fig(char type_fig,char rotacion,char columna)
acastiblancoc 0:aa4d235c4151 379 {
acastiblancoc 0:aa4d235c4151 380 switch (type_fig){
acastiblancoc 0:aa4d235c4151 381 case 1: if(columna>7)
acastiblancoc 0:aa4d235c4151 382 columna=7;
acastiblancoc 0:aa4d235c4151 383 copy_matrix(5,1,1,PLANT,columna); break;
acastiblancoc 0:aa4d235c4151 384
acastiblancoc 0:aa4d235c4151 385 case 2: if(rotacion==1 || rotacion==3)
acastiblancoc 0:aa4d235c4151 386 copy_matrix(0,0,0,PLANT,columna);
acastiblancoc 0:aa4d235c4151 387 if(rotacion==2 || rotacion==4)
acastiblancoc 0:aa4d235c4151 388 copy_matrix(5,5,2,PLANT,columna);
acastiblancoc 0:aa4d235c4151 389 break;
acastiblancoc 0:aa4d235c4151 390
acastiblancoc 0:aa4d235c4151 391 case 3: if(rotacion==1)
acastiblancoc 0:aa4d235c4151 392 copy_matrix(0,0,1,PLANT,columna);
acastiblancoc 0:aa4d235c4151 393 if(rotacion==2)
acastiblancoc 0:aa4d235c4151 394 copy_matrix(5,2,0,PLANT,columna);
acastiblancoc 0:aa4d235c4151 395 if(rotacion==3)
acastiblancoc 0:aa4d235c4151 396 copy_matrix(1,3,3,PLANT,columna);
acastiblancoc 0:aa4d235c4151 397 if(rotacion==4)
acastiblancoc 0:aa4d235c4151 398 copy_matrix(5,6,2,PLANT,columna);
acastiblancoc 0:aa4d235c4151 399 break;
acastiblancoc 0:aa4d235c4151 400
acastiblancoc 0:aa4d235c4151 401 case 4: if(rotacion==1)
acastiblancoc 0:aa4d235c4151 402 copy_matrix(5,3,2,PLANT,columna);
acastiblancoc 0:aa4d235c4151 403 if(rotacion==2)
acastiblancoc 0:aa4d235c4151 404 copy_matrix(0,1,0,PLANT,columna);
acastiblancoc 0:aa4d235c4151 405 if(rotacion==3)
acastiblancoc 0:aa4d235c4151 406 copy_matrix(5,2,3,PLANT,columna);
acastiblancoc 0:aa4d235c4151 407 if(rotacion==4)
acastiblancoc 0:aa4d235c4151 408 copy_matrix(3,1,3,PLANT,columna);
acastiblancoc 0:aa4d235c4151 409 break;
acastiblancoc 0:aa4d235c4151 410
acastiblancoc 0:aa4d235c4151 411 case 5: if(rotacion==1 || rotacion==3)
acastiblancoc 0:aa4d235c4151 412 copy_matrix(5,4,1,PLANT,columna);
acastiblancoc 0:aa4d235c4151 413 if(rotacion==2 || rotacion==4)
acastiblancoc 0:aa4d235c4151 414 copy_matrix(0,1,3,PLANT,columna);
acastiblancoc 0:aa4d235c4151 415 break;
acastiblancoc 0:aa4d235c4151 416 }
acastiblancoc 0:aa4d235c4151 417 }
acastiblancoc 0:aa4d235c4151 418
acastiblancoc 0:aa4d235c4151 419 void figuras(){
acastiblancoc 0:aa4d235c4151 420 figura= rand() % 5+1;
acastiblancoc 0:aa4d235c4151 421 rotacion= rand() % 4+1;
acastiblancoc 0:aa4d235c4151 422 columna= 4;
acastiblancoc 0:aa4d235c4151 423 }
acastiblancoc 0:aa4d235c4151 424
acastiblancoc 0:aa4d235c4151 425 void elimina_linea(){
acastiblancoc 0:aa4d235c4151 426 for(uint8_t i=0;i<9;i++){
acastiblancoc 0:aa4d235c4151 427 if(matrix_act[i]==255){
acastiblancoc 0:aa4d235c4151 428 for(uint8_t a=i;a>=1;a--){
acastiblancoc 0:aa4d235c4151 429 sendSPI(a,matrix_act[a-1]);
acastiblancoc 0:aa4d235c4151 430 matrix_act[a]=matrix_act[a-1];
acastiblancoc 0:aa4d235c4151 431 }
acastiblancoc 0:aa4d235c4151 432 punto++;
acastiblancoc 0:aa4d235c4151 433 printf("%f", punto);
acastiblancoc 0:aa4d235c4151 434 }
acastiblancoc 0:aa4d235c4151 435 }
acastiblancoc 0:aa4d235c4151 436 }
acastiblancoc 0:aa4d235c4151 437
acastiblancoc 0:aa4d235c4151 438 void tetris() {
acastiblancoc 0:aa4d235c4151 439 bajar.attach(&bajaf, 0.1);
acastiblancoc 0:aa4d235c4151 440 init_display();
acastiblancoc 1:67d0c7d450e2 441 borraraa();
acastiblancoc 0:aa4d235c4151 442 while(1){
acastiblancoc 0:aa4d235c4151 443 figuras();
acastiblancoc 0:aa4d235c4151 444 buscar_fila();
acastiblancoc 0:aa4d235c4151 445 cont=0;
acastiblancoc 0:aa4d235c4151 446 elimina_linea();
acastiblancoc 0:aa4d235c4151 447 while (cont<fila){
acastiblancoc 0:aa4d235c4151 448 movimiento_fig();
acastiblancoc 0:aa4d235c4151 449 crear_fig(figura,rotacion,columna);
acastiblancoc 0:aa4d235c4151 450 buscar_fila();
acastiblancoc 0:aa4d235c4151 451 print_matrix(matrix_temp);
acastiblancoc 0:aa4d235c4151 452 }
acastiblancoc 0:aa4d235c4151 453 guardar();
acastiblancoc 0:aa4d235c4151 454 }
acastiblancoc 0:aa4d235c4151 455 }
acastiblancoc 0:aa4d235c4151 456 //////////////////////////////////////////////////////////////////////////////////////////////
acastiblancoc 0:aa4d235c4151 457
acastiblancoc 0:aa4d235c4151 458 void hacer_carita()
acastiblancoc 0:aa4d235c4151 459 {
acastiblancoc 0:aa4d235c4151 460 int k;
acastiblancoc 0:aa4d235c4151 461 uint8_t carita[8]={0b00000000, 0, 0b00100100,0b00100100,0,0, 0b01000010,0b00111100};
acastiblancoc 0:aa4d235c4151 462 for(k=1;k<=8;k++)
acastiblancoc 0:aa4d235c4151 463 {
acastiblancoc 0:aa4d235c4151 464 sendSPI(k ,carita[k]);}
acastiblancoc 0:aa4d235c4151 465 }
acastiblancoc 0:aa4d235c4151 466 void inicializar_menu(){
acastiblancoc 0:aa4d235c4151 467 sendSPI(0x0c,1);
acastiblancoc 0:aa4d235c4151 468 sendSPI(0x0b,7);
acastiblancoc 0:aa4d235c4151 469 sendSPI(0x09,0);
acastiblancoc 0:aa4d235c4151 470 sendSPI(0x0A,0x0E);
acastiblancoc 0:aa4d235c4151 471 int j=0;
acastiblancoc 0:aa4d235c4151 472 for (j=0;j<4;j++){
acastiblancoc 0:aa4d235c4151 473 hacer_carita();
acastiblancoc 0:aa4d235c4151 474 wait (0.2);
acastiblancoc 0:aa4d235c4151 475 borraraa();
acastiblancoc 0:aa4d235c4151 476 wait (0.2);
acastiblancoc 0:aa4d235c4151 477 }
acastiblancoc 0:aa4d235c4151 478 }
acastiblancoc 0:aa4d235c4151 479
acastiblancoc 0:aa4d235c4151 480 void eleccion_tetris()
acastiblancoc 0:aa4d235c4151 481 {
acastiblancoc 0:aa4d235c4151 482 int k;
acastiblancoc 0:aa4d235c4151 483 uint8_t elec[8]={0b00000000, 0,0, 0b00000000,0b11010011,0b11011010,0b00001010, 0};
acastiblancoc 0:aa4d235c4151 484 for(k=1;k<=8;k++)
acastiblancoc 0:aa4d235c4151 485 {
acastiblancoc 0:aa4d235c4151 486 sendSPI(k ,elec[k]);}
acastiblancoc 0:aa4d235c4151 487 /* reada();
acastiblancoc 0:aa4d235c4151 488 if(vx>0.6){
acastiblancoc 1:67d0c7d450e2 489 borraraaaaaa();
acastiblancoc 0:aa4d235c4151 490 carro_juego();}
acastiblancoc 0:aa4d235c4151 491 }*/
acastiblancoc 0:aa4d235c4151 492 }
acastiblancoc 0:aa4d235c4151 493
acastiblancoc 0:aa4d235c4151 494 void eleccion_carrito()
acastiblancoc 0:aa4d235c4151 495 {
acastiblancoc 0:aa4d235c4151 496 int k;
acastiblancoc 0:aa4d235c4151 497 uint8_t elec1[8]={0b00000000, 0,0,0b00111000,0b01111100,0b00101000, 0, 0b11111111};
acastiblancoc 0:aa4d235c4151 498 for(k=1;k<=8;k++)
acastiblancoc 0:aa4d235c4151 499 {
acastiblancoc 0:aa4d235c4151 500 sendSPI(k ,elec1[k]);}
acastiblancoc 0:aa4d235c4151 501 /*reada();
acastiblancoc 0:aa4d235c4151 502 if(vx>0.6){
acastiblancoc 1:67d0c7d450e2 503 borraraaaaaa();
acastiblancoc 0:aa4d235c4151 504 tetris();}*/
acastiblancoc 0:aa4d235c4151 505 }
acastiblancoc 0:aa4d235c4151 506
acastiblancoc 0:aa4d235c4151 507 int main()
acastiblancoc 0:aa4d235c4151 508 { int game=0;
acastiblancoc 0:aa4d235c4151 509 int pant=1;
acastiblancoc 0:aa4d235c4151 510 borraraa();
acastiblancoc 0:aa4d235c4151 511 inicializar_menu();
acastiblancoc 0:aa4d235c4151 512 //eleccion_tetris();
acastiblancoc 0:aa4d235c4151 513 while(1)
acastiblancoc 0:aa4d235c4151 514 {
acastiblancoc 0:aa4d235c4151 515 game=0;
acastiblancoc 0:aa4d235c4151 516 reada();
acastiblancoc 0:aa4d235c4151 517 if(vy<0.48)
acastiblancoc 0:aa4d235c4151 518 game=1;
acastiblancoc 0:aa4d235c4151 519 if(vy>0.58)
acastiblancoc 0:aa4d235c4151 520 game=2;
acastiblancoc 0:aa4d235c4151 521
acastiblancoc 0:aa4d235c4151 522 switch(game)
acastiblancoc 0:aa4d235c4151 523 {
acastiblancoc 0:aa4d235c4151 524 case 1:
acastiblancoc 0:aa4d235c4151 525 pant++;
acastiblancoc 0:aa4d235c4151 526 if(pant%2!=0)
acastiblancoc 0:aa4d235c4151 527 {borraraa();
acastiblancoc 0:aa4d235c4151 528 eleccion_tetris();
acastiblancoc 0:aa4d235c4151 529 if(vx>0.6){
acastiblancoc 0:aa4d235c4151 530 borraraa();
acastiblancoc 0:aa4d235c4151 531 carro_juego();}
acastiblancoc 0:aa4d235c4151 532 }
acastiblancoc 0:aa4d235c4151 533 if(pant%2==0)
acastiblancoc 0:aa4d235c4151 534 {borraraa();
acastiblancoc 0:aa4d235c4151 535 eleccion_carrito();
acastiblancoc 0:aa4d235c4151 536 if(vx>0.6){
acastiblancoc 0:aa4d235c4151 537 borraraa();
acastiblancoc 0:aa4d235c4151 538 tetris();}
acastiblancoc 0:aa4d235c4151 539 }
acastiblancoc 0:aa4d235c4151 540 break;
acastiblancoc 0:aa4d235c4151 541
acastiblancoc 0:aa4d235c4151 542 case 2:
acastiblancoc 0:aa4d235c4151 543 pant++;
acastiblancoc 0:aa4d235c4151 544 if(pant%2!=0)
acastiblancoc 0:aa4d235c4151 545 {borraraa();
acastiblancoc 0:aa4d235c4151 546 eleccion_tetris();
acastiblancoc 0:aa4d235c4151 547 if(vx>0.6){
acastiblancoc 0:aa4d235c4151 548 borraraa();
acastiblancoc 0:aa4d235c4151 549 carro_juego();}
acastiblancoc 0:aa4d235c4151 550 }
acastiblancoc 0:aa4d235c4151 551 if(pant%2==0)
acastiblancoc 0:aa4d235c4151 552 { borraraa();
acastiblancoc 0:aa4d235c4151 553 eleccion_carrito();
acastiblancoc 0:aa4d235c4151 554 if(vx>0.6){
acastiblancoc 0:aa4d235c4151 555 borraraa();
acastiblancoc 0:aa4d235c4151 556 tetris();}
acastiblancoc 0:aa4d235c4151 557 }
acastiblancoc 0:aa4d235c4151 558 break;
acastiblancoc 0:aa4d235c4151 559 }
acastiblancoc 0:aa4d235c4151 560 //printf(" pantalla %d \n", pant);
acastiblancoc 0:aa4d235c4151 561 wait(0.5);
acastiblancoc 0:aa4d235c4151 562 //printf("entra a %d \n", game);
acastiblancoc 0:aa4d235c4151 563 //wait(1);
acastiblancoc 0:aa4d235c4151 564 //printf(" vx %f \n", vx);
acastiblancoc 0:aa4d235c4151 565
acastiblancoc 0:aa4d235c4151 566 }
acastiblancoc 0:aa4d235c4151 567 }
acastiblancoc 0:aa4d235c4151 568
acastiblancoc 0:aa4d235c4151 569
acastiblancoc 0:aa4d235c4151 570 /*
acastiblancoc 0:aa4d235c4151 571 wait(1);
acastiblancoc 1:67d0c7d450e2 572 borraraaaa();
acastiblancoc 0:aa4d235c4151 573 eleccion_carrito();
acastiblancoc 0:aa4d235c4151 574 wait(1);*/
acastiblancoc 0:aa4d235c4151 575