Mateo Morales / Mbed 2 deprecated Tetris_2

Dependencies:   mbed

Info Tetris

Introducción Esta primer entrega del proyecto consiste en mostrar en funcionamiento la matriz de 8x8, de acuerdo a los parámetros solicitados en clase, los cuales son envió de figura seguido de el angulo y la posición por medio de comunicación USART teniendo como componentes una matriz de 8 x 8 con un driver max7219 y una stm32 núcleo

Objetivos - Comprender y aplicar la comunicación USART a un sistema. - Reforzar los conocimientos de manejo de datos (Binarios, Hexa, Decimal) -dar explicación de cómo se ha realizado el funcionamiento hasta este punto del proyecto. Conexión Para realizar una conexión bien elaborada sigue estos pasos: 1. ingresa a tu cuenta de mbed Configúrala de acuerdo a tu tarjeta de desarrollo: En la esquina superior derecha encontraras una sección en la cual puedes hacer la selección de tu tarjeta de desarrollo da clic encima (en este caso dice núcleo f44RE damos clic ahí para cambiar a la tarjeta que tenemos sobre la imagen, como se muestra a continuación:

/media/uploads/Mateom0104/1.png

Esto desplegara una nueva ventana llamada select a plataform, dar un clic en add board:

/media/uploads/Mateom0104/2.png

se desplegara una nueva ventana llamada boards allí debes buscar tu tarjeta de desarrollo, una vez encontrada damos doble clic encima

/media/uploads/Mateom0104/3.png

en la parte derecha de tu ordenador encontraras una sección que dice Add your mbed compiler damos clic en esta opción y luego abres tu compilador y la board que seleccionaste ya estará configurada en tu cuenta.

/media/uploads/Mateom0104/4.png

2. Buscar el datasheet o información de tu tarjeta de desarrollo, en este caso se usó una stmf303k8. aquí puedes encontrar información de la ubicación de los pines GPIO de tu tarjeta de desarrollo, características, etc. Si vuelves a la venta de select a plataform allí puedes encontrar el datasheet de tu tarjeta dando clic en more info.

3. Buscar data datasheet del max7219. • encontraras información la cual te permitirá manipular, comprender y analizar de una forma más fácil el funcionamiento de la matriz de acuerdo a las necesidades que requieras. 4. en la esquina superior izquierda encontrara el programa allí este contara con tres subsecciones : main cpp mbed datos.h encargada de guardar los datos que envía el usuario se crea una librería para organizar el código, para acceder a esta dar clic en esta subsección. Desplegamos mbed, encontraras más subsecciones las cuales son: classes-structs-groups Desplegamos classes y buscamos el protocol SPI Dando clic en SPI se abrirá una nueva pantalla como se muestra a continuación:

/media/uploads/Mateom0104/5.png

en la primera parte nos dice como realizar la conexión, de acuerdo a la nucleo que se esta usando se designaron los siguientes pines MISO PA_7 MOSI NO SE CONECTA CLK PA_5 CS PA_4 Los definiremos de la siguiente manera ya en nuestro código Serial pc(SERIAL_TX, SERIAL_RX); definición del serial SPI deviceM(PA_7, PA_6, PA_5); DigitalOut ssel (PA_4); Nota: Estas conexiones están basadas en la stmf303k8 Estas pueden variar deacuerdo a las necesidades del usuario en : SPI deviceM(MISO, MOSI , CLK); DigitalOut ssel (CS); 5. una vez realizadas las conecciones a la nucleo lo siguiente es proceder a conectar la matriz 8x8:

/media/uploads/Mateom0104/6.1.png

Como se puede observar en la imagen cuenta con 5 pines los cuales se conectaran de la siguiente manera: VCC =5V GND=GND DIN=MISO=PA_7 CS=CS=PA_4 CLK=CLK=PA_5 6. conecta tu stm a tu computador este lo reconocerá como un nuevo dispositivo Ingreso de datos

/media/uploads/Mateom0104/tetris.png

Según la tabla adjunta se debe enviar en el orden

Tipo de figura , Angulo de figura , Posición de columna

Nota: La posición va de 0 a 7 Compilas el programa este enviara una archivo a tu sección de descargas lo debes pegar en el dispositivo y se este se cargara a la stm Solicitud de datos

inicio=pc.getc(); =3C para dar inicio al ingreso de los tres datos n = pc.getc(); = figura que quiere enviar el usuario giro = pc.getc() = angulo en la cual el usuario quiere que se desplace la figura posición = pc.getc(); =lugar de columna en el que quiere que salga la figura

fin=pc.getc(); =3E para dar fin al ingreso de datos

nota : si no se ingresan los datos en este orden el programa no funcionara Ejemplo ingreso de datos: 3c 01 02 03 3e 3c=ingreso datos 01= Figura 1 02= 180 grados 03= posición columna 3 3e=salida datos En la matriz se deberá visualizar lo siguiente:

00000000 00000000 00000000 00000000 00000000 00010000 00010000 00010000 Funcionamiento -Se determina una memoria en la la biblioteca datos.h en donde se contendrían todas las figuras y sus diferentes posiciones -Se habilita la comunicación Serial - En la función principal se determina el ingreso de los 3 datos como se vio en el ejemplo - Se procede a hacer una verificación de la posición a la cual llegara la figura, si determina que hay algo ocupando el lugar se detendrá una posición antes - Se procede a guardar un vector y y actualizarlo para que no se pierdan datos - Se envía la matriz completa y se refresca la pantalla que se muestra

Nota: El ingreso de datos tiene restricción para el dato ingresado, si se ingresa un dato que no esta entre los permitidos no se ejecutara el programa declaracion de variables globales

  1. define uint8_t unsigned char uint8_t screen[8]={0,0,0,0,0,0,0,0}; es la que muestra los datos finalmente en la matriz uint8_t screen2[8]={0,0,0,0,0,0,0,0}; se usa para guardar datos y realizar operaciones luego con dichos datos. uint8_t verifica; uint8_t mascara; int velocidad=70;

funciones del codigo

int main() { funcion principal en este punto usaremos el datasheet del max7219 pra configurar lo iguinete: sendSPI(0x0c,1); sendSPI(0x0F,1); wait (1); esperar sendSPI(0x0F,0); wait (1); esperar sendSPI(0xB,0x7); borrar(); limpiar matriz 0x0c,1= shutdown matriz 0x0F,1=se usa para verificar que toda la matriz este en funcionamiento(enciende toda la matriz) 0x0F,0= se utiliza para terminar la verificación anterior 0xB,0x7= se usa para activar la matriz de 8x8. nota: para más información revisar datasheet Void play () { Función encargada de determinar el estado de la mascara } Void analisis() { Verifica la siguiente fila para saber si se puede desplazar } Void analisis() { Verifica la siguiente fila para saber si se puede desplazar } int ubicacion() { Limita el ingreso de posicion no mayor a 7 } void escribir() { Guarda y compara los datos entrantes a la matriz y los que ya estaban } void borrar() { Borrar todos los datos de la matriz }

void enviar() { Encargado de enviar la matriz completa }

void ver() { Informe de datos "no se usa” }

void escribir() { Guarda y compara los datos entrantes a la matriz y los que ya estaba

}

void sendSPI() { Envió de datos al max }


All wikipages