Arduino running Game of Life?

Funny, I had thought of the same thing a few weeks back. It occurred to me that there are some challenges:

  • How to drive lots of LEDs independently... would require external shift register support circuitry, and probably data buffers to latch the current state of each LED while new bits were being shifted into place.

  • Memory consumption: each LED would require 2 bits of SRAM: you would need one array of bits for the current state of all LEDs, and another array for the next frame being calculated. Given the less than 1K of SRAM you have in Atmega8, that leaves at best 500 bits per frame. If you wanted a square array, that work work out to a grid of 22x22 LEDs, for a total of 484.

  • You would need some way of editing the original image, telling the processor to start updating, pause, etc. I guess you could start out with a serial port interface, just sending character commands to the board. Later, you would want to add buttons for start, stop, edit, move "cursor" around and edit (cursor could be a blinking LED, indicating which pixel will be toggled).

  • It would be interesting to consider tiling multiple Arduino boards together to patch together multiple 22x22 grids of LEDs. This would require interfacing the boards so that the edges of each 22x22 grid can be accessed by another Arduino board. You would have to synchronize each board to wait for others to be done calculating a frame before proceeding. This would be quite a challenge!

Another possibility might be to figure out how to use external RAM chips to allow a single Arduino board to remember (and therefore control) even more LEDs. This should be possible in theory.

Hope this helps spark some ideas!

  • Don