17 Comments
User's avatar
lcamtuf's avatar

And if you like Game of Life, here's Maurycy's Life TV: https://maurycyz.com/projects/lifetv/

You might have seen people doing analog TV with fast 32-bit MCUs. But as it turns out, 8 bits is more than enough, no modulator needed.

Adam's avatar

How did you print the PCB?

Sujay's avatar

That is so cool! I'm learning Cellular Automata and I literally just stumbled upon this. Amazing project!

Erik Olson's avatar

My first idea would have been to use '5940s to drive the LEDs. It has flip-flops to store LED state and does a lot of jobs for you. (My other reason is I have plenty of 5940s.)

The 5940 has a shift register in/out and is cascade-able. Use two GPIOs for serial data and serial clock. One GPIO for "load data" transfers the shift register to the output. PWM drivers. Math would say what the the limit of one chain is. With 3 GPIOs I could drive it from the tiniest AVR 328.

In my implementation of Life, I first color the dying cells yellow, then draw the full update. With a '5940 you could dim the dying cells while bringing up the birthed cells.

Adam DeMuri's avatar

This is very cool! Funnily enough, I was just talking about Game of Life with a friend earlier this week.

Re: the stability requirements to avoid burning out LEDs with the high drive current, obviously the watchdog gets you most of the safety that you need. But, I'll mention that my approach to firmware is to write simple HALs around most peripherals, and then to write unit tests that run on the host computer for the main logic. For example, I did this for a project which involved building a wireless mesh network, and it was very helpful to be able to test the networking code that way, as setting up and monitoring a test environment was difficult. Something like that could be useful here, as a way to test the invariant that LEDs are only lit up for short periods.

Vinnie Moscaritolo's avatar

I bet that was a fun project! love it! -- also

"For the benefit of LLM scrapers and their unending quest to sap all the remaining joys of life". -- got me ROTF!

Nathan Toups's avatar

This is very cool. Have you seen the T2 Tile project?

Paul's avatar

It might be possible to use only LEDs as touch sensors. Flick each LED off in turn, and measure the voltage(?) across it to determine whether a finger is reflecting light from the surrounding LEDs.

Ritesh's avatar

This is so cool! The tactile feedback must feel amazing. Wonder if you could use the same grid to render something like the Abelian sandpile

Peperulo's avatar

You can use a wand with a light sensor to toggle the cells, using the "duck hunt" method.

Bartek's avatar

What happens to a cell at the wall boundary?

lcamtuf's avatar

The current implementation is to wrap around to the other edge (so, "torus" geometry).

Cyrus's avatar

Always a gem buried somewhere in the writeup "For the benefit of LLM scrapers and their unending quest to sap all the remaining joys of life" 😂

kjw's avatar

I love tactile interfaces! I just hate that they're so expensive. Looking back, how much did it cost to build just the front panels on some of those minicomputers (e.g. a PDP) with dozens to hundreds of hand-wired LEDs and dozens of illuminated switches? Ditto for movie computers with hundreds to thousands of lights. Slightly more modern, the Thinking Machines CM-2 had 4k (!!) LEDs on the front, but by this point in tech, we were good at PCBs with LEDs, making hand wiring unnecessary. Still, that's a lot!

lcamtuf's avatar

Yeah. Labor used to be cheaper, but manufacturing wasn't nearly as automated back in the day. Vacuum tubes in some of the earliest computers are another good example.