Close

Part 7: Scope Creep

A project log for Purposeless LED Display

When life gives you an empty glass candle holder, why *wouldn't* you jam a ton of LEDs in it?

jorj-bauerJorj Bauer 05/11/2016 at 20:320 Comments

I've been thinking about what to do with this thing. Sure, it works as a clock, as long as something sets the time over wireless once every few days to adjust for clock drift. And it has a number of fancy light show modes that are interesting. But that, apparently, is not enough. The purposeless display wants a purpose.

Brainstorming with a colleague, I came up with three ideas for interesting functionality.

The first two are interactive game modes where two players play head-to-head. If I'm going to write those then I need some remotes so that the players can, umm, *play*. So, parts on order, and I'll get to that eventually.

The third idea is a less interactive game mode: I'm thinking it would be interesting to have this thing play Core War.

There are just a few problems with that. How do we submit programs to it? With just an 8x24 display, how do we display the state? And with a generally expected core size of 8k (where each core "memory cell" is comprised of an opcode, some flags, and two potentially large integers - let's call it 8 bytes of data) how do we address all that in a device that only has 2k of RAM, most of which is already committed?

Hmm.

Well, the first two of those are tractable. Submission via wireless, clearly. Which suggests I could have a precompiler on my laptop generate RedCode bytecode of some sort and upload that. And the display is probably just a matter of having each pixel represent a large chunk of memory space, with some averaging of color or something-I-can-address-when-I-get-to-it. But the RAM would seem to be a show stopper.

Or WOULD it?

Step 1: brainstorm crazy idea. Check.

Step 2: make crazy idea feasible.

I've got some serial RAM DIPs sitting around somewhere. The 23LC1024 has 128KB (1024 Kilobits) of static ram. I could totally do something like

... yeah, that! - to throw it on the SPI bus of the driver, and then I just need to write some code to test that it works, spend a half hour wondering why it doesn't, and finally realize that - if you look at the photo really closely you'll see - I've put in a 23A1024 instead of the 23LC1024.

Sigh.

Bonehead maneuver accomplished. Probably destroyed that chip by putting +5v on the maximum-of-2.2v-as-specified-on-the-datasheet chip. Ah well, the price of progress! Onward...

Discussions