Close
0%
0%

Interactive Core Memory Shield Using LED Matrix

What happens if you mix core memory and LEDs?

Similar projects worth following
This project started as an exploration of "what if..." and that lead to the creation this proof-of-concept when I bought one of Jussi Kilpelainen's 32-bit Core Memory Shields for an Arduino. I found a NeoPixel Featherwing was a pretty close fit with the 4x8 core array, and 3D printed a "light guide" to backlight the cores and show the state of each core.

Check out the latest log entry to see an updated demo showing how I am interacting directly with the screen RAM in real-time with a magnet.

An unexpected outcome of sharing this proof-of-concept was the wide-eyed responses from people I shared this with. It seems to resonate with many in the maker and hacker communities, so I've decided to take the concept to the next level by entering it in the Hackaday Prize 2019.
As such, I've marked this project page as completed, and started a new project page for it. See details section for a link.

This project has moved to the next phase and is posted here.

Several years ago I visited the Computer History Museum in Mountain View, CA. It was a pilgrimage of sorts. I HIGHLY recommend it. There is something there for everyone, at every age. 

One of the things I left with was an insatiable urge to experiment with core memory. A couple years later I discovered Jussi Kilpelainen created and is still selling a 32 bit core memory shield for an Arduino on Tindie. PERFECT! I quickly ordered and built one. It works perfectly as I expected!

After interacting with the shield through the serial terminal, and poking at the cores with a magnet, I decided I wanted to take it to the next level and make it interactive so I could SEE the bits flipping in real-time. Since I haven't yet developed the sixth sense required to see the magnetic field state, my first step involved connecting the Arduino under the Core Memory Shield to an 8x8 LED Matrix on a Rainbowduino Driver Platform using a simple serial protocol to update the LEDs. 

After I found the proof of concept worked well, I was inspired to take it even further and have an LED illuminate the individual core as a reflection of its state in realtime. To make that happen I adapted an Adafruit Featherwing 4x8 LED Matrix to the bottom side of the cores with a simple plastic adapter, 3D printed of course.

The project works very well now and matches up with my initial vision. The LEDs are being updated every 25 ms which is plenty responsive enough to prove a live feel as you draw and flip individual cores/bits. I placed a layer of transparency plastic over the cores so the stylus wouldn't catch and damage the fragile cores and wiring. The stylus is a small screwdriver with a magnet attached on the side so the field can be focused down to the tip. It's effective.

When the shield is powered up or reset, the Arduino automatically executes a command that sets all the cores to their "1" state. This gives you a clean slate when you power up the shield, or press the Arduino's reset button. The LEDs illuminate when the core is cleared to "0." So the LEDs are actually showing the inverted state of the bits. I found that the magnet effectively clears the bit because it is interfering with the frequent "reads" of the core, which are actually writes. If you dig into core memory you'll learn that reading cores is destructive and is followed by a write if the core was sensed as "set." The net effect of my inverted display scheme is that you are drawing and the LEDs illuminate in response to the presence of the stylus. With the small stylus tip focusing the magnetic field of the permanent magnet, I can easily flip a single bit. Turning the stylus to the side allows the magnet to affect a wider area, and has the effect of turning the stylus into a brush so that it can draw across multiple cores.

Next step: an active stylus so I can selectively clear and set cores!  

4x8 LED GRID TO CORE ADAPTER REV 2.stl

Adapts a NeoPixel Featherwing 4x48 RGB LED array to backlight the 4x8 cores in Jussi's Core Memory Shield for Arduino.

Standard Tesselated Geometry - 2.16 MB - 06/20/2019 at 00:57

Download

  • Showing the core memory as screen RAM

    Andy Geppert05/22/2019 at 03:57 0 comments

    In this update I'm doing a better job of showing the interaction with the cores. The text that is scrolling across the LED array is first being written directly to the cores before being read from the cores to update the individual LED states. The logic of the program is not writing directly to the LEDs - instead it is writing to the cores and using them as screen RAM. You can see the affect a magnet has on the cores as it wipes out the data that is scrolled to the left. The scrolling effect is done by reading the state of the cores, shifting the data left by a single row of cores, and then updating the LEDs from that fresh data in the cores. The video shows the effect.

  • Trying to clear bits with a large coil

    Andy Geppert04/26/2019 at 02:31 0 comments

    I took apart a relay to use the coil and see if I could focus the flux through a small screw head to clear the bits. It didn't work, although it did set bits, so I know it had a fairly powerful field strength.

    At this point I'm going to abandon the quest for clearing bits with an active stylus. I have a plan to "solve this problem with firmware." It has the benefit of eliminating the need for a potentially cumbersome active stylus, and it will help add some "color" to this project. And I'll still be achieving the [virtual] end goal I had in mind via a different path than I originally set out on.

  • Making a game of snake

    Andy Geppert04/22/2019 at 23:22 0 comments

    I wasn't able to work on the hardware aspects of the project in the past few weeks, but I was able to work on the software. This lead to me uncovering more ways to interact with the cores. Check out the video demo here:

    I'm going to take another run at the active stylus concept to see if I can influence the sense wire with more zest. I took apart an old relay, and that coil should do the trick. After that I won't pursue the active stylus any more because I have a better software solution in mind to get the same effect. It will maintain the benefit of a passive stylus, but still get me the full drawing capability that I was going after.

  • First successful setting of bits with external electromagnet

    Andy Geppert04/11/2019 at 03:23 0 comments

    April 10 Update: Experimenting has continued and I finally have some interaction with the cores. But it's not controllable in a usable way yet. I have more to sort out to figure out what is going on. I think I may need a more powerful magnetic field. Here's a video of the "interaction."

View all 4 project logs

Enjoy this project?

Share

Discussions

Andy Geppert wrote 02/23/2019 at 15:48 point

Maybe if the spacing and focus of the stylus magnetic flux is tight enough. But I like to see the cores themselves in this case. Nice avatar. I have not seen the + /_\ before - that's funny.

  Are you sure? yes | no

Martin wrote 02/21/2019 at 11:23 point

You could/should make the wiping at power up somehow optional. Core memory is nonvolatile and in my opinion the project should demonstrate this.

  Are you sure? yes | no

Dan Maloney wrote 02/19/2019 at 16:34 point

This is pretty cool! I wonder if the cores could go behind the LEDs and still be written to by the magnet?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates