I know that you've changed from an analog implementation to a micro controller - but I have been having a bit of a play and I've found a way to get your design into two very cheap chips. My design basically uses a latch, 4 comparators and a bunch of resistors. A quad comparator costs less than 30c on digikey and similarly does a latch.
The circuit basically uses a resistor ladder to produce a voltage n/8 volts where n is the number of neighbours that are alive (ie a logic high). Then, 3 comparators are used to generate three logic bits:
A = 3 or more neighbours alive
B = 2 or more neighbours alive
C = 3 or less neighbours alive
The final bit is the current state: S = 1 if alive or 0 if dead.
These four logic bits are then combined via another resistor network to create a voltage that is above 2Vcc/3 if the new state should be alive and less than 2Vcc/3 if the new state should be dead. A final comparator is used to turn this into a logic bit.
Stick a latch on the output of this and clock it with your AC and you're done. Pictures attached.
You can basically see that, if the current state is dead, then the pixel will only become alive if there are exactly 3 neighbours alive. If the current state is alive then the pixel will only stay alive if there are 2 or 3 neighbours alive.
[Edit] I haven't looked at exactly how accurate the resistor values need to be. Probably best to do some kind of Monte Carlo simulation if you want to make sure this will work with 5%+ error in values. But my intuition at the moment is that it wouldn't be overly sensitive to this. [/Edit]
[Edit] Also would have to make sure the input impedance of your comparators was not significant, but that just comes down to component selection, and you can always scale the resistor values down by an order of magnitude if you like [/Edit]
I thought about this problem years ago and decided that I would use short range IR optical coupling between elements, with cut corners for the diagonal ones. The clocking would be done from overhead, also IR optical. Each cell would have it's own battery power and, of course, visible light LED state indicator and a button to initialize it's state.
I never constructed this as the expense and tedium of building enough cells for interesting patterns would be no fun.
I know that you've changed from an analog implementation to a micro controller - but I have been having a bit of a play and I've found a way to get your design into two very cheap chips. My design basically uses a latch, 4 comparators and a bunch of resistors. A quad comparator costs less than 30c on digikey and similarly does a latch.
The circuit basically uses a resistor ladder to produce a voltage n/8 volts where n is the number of neighbours that are alive (ie a logic high). Then, 3 comparators are used to generate three logic bits:
A = 3 or more neighbours alive
B = 2 or more neighbours alive
C = 3 or less neighbours alive
The final bit is the current state: S = 1 if alive or 0 if dead.
These four logic bits are then combined via another resistor network to create a voltage that is above 2Vcc/3 if the new state should be alive and less than 2Vcc/3 if the new state should be dead. A final comparator is used to turn this into a logic bit.
Stick a latch on the output of this and clock it with your AC and you're done. Pictures attached.
You can basically see that, if the current state is dead, then the pixel will only become alive if there are exactly 3 neighbours alive. If the current state is alive then the pixel will only stay alive if there are 2 or 3 neighbours alive.
[Edit] I haven't looked at exactly how accurate the resistor values need to be. Probably best to do some kind of Monte Carlo simulation if you want to make sure this will work with 5%+ error in values. But my intuition at the moment is that it wouldn't be overly sensitive to this. [/Edit]
[Edit] Also would have to make sure the input impedance of your comparators was not significant, but that just comes down to component selection, and you can always scale the resistor values down by an order of magnitude if you like [/Edit]
Really neat idea, One thought though, don't you only need 4 steps of voltage, everything after could be just Vmax resulting in death?
Note that the above merely solves the state transition -- but additional hardware is necessary to sequence the states.
To do that, you could use a dual analog switch, so that the current state is passed to a capacitor, and then the capacitor state is brought to the outside world (via logic buffer). The switches alternate (with dead time to prevent the "new" state bit from surging straight ahead), thus acting as a master-slave type D flip-flop.
Or, of course, you can simply use a flip-flop. (This is, more or less, what a CMOS D-f/f does internally -- bidirectional switches are used to shuttle the internal state forward. Set and reset gates are added, obviously, to realize the full function, but those aren't needed here.)
Tim
Which is why I'm asking for suggestions on what are practical applications of multi node serial busses, but I don't want to sound like I'm not coming up with ideas so I throw I2C out there, but then I'm told it's not going to work without any further suggestion of an alternate solution or ideas, so I'm back to square one to throwing ideas on the wall with no real practical knowledge of the options available, and their pro's and cons of usage. Once I can get an idea of what is required for communication, I can come up with the pin configuration, select an MCU appropriate to I/O availability, real-estate, and cost.
<snip>
So for now, lets just say I will select whatever MCU. The current problem. Communication. What are some options that would allow multi node serial communication for 1,000+ nodes, with minimal impact to number of communication pins.
Any of Microchip's debug capable newer 8 bit PICs could also do the job, but that will cost you a lot more if you don't already have a PICkit 3 or ICD 3 and some USB <=> logic level serial interfaces to handle the PC comms.