juego de carros con obstaculos

Dependencies:   mbed

Committer:
djinn77
Date:
Wed Nov 21 21:20:59 2018 +0000
Revision:
3:97c4f33ed501
Parent:
2:4ec303de2e24
funcionando;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djinn77 0:f5b1c27566c6 1 #include "mbed.h"
djinn77 0:f5b1c27566c6 2 #include "vehiculos.h"
djinn77 0:f5b1c27566c6 3
djinn77 0:f5b1c27566c6 4 // Definicion de parametros de comunicacion
djinn77 0:f5b1c27566c6 5
djinn77 0:f5b1c27566c6 6 Serial pc(USBTX,USBRX);
djinn77 0:f5b1c27566c6 7 SPI deviceM(PB_5, PB_4, PB_3); //D4(gris), Ninguno, D3(azul)
djinn77 0:f5b1c27566c6 8 DigitalOut ssel (PA_4); //A2(morado)
djinn77 1:fe16249d087e 9 Ticker tp;
djinn77 3:97c4f33ed501 10 InterruptIn pulsador_abj(D8); // Lee el boton del jostick
djinn77 1:fe16249d087e 11
djinn77 1:fe16249d087e 12 int printjugador =1;
djinn77 0:f5b1c27566c6 13
djinn77 0:f5b1c27566c6 14 // Definiendo Botones
djinn77 1:fe16249d087e 15
djinn77 0:f5b1c27566c6 16 AnalogIn vry(A3);
djinn77 0:f5b1c27566c6 17 AnalogIn vrx(A4);
djinn77 0:f5b1c27566c6 18 DigitalIn sw(A5);
djinn77 0:f5b1c27566c6 19
djinn77 0:f5b1c27566c6 20 // Definicion de Funciones
djinn77 1:fe16249d087e 21
djinn77 1:fe16249d087e 22 void sendSPI();
djinn77 1:fe16249d087e 23 void inicializar_matriz();
djinn77 1:fe16249d087e 24 void desplazar_izq();
djinn77 1:fe16249d087e 25 void desplazar_der();
djinn77 1:fe16249d087e 26 void selec_nivel();
djinn77 1:fe16249d087e 27 void desplazar();
djinn77 1:fe16249d087e 28 void selec();
djinn77 0:f5b1c27566c6 29 void juego();
djinn77 1:fe16249d087e 30 void printstatus();
djinn77 1:fe16249d087e 31
djinn77 0:f5b1c27566c6 32
djinn77 0:f5b1c27566c6 33 // Definicion de Variables
djinn77 0:f5b1c27566c6 34
djinn77 1:fe16249d087e 35 uint16_t* nivel;
djinn77 3:97c4f33ed501 36 uint16_t* fail;
djinn77 1:fe16249d087e 37 uint16_t* jugador;
djinn77 1:fe16249d087e 38 uint16_t* camino;
djinn77 1:fe16249d087e 39 uint8_t enable_abj=1;
djinn77 1:fe16249d087e 40 uint8_t enable_der=1;
djinn77 1:fe16249d087e 41 uint8_t enable_izq=1;
djinn77 1:fe16249d087e 42 uint8_t figura;
djinn77 1:fe16249d087e 43 uint8_t pos;
djinn77 1:fe16249d087e 44 uint8_t giro;
djinn77 1:fe16249d087e 45 uint8_t posicion_fig=3;
djinn77 1:fe16249d087e 46 float velocidad = 0.4;
djinn77 0:f5b1c27566c6 47
djinn77 0:f5b1c27566c6 48
djinn77 0:f5b1c27566c6 49 void sendSPI(uint8_t d1, uint8_t d2)
djinn77 0:f5b1c27566c6 50 {
djinn77 0:f5b1c27566c6 51 deviceM.unlock();
djinn77 0:f5b1c27566c6 52 ssel=0;
djinn77 0:f5b1c27566c6 53 deviceM.write(d1);
djinn77 0:f5b1c27566c6 54 deviceM.write(d2);
djinn77 0:f5b1c27566c6 55 ssel=1;
djinn77 0:f5b1c27566c6 56 deviceM.lock();
djinn77 0:f5b1c27566c6 57 };
djinn77 0:f5b1c27566c6 58
djinn77 0:f5b1c27566c6 59
djinn77 0:f5b1c27566c6 60 void inicializar_matriz(){
djinn77 0:f5b1c27566c6 61 sendSPI(0x0c,1);
djinn77 0:f5b1c27566c6 62 sendSPI(0x0b,7);
djinn77 0:f5b1c27566c6 63 sendSPI(0x09,0); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 0:f5b1c27566c6 64 sendSPI(0x0A,0x00); //SELECCIONA LA LUMINOSIDAD DE LA MATRIZ
djinn77 0:f5b1c27566c6 65
djinn77 0:f5b1c27566c6 66 int i;
djinn77 0:f5b1c27566c6 67 for (i=0;i<2;i++){
djinn77 0:f5b1c27566c6 68 sendSPI(0x0F,1);
djinn77 0:f5b1c27566c6 69 wait (0.5);
djinn77 0:f5b1c27566c6 70 sendSPI(0x0F,0);
djinn77 0:f5b1c27566c6 71 wait (0.5);
djinn77 0:f5b1c27566c6 72 }
djinn77 0:f5b1c27566c6 73
djinn77 0:f5b1c27566c6 74 }
djinn77 0:f5b1c27566c6 75
djinn77 1:fe16249d087e 76 int main() {
djinn77 1:fe16249d087e 77
djinn77 1:fe16249d087e 78 pc.baud(38400);
djinn77 1:fe16249d087e 79 inicializar_matriz();
djinn77 1:fe16249d087e 80
djinn77 1:fe16249d087e 81 while(1){
djinn77 0:f5b1c27566c6 82
djinn77 1:fe16249d087e 83 selec();
djinn77 1:fe16249d087e 84
djinn77 1:fe16249d087e 85 }
djinn77 1:fe16249d087e 86
djinn77 1:fe16249d087e 87 }
djinn77 1:fe16249d087e 88
djinn77 1:fe16249d087e 89
djinn77 1:fe16249d087e 90
djinn77 1:fe16249d087e 91 void selec(){
djinn77 2:4ec303de2e24 92
djinn77 1:fe16249d087e 93 figura=rand()%4;
djinn77 2:4ec303de2e24 94
djinn77 1:fe16249d087e 95 switch(figura){ //Este switch escoje la figura con que trabajaar
djinn77 1:fe16249d087e 96 case 0: // carro derecha
djinn77 1:fe16249d087e 97 nivel = CR_DER;
djinn77 1:fe16249d087e 98 break;
djinn77 1:fe16249d087e 99 case 1: // carro izquierda
djinn77 1:fe16249d087e 100 nivel = CR_IZQ;
djinn77 1:fe16249d087e 101 break;
djinn77 1:fe16249d087e 102 case 2: // caja derecha
djinn77 1:fe16249d087e 103 nivel = CJ_DER;
djinn77 1:fe16249d087e 104 break;
djinn77 1:fe16249d087e 105 case 3: // caja izquierda
djinn77 1:fe16249d087e 106 nivel = CJ_IZQ;
djinn77 1:fe16249d087e 107 break;
djinn77 1:fe16249d087e 108 }
djinn77 1:fe16249d087e 109
djinn77 1:fe16249d087e 110 juego();
djinn77 1:fe16249d087e 111
djinn77 1:fe16249d087e 112 }
djinn77 1:fe16249d087e 113
djinn77 3:97c4f33ed501 114 void aum_velocidad_tx(){
djinn77 3:97c4f33ed501 115 velocidad=0.2;
djinn77 3:97c4f33ed501 116 }
djinn77 3:97c4f33ed501 117
djinn77 1:fe16249d087e 118 void juego(){
djinn77 1:fe16249d087e 119
djinn77 1:fe16249d087e 120 jugador=MICARRO;
djinn77 1:fe16249d087e 121 camino= CALLE;
djinn77 3:97c4f33ed501 122 fail=EQUIS;
djinn77 2:4ec303de2e24 123 //tp.attach(&printstatus,0.2);
djinn77 1:fe16249d087e 124 enable_abj=1;
djinn77 0:f5b1c27566c6 125 enable_der=1;
djinn77 0:f5b1c27566c6 126 enable_izq=1;
djinn77 1:fe16249d087e 127 // Declaracion de Variables de lectura del jostick
djinn77 1:fe16249d087e 128 float meas_vx;
djinn77 2:4ec303de2e24 129 int i=0;
djinn77 3:97c4f33ed501 130
djinn77 2:4ec303de2e24 131 while(enable_abj){
djinn77 2:4ec303de2e24 132
djinn77 2:4ec303de2e24 133 int j=1; // inicia el contador j en 1
djinn77 2:4ec303de2e24 134
djinn77 2:4ec303de2e24 135 while(j<=8){ //se encarga de seleccionar que posicion del vector imprimira
djinn77 2:4ec303de2e24 136
djinn77 2:4ec303de2e24 137 sendSPI(j, jugador[j-1]|(nivel[j-1]>>i)|camino[j-1]); //Imprime el resultado de aplicar OR a la memoria y al desplamamiento de imprimir
djinn77 2:4ec303de2e24 138 //wait(0.1); // Activar este wait para pruebas de desplazamiento y captura de los datos
djinn77 2:4ec303de2e24 139
djinn77 3:97c4f33ed501 140 if(i==13){ //Detiene el desplazamiento cuando los bits tocan fondo,
djinn77 2:4ec303de2e24 141 enable_abj=0;// desabilitador del ciclo while
djinn77 2:4ec303de2e24 142 }
djinn77 3:97c4f33ed501 143 if((jugador[j-1]&(nivel[j-1]>>i))!=0){
djinn77 3:97c4f33ed501 144
djinn77 3:97c4f33ed501 145 NVIC_SystemReset();
djinn77 3:97c4f33ed501 146
djinn77 3:97c4f33ed501 147 }
djinn77 2:4ec303de2e24 148 j++;
djinn77 2:4ec303de2e24 149 }
djinn77 2:4ec303de2e24 150 wait(velocidad); // espera para tomar el otro valor de lectura
djinn77 2:4ec303de2e24 151 // ----------------------Lectura del jostick-----------------------------
djinn77 2:4ec303de2e24 152
djinn77 2:4ec303de2e24 153 // Lectura de parametros del jostick
djinn77 2:4ec303de2e24 154 meas_vx = vrx.read() * 3300; // Convierte el valor de lectura de la entrada entre 0-3300 eje X
djinn77 1:fe16249d087e 155
djinn77 1:fe16249d087e 156 if (meas_vx < 1600 && enable_izq)
djinn77 0:f5b1c27566c6 157 desplazar_izq();
djinn77 1:fe16249d087e 158 else if (meas_vx > 1700 && enable_der)
djinn77 0:f5b1c27566c6 159 desplazar_der();
djinn77 2:4ec303de2e24 160 i++;
djinn77 3:97c4f33ed501 161 pulsador_abj.fall(&aum_velocidad_tx);
djinn77 1:fe16249d087e 162 }
djinn77 2:4ec303de2e24 163 }
djinn77 1:fe16249d087e 164
djinn77 1:fe16249d087e 165 void desplazar_izq(){
djinn77 1:fe16249d087e 166
djinn77 1:fe16249d087e 167 enable_der=1;
djinn77 1:fe16249d087e 168 posicion_fig--;
djinn77 1:fe16249d087e 169
djinn77 1:fe16249d087e 170
djinn77 1:fe16249d087e 171 if(posicion_fig==2)
djinn77 1:fe16249d087e 172 enable_izq=0;
djinn77 1:fe16249d087e 173
djinn77 1:fe16249d087e 174
djinn77 1:fe16249d087e 175 int izq = jugador[0];
djinn77 1:fe16249d087e 176 for(int i= 0; i<8;i++){
djinn77 1:fe16249d087e 177 jugador[i]=jugador[i+1];
djinn77 1:fe16249d087e 178 }
djinn77 1:fe16249d087e 179 jugador[7] = izq;
djinn77 1:fe16249d087e 180
djinn77 0:f5b1c27566c6 181 }
djinn77 0:f5b1c27566c6 182
djinn77 0:f5b1c27566c6 183 void desplazar_der(){
djinn77 1:fe16249d087e 184
djinn77 1:fe16249d087e 185 enable_izq=1;
djinn77 1:fe16249d087e 186 posicion_fig++;
djinn77 1:fe16249d087e 187
djinn77 1:fe16249d087e 188 if(posicion_fig==5)
djinn77 1:fe16249d087e 189 enable_der=0;
djinn77 1:fe16249d087e 190
djinn77 1:fe16249d087e 191 int der = jugador[7];
djinn77 1:fe16249d087e 192 for(int i= 7; i>=0;i--){
djinn77 1:fe16249d087e 193 jugador[i]=jugador[i-1];
djinn77 1:fe16249d087e 194 }
djinn77 1:fe16249d087e 195 jugador[0] = der;
djinn77 1:fe16249d087e 196
djinn77 0:f5b1c27566c6 197 }
djinn77 1:fe16249d087e 198
djinn77 0:f5b1c27566c6 199
djinn77 1:fe16249d087e 200 void printstatus()
djinn77 1:fe16249d087e 201 {
djinn77 1:fe16249d087e 202
djinn77 1:fe16249d087e 203 for(int j= 1; j<=8;j++)
djinn77 1:fe16249d087e 204 if (printjugador)
djinn77 1:fe16249d087e 205 sendSPI(j, nivel[j-1]|jugador[j-1]|camino[j-1]);
djinn77 1:fe16249d087e 206 else
djinn77 1:fe16249d087e 207 sendSPI(j, nivel[j-1]|camino[j-1]);
djinn77 1:fe16249d087e 208 printjugador =!printjugador;
djinn77 2:4ec303de2e24 209
djinn77 2:4ec303de2e24 210 for ( int i=1;i<13;i++){
djinn77 2:4ec303de2e24 211 for( int l=0;l<8;l++){
djinn77 2:4ec303de2e24 212 nivel[l]=nivel[l]<<i;
djinn77 2:4ec303de2e24 213
djinn77 2:4ec303de2e24 214 }
djinn77 2:4ec303de2e24 215 }
djinn77 2:4ec303de2e24 216
djinn77 1:fe16249d087e 217 }