“This project is the collection of files necessary to make the above pictured 8x8 grid sculpture playing out Conway’s Game of Life on an ATmega 328P. This project spanned 3 separate periods: 110 hours were spent developing the original software and building a circuit sculpture for a separate 6x6 design which maxed the CPU capabilities; 20 hours were spent doing a technical analysis, refactoring, and writeup of the created data structure to scale from 6x6 to larger sizes; 130 hours over 3 weeks were then spent developing this project into new physical hardware.
The 130-hour period is captured in this github. This time was spent integrating the new 8x8 software to match new hardware, conceptualizing the full physical design from scratch, modeling the wooden case in Fusion360, designing the circuit boards in KiCad, producing CNC gcode for the PCBs and case in Fusion360, cutting the wood and copper/fr4 circuit boards on an Onefinity CNC machine, treating the wood and creating epoxy lenses, soldering the circuits, as well as testing and improving the design while in-progress. The project was created to demonstrate hardware implementation of a data structure (from concept to physical object) for a classroom grade, as this process is much more complicated than a solely-software approach. Unfortunately, the project did not count for very much credit, however the entire process was quite therapeutic and educational, and I was very pleased with the results.
The sculpture creates a random gameboard using a floating microcontroller pin, and then applies Conway’s rules to evolve which cells live or die. The floating pin polls random energy in the air to seed the random number generator. The gameboard itself represents viewing one of an infinitely repeating 8x8 grid in every direction, as the top/bottom and left/right sides are considered ‘touching’ for the evolution process. Another way to visualize this is as a grid stretched over a torus. This implementation remembers 48 board histories to check for duplicates, as a duplicate gameboard will always evolve along the same path (which traps the display into repeating itself forever). The bulk of the processor’s memory is used in saving these histories. If a duplicate gameboard is detected in history, the living cells flash out of existence in a specific way to let the observer know they ‘lived forever’, and a new random gameboard is generated. Otherwise, the game will continue to play out until all cells die out, and afterward a new board is generated. This 8x8 board has 68,719,476,736 unique starting conditions possible.
You can see the sculpture running in the video below. Unfortunately, the camera shutter speed clashes a bit with the FPS of the sculpture so the video footage doesn’t look as good as seeing it run in person. Lopsided ‘blinky’ math is used to transition cells on and off to make it easier for one’s brain to track the groups of cells dying and coming alive each evolution cycle. The video was recorded while testing that the sculpture display matched what the software was providing, with an external Arduino streaming data to the display and the laptop simultaneously.”