Remember I want to achieve a high pixel count, at least 64x64 but ideally higher than the 128x64 I have now. Clearly 4,096 individual LEDs is impractical, so some POV/scanning technique would be needed.

Another idea I had was to use a 128x64 OLED display and put a magnifying glass above that .

The magnifying glass is a projector without the collimator so the picture will be upside down.The focalpoint is actually a plane and not a point so a ledmatrix will be projected as an image.

It works better than a straw because it collects the light instead of blocking it.The projected image brightness will be dependent on the distance since all of the light in a single led is averaged over the size of the projected dot of the led.

I have built a number of led discolight effects using this and it works even if the room is not dark.

Next idea: this display placed at a 45 degree angle, illuminated by a bright LED, perhaps a colour-cycling RGB, with a focussing lens placed above. What do you think?

I don't think reflection will work very well but you never know.I pulled apart one of the little Nokia LCD's and as suspected it does use the horrible rubberised connection to the PCB but I think it would be possible to cut out the centre of the PCB under the display matrix and shine a light through (I did not remove the reflective backing) the LCD mounted in a clear plastic/glass package.Another idea would be a LCD like this (or this) that uses a flat ribbon connector so may lift off the backing board and work with light shone through it.

I might seem like an idiot but remember it takes one to know one.Forum user generally fall into three categories (the good, the bad & the a**hole) what category do you fit in?

int changes = 0; // counts the changes in the matrix static int prevChanges = 256; // counts the changes in the matrix on prev generation static int staleCount = 0; // counts the consecutive occurrances of the same number of changes in the matrix

In case anyone is interested, I'm getting around 45 generations per second with this setup (16MHz Pro Micro, updating 128x64 OLED using hardware SPI at max available speed of 8MHz). Each life matrix generation is taking roughly 12ms and updating the OLED (every pixel) is taking around 10ms.

Recently purchased a Maple Mini clone on eBay, for very little money. This is a 32-bit ARM based micro controller running at 72MHz.

Converting the sketch for the Maple was very straightforward. The only changes were those around the Serial connection to the PC (only used for reporting the generations per second achieved) and the SPI connection to the OLED display. I did no performance tuning except to increase the SPI clock speed from 8MHz to 18MHz.

New speed record: 392 generations per second!

The increase in clock speed from 16MHz to 72 MHz (x4.5) should have boosted the generations per second from around 45 to 200. The 32-bit processor seems to be doubling the speed again versus the 8 bit in the Arduino.

int changes = 0; // counts the changes in the matrix static int prevChanges[4]; // counts the changes in the matrix on prev 4 generations static int staleCount = 0; // counts the consecutive occurrances of the same number of changes in the matrix

Just wanted to say thanks for posting the Game of Life sketch for the oled. I'm stricktly a hardware guy and it inspired me to create a super tiny version. Also an excuse to try out a few hardware ideas like a 50mil pitch ISP.