Hmmm... Doing a Game of Life with analog parts?
matseng wrote 02/12/2019 at 14:55 • 2 points[ Edit: I've made a project page for this #anaGoL - Conway's Game of Life the analog way ]
All of a sudden I feel oddly compelled to design and build a Game of Life simulation using only analog parts. The ruleset seems to be rather "summing amplifier and comparator"-friendly. Having to do the updates simultaneously as a discrete generation complicates things a bit, but It might be doable without too many extra parts.
I really have to think about this for a bit and see if it would be a viable project....
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
How about a totally mechanical fluidics system?
Are you sure? yes | no
You also have to design how the Garden of Eden state is initialised. One way would be to shift a row in one cell at a time from one corner then shift a whole row up, and repeat until all rows are loaded.,
Are you sure? yes | no
Currently I'm leaning towards a tactile switch for each board that sets the cell to "live".
Or two switches, one for "dead" and one for "live"
Or just a single switch that takes its value from *yet another* line propagated thru all boards. Then I can with a master switch choose if the PCB switches kills or "alives" the cell.
Are you sure? yes | no
oh oh oh..... I know! A LDR on each board that I shine on with a laser pointer to turn the cell on! That would be the ultimate crazy hack for this ;-)
Are you sure? yes | no
Hahaha a computer driven laser gun to initialise all the cells sequentially would look so cool in a room with a bit of smoke. 😁😁😁
Are you sure? yes | no
A 555 timer resets below a certain threshhold, and sets above a certain threshhold. Threshholds are adjustable. Adding a clock pulse would probably take one transistor and capacitor to "latch in" a new state. I suspect you would need 10 resistors, two mosfets, one 555 timer and two capacitors per cell. A clever connector arrangement would make cells plug and play.
They used to sell 20 or 25mm leds at radioshack. If you can get a bunch of those the entire circuit board would fit on the back of it and you would have very little deadspace.
I'd be happy to collaborate on this project or just help you out with some calculations. I've used 555 timers quite a lot.
Are you sure? yes | no
@tophalfofabarn To use a 555 as a window comparator is a good idea, especially if there's something else in the 555 that could be utilized - saving PCB space and the time spent populating/soldering.
But is it really possible to arbitrarily set the upper and lower thresholds on a 555? There's only access to the upper junction of the three-resistor ladder. But I guess it is possible somehow - it seems that virtually anything can be done with a 555 if used in some strange configuration :-)
A 555 is about 7 cents in 100qty and a generic LM393 dual opamp is about 3 cents, but the cost for that is not really important considering a 30x30mm pcb is 13 cents.
25mm leds would be perfect!, but I'd settle for 10mm unless I just happen to stumble over a stash of the bigger ones somewhere.
Are you sure? yes | no
The upper limit is most easily adjusted by adding a resistor from pin 5 to either power or ground. The lower threshold can be adjusted by using a bias resistor on the input. It is a bit of a strange configuration. Adding the clock system makes it an even stranger situation, as it can be done with just resistors too, no mosfets.
Even better would be an illuminated button that set or reset when pushed. The flip flop in the 555 is important here too to get discrete time steps.
If you use a 556 then there would be no need for a global clock, and they would all synchronize when connected. New parts total is one 556, sixteen resistors, two capacitors, one led, one button.
Are you sure? yes | no
Great project idea - very cool!
A few comments out of ignorance: I had a crack at something similar many years ago as part of an AI development. Discrete circuitry didn't scale well. Counterintuitively we found that forcing a temporal separation between events gave a more organic feel than a continuous chaotic flow. In the case of neuron simulation it turns out that data is actually transmitted in short bursts not as a continuous analog level so this partly explains the effect. I think something similar might work for GoL because organic systems usually have some circadian activity pattern that acts like a clock.
Another possible feature to consider is interaction with "external data sources." This provides a means of continuously changing the landscape and preventing the lock-in effect that GoL often exhibits. In other words, repetitive patterns get broken up by adding random variations to the rules. This is equivalent to environmental factors affecting the evolution of a pattern (species). In a digital simulation this could be done using random numbers or in an analog system random noise could be added.
Are you sure? yes | no
I'm not sure if the original GoL ruleset is a good match for adding random noise into the patterns - it might just turn into chaotic blinking mess. Which is cool of course, but it's not GoL.
I think having a method of forcing a random live/dead pattern and then let the simulation run for X amount of time, then reset it all with a new random pattern would be a nice feature though.
But just having the "world" logically wrap around at the edges and insert a single glider would be cool enough for me - and for that I don't need to build thousands of pixels - I can limit the number of vertical pixels to what the glider requires and then maybe 20 pixels horizontally.
If I get my own Pick&Place machine (fat chance) it would be a breeze to make a few thousand of the pcbs, the parts are cheap enough - I can get a quad comparator for like 3 cents from China.
Are you sure? yes | no
Maybe you could use analog gates and a capacitor at each cell to store the next state and then toggle all the gates in one go?
Are you sure? yes | no
Ah yes, just was I was thinking. Something like this: (testing some different variants of posting images here - all images are the same, but different types of links)
https://postimg.cc/Q9rM2Kmb
https://i.postimg.cc/sXMZZpZt/Screen-Shot-2019-02-13-at-11-15-26-AM.png
[Screen-Shot-2019-02-13-at-11-15-26-AM.png](https://postimg.cc/Q9rM2Kmb)
[url=https://postimg.cc/Q9rM2Kmb][img]https://i.postimg.cc/sXMZZpZt/Screen-Shot-2019-02-13-at-11-15-26-AM.png[/img][/url]
Are you sure? yes | no
Seems like neither of those links actually displayed anything inline here.... ;-(
Are you sure? yes | no
Also consider other ways than wire of distributing the generation update signal. Perhaps broadcast with a light flash, radio signal, nuclear EMP 😉, etc.
Another way might be to superimpose a pulse on the power lines.
Are you sure? yes | no
I wouldn't say that adding discrete time-steps would be that hard. You could either integrate a timer into each cell, which would make the whole system rather chaotic, or add a single extra line that then triggers a Flipflop on all chips simultaneously.
In any case, I would say this is fairly doable. Heck, it might even look really cool!
Are you sure? yes | no
having a global trigger line is the most reasonable thing, you need power and ground anyway, a third global connector (or even a pulse on one of the two existing ones) isn't much overhead.
Are you sure? yes | no
Right.... I forgot about the trigger/tick connection in the interconnect sketches I made. #anaGoL - Conway's Game of Life the analog way Better add it to them now before I forget. ;-)
Are you sure? yes | no
Wow, that's quite a challenge and I love it! You're basically talking about a flip-dot display where each dot has mechanical logic that measures and reacts to neighbors.
I suppose the approach would be to build one node of 9 cells and see if you can implement the logic for the center cell. If you can, then see about integrating it into to clusters of 13 which would prove it scalable to any size. Immensely complex, but perfect for 3D printing as you would want to print the design fully assembled.
Are you sure? yes | no
Oh, i'm totally confused. I was thinking all-mechanical, not all-analog.
Are you sure? yes | no
That would be awesome with a mechanical GoL, but I guess 3d-printing would be out of the question due to friction issues. Using real bearings and well oiled linear sliders and nice machined and polished parts it might actually be doable. The Babbage machine is probably of a similar complexity and it was made ages ago.
Are you sure? yes | no
You know that there are continuous cell automatons that would work with this?
Are you sure? yes | no
That's an interesting variant - but the original GoL is.... hmmm.... the *original* and as such it feels like the right thing to do.
But of course, it if turns out that the original GoL requires too many parts for each cell, then It might be a better idea to go for the alternate continuous rulesets. I'll definitely keep that in mind.
Are you sure? yes | no
I'm thinking that the continuous version may actually be harder to do, and thus interesting :-)
Are you sure? yes | no
I did a quick google on it, but the "continuous" part seems more being a continuous variable "level" in the cells I.E not just dead or alive. I had hoped for a variant where time is flowing in an analog way and not in discrete steps where the entire population needs to first be calculated and then updated as a separate step.
Are you sure? yes | no