TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: droky en 06 de Octubre de 2009, 02:24:48

Título: Game of Life - Juego de la vida (Conway)
Publicado por: droky en 06 de Octubre de 2009, 02:24:48
(http://radikaldesig.com/blog/life/gol1_p.jpg)

Esta vez me traigo un ejercicio de programación típico, el "juego de la vida" de John Horton Conway.
No le busqueis utilidad, porque no la tiene , es un simple juego de 0 jugadores  :mrgreen:

Citando a la wikipedia:
"El juego de la vida es el mejor ejemplo de un autómata celular; es en realidad un juego de cero jugadores, lo que quiere decir que su evolución está determinada por el estado inicial y no necesita ninguna entrada de datos posterior. El "tablero de juego" es una malla formada por cuadrados ("células") que se extiende por el infinito en todas las direcciones. Cada célula tiene 8 células vecinas, que son las que están próximas a ella, incluso en las diagonales. Las células tienen dos estados: están "vivas" o "muertas" (o "encendidas" y "apagadas"). El estado de la malla evoluciona a lo largo de unidades de tiempo discretas (se podría decir que por turnos). El estado de todas las células se tiene en cuenta para calcular el estado de las mismas al turno siguiente. Todas las células se actualizan simultáneamente.

Las transiciones dependen del número de células vecinas vivas:

* Una célula muerta con exactamente 3 células vecinas vivas "nace" (al turno siguiente estará viva).
* Una célula viva con 2 ó 3 células vecinas vivas sigue viva, en otro caso muere o permanece muerta (por "soledad" o "superpoblación"). "


(http://radikaldesig.com/blog/life/splash.gif)

Como en otros proyectos anteriores, intenté utilizar los mínimos recursos posibles y aprovecharlos al máximo. En este caso han sido:
Como no disponía de memoria suficiente en el PIC, he dividido la pantalla con una rejilla y así convertir la matriz de 84x48 pixels en una matriz de 25x17 (405 celdas) que sí me caben en la RAM del PIC.
El siguiente problema ha sido al calcular la generación siguiente, ya que necesitaba dos matrices de RAM, una para la generación de entrada y otra para la de salida. Lo he solucionado calculando la generación siguiente línea a línea y usando una pila tipo LIFO de 2 niveles sobre 2 variables de tipo vector.
Los elementos se disponen de forma manual, con uno de los sensores capacitivos y de forma pseudoaleatoria. El programa en el modo de colocación de individuos, ejecuta una interrupción del TIMER1 cada 0.406ms (así solo cuenta de 0 a 405 que son los elementos de la matriz ) y cada vez que se toca el sensor, lee el valor del timer y activa la celda correspondiente.

(http://radikaldesig.com/blog/life/gol2_p.jpg)

El otro sensor inicia la simulación.
Durante la simulación es posible pausarla y una vez pausada, podemos continuar o reiniciar.

(http://radikaldesig.com/blog/life/gol3_p.jpg)

El circuito

(http://radikaldesig.com/blog/life/sch.gif)

El circuito es muy simple, como he usado componentes de bajo consumo, está alimentado por una pila de botón tipo CR2032.
El PIC se conecta al LCD nokia y sólo es necesario un condensador de 47uF para la Vout del LCD.
Los QT100A únicamente incorporan 1 condensador de desacoplo de 100nf y una red RC que ajusta la sensibilidad del sensor.

La PCB

(http://radikaldesig.com/blog/life/pcb_p.jpg)

Ya la había posteado en el subforo de fabricación de PCBs.
A una cara y con todos los componentes en SMD. Existen 4 jumpers por la cara posterior.
En el diseño, no he tenido en cuenta que el encapsulado WSON6 de los QT100A posee un pad tipo GND en el centro y he tenido que cubrir con rotulador las pistas que pasan bajo el encapsulado para evitar cortocircuitos.
EL interruptor ON/OFF lo he aprovechado de un MP3 portable.

Simulacion con Proteus

(http://radikaldesig.com/blog/life/isis_p.jpg)

Por si queréis ver como funciona la simulación, os dejo los ficheros de ISIS para Proteus.
Necesitaréis instalar el modelo de simulación del componente "LCD 3310".
Lo podeis descargar de:
http://www.tanu-sha.narod.ru/nokia3310.html

Aquí os dejo un vídeo del funcionamiento:


Descargas
Ficheros Eagle (http://radikaldesig.com/blog/life/gol_eagle.rar)
Fotolito PCB (http://radikaldesig.com/blog/life/pcb.pdf)
Codigo HEX 12F683 (http://radikaldesig.com/blog/life/gol_code.hex)
Ficheros Proteus (http://radikaldesig.com/blog/life/nokia3310.DSN)
Fuentes (http://radikaldesig.com/blog/life/gol_code.rar)

Podeis ver el artículo en mi blog radikaldesig.com (http://radikaldesig.blogspot.com/2009/09/juego-de-la-vida-game-of-life-conway.html)

Salu2
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: Nocturno en 06 de Octubre de 2009, 02:32:09
Ya te lo dije por privado, pero no puedo evitar hacerte una reverencia en público.

(http://4.bp.blogspot.com/_TiLWZ4JzMYY/SMepWxR_oSI/AAAAAAAACPo/38KxNfshOek/s320/Reverencia.png)
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: Leon Pic en 06 de Octubre de 2009, 02:42:18
Excelente trabajo droky  :-/ :-/ :-/
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: droky en 06 de Octubre de 2009, 02:55:07
Ya te lo dije por privado, pero no puedo evitar hacerte una reverencia en público.

Sageraooo...  :oops:
Salu2
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: migsantiago en 06 de Octubre de 2009, 12:56:46
Hey Droky muy bonito el diseño.

Pero yo no diría que no tiene utilidad... infartarías a los matemáticos de mi escuela que simulan y resuelven problemas de tráfico vehicular haciendo uso de autómatas celulares y herramientas similares.  ;-)
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: AKENAFAB en 06 de Octubre de 2009, 12:58:20

 :-/ :-/ Muy bueno!

Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: cerebro en 06 de Octubre de 2009, 13:37:23
 :) esta muy bueno!! , nosotros una vez realizamos uno para pc en c++ (en 3D era una especie matrix)  :D esta bueno hacer esas cosas  :mrgreen:
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: MLO__ en 06 de Octubre de 2009, 16:54:23
Muy buen trabajo  :-/

PD/ El archivo del eagle, al intentar abrirlo, genera un error  :(

Saludos
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: Cryn en 07 de Octubre de 2009, 19:14:23
 :shock: que buenísimo que te quedó droky, felicidades por el trabajo!

una pregunta los pads táctiles, como es que funcionan?

saludos
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: droky en 08 de Octubre de 2009, 01:50:49
Muy buen trabajo  :-/

PD/ El archivo del eagle, al intentar abrirlo, genera un error  :(

Saludos

Hola,
¿Que error te da?
Está hecho con la version 5.60, quizás sea que usas una inferior... si puedes pon el código de error.
Salu2
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: droky en 08 de Octubre de 2009, 01:53:49
:shock: que buenísimo que te quedó droky, felicidades por el trabajo!

una pregunta los pads táctiles, como es que funcionan?

saludos

Hola,
GRacias.
Los pads táctiles son sensores capacitivos y están controlados por los QT100A de Quantum.
La salida de los QT100A está a cero y cambia a VDD cuando detectan una variación de la capacidad en el pad ( capacidad parásita inducida por el dedo)
La sensibilidad es ajustable con la red RC que va con cada QT100A, por si se pone un a lámina de plástico, cristal o similar sobre los pads.
En este caso está diseñado para cuando se haga contacto con ellos y el dedo.
Salu2
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: barral en 08 de Octubre de 2009, 03:30:21
Muy bueno el proyecto... Felicidades
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: Cryn en 08 de Octubre de 2009, 12:06:23
Hola,
GRacias.
Los pads táctiles son sensores capacitivos y están controlados por los QT100A de Quantum.
La salida de los QT100A está a cero y cambia a VDD cuando detectan una variación de la capacidad en el pad ( capacidad parásita inducida por el dedo)
La sensibilidad es ajustable con la red RC que va con cada QT100A, por si se pone un a lámina de plástico, cristal o similar sobre los pads.
En este caso está diseñado para cuando se haga contacto con ellos y el dedo.
Salu2

que buena info droky veré más al respecto y espero que el fabricante mande muestras :mrgreen:

parece que es de atmel, no?mmm que mala pata esos no manda para acá :(
saludos
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: MLO__ en 08 de Octubre de 2009, 12:13:23
Hola.

El error es el siguiente -yo tengo la version 5.0.0, de pronto es eso-

(http://img522.imageshack.us/img522/6268/erroreagle.png)

Saludos
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: Nocturno en 08 de Octubre de 2009, 12:14:21

que buena info droky veré más al respecto y espero que el fabricante mande muestras :mrgreen:

parece que es de atmel, no?mmm que mala pata esos no manda para acá :(
saludos

Son muy baratitos, Cryn. Yo los he comprardo en Digikey y acabo de recibirlos hoy:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=427-1135-1-ND
Título: Re: Game of Life - Juego de la vida (Conway)
Publicado por: migsantiago en 02 de Abril de 2010, 00:16:05
Un ejemplo de aplicación del Juego de la Vida en una consola Wii...


Cuando los cuadritos son verdes están siendo actualizados por el algortimo del juego de la vida, creando música.

http://wiibrew.org/wiki/Harmonium