Interlock is a non-profit organization that provides space for its members and the local community to develop and share their interests in science, technology, art, and culture.

Updating my JAMMA test rig

Many years back, I hooked up a spare JAMMA harness to an old PC power supply, a monitor and some repurposed joystick pads.  (JAMMA is a standard connector size and pinout to hook up arcade game boards into arcade cabinets.  Most of my arcade game boards are either natively Jamma (Mortal Kombat, Klax, Block-out) or I have adapters to hook them up using JAMMA.  (Dig-Dug, Pac-Man, etc)).  One board that I’ve been using with it recently is a knockoff Ms. Pac-Man board, seen in these photos.

Being that I’ve been wanting to work on arcadey projects recently at Interlock, I decided to make this thing a lot less janky.

The harness/rig I have was always kind of a hack.  The video and audio wires terminated in a small box with some knobs which were meant to attenuate the signal but never really worked right.  The power switch was on this cord that came out and was weirdly fastened to the side of the power supply.  I decided to clean this up while at Interlock for open night.

 It turns out that I happened to have the right 6 pin DIN connector for this old RGB monitor (basically a Commodore Amiga 1084 clone).   So I wired up Red, Green, Blue, and Ground directly to the correct pins on it.  JAMMA spits out composite video, but this monitor takes in Horizontal and Vertical sync.  I knew that some monitors would take in composite sync on their Vertical Sync line, so I tried that… and it worked! Huzzah.

The only video issue now is that the game boards put out video that’s slightly too hot/too high a voltage, so I should put attenuation resistors inside the din connector or something…

Even though the JAMMA interface spits out amplified audio, I decided to hook up an RCA plug on the audio lines anyway, to plug it into the line-level in on the monitor.  As long as I’m careful it will be fine.

And here it is being driven by my Yenox Ms Pac-Man board with the “Horizontal Ms Pac” rom hack.  You can see the power switch sticking out of the side of the power supply there.  It’s not the most optimal thing ever, but it’s substantially cleaner than before.  Perhaps I’ll replace that switch with a nice carling switch in the future.  I’ll need this test rig for the next task, which is fixing the audio on this board.  It sounds horrid…

from on January 30th, 2014Comments0 Comments

11 Digit, 7 Segment Display

An early test result, showing text and millseconds since power-on.

About a year ago, I bought a few 11 digit, 7 segment red LED displays from Active Surplus up on Queen Street in Toronto. (Excellent store.  If you’re into hacking stuff at all, it’s well worth the trip. Look for the monkey on Queen street to find their entrance.)

This past week, I wasn’t sure what to do at Interlock on Tuesday night, but I had recently re-found these displays, so I figured I would finally get them working.  I hit Radio Shack to get a Seeed Studio Arduino Shield ($10 with a mess of components, probably the best deal in all of Radio Shack.)

The display with a header soldered on, and the shield with its assorted parts.

I was all set to figure out how to reverse-engineer the pinout on the bottom of the display; I googled for the LED module, and found specs on those, and then on a whim, decided to check on the entire module board, a Rohm LU-3011, and found the jackpot, this post about figuring out the pinout.  It suddenly became very easy to do this project.

The two key things gleaned from that above post, which I have mirrored here, are this table of enables for each of the 11 digits:

Digit 1 2 3 4 5 6 7 8 9 10 11
Pin 1 2 3 4 6 8 10 12 14 16 18

and this image, showing the pin mappings of the segments:

Mapping of the segments to the pins on the header.

The basic way these displays work is that all of the 7 segments (plus one decimal point) are all tied together to the pins specified above.  Then the anodes for each of the displays are broken out to the pins in the table above.  So to draw a ‘7’, you would set all of the segments to LOW, except for pins 11, 19, and 7 which you set HIGH.  Then to turn on a specific digit, let’s say digit 11 (rightmost), you set the digit enable pin 18 to be an output, and set it LOW.  Set all of the other digit enables to be inputs (tri-state, not low or high), and only position 11 will show a “7”.  You repeat this for all of the 11 digits in the display, and you can display 11 full digits from just those 19 pins.

In my code (available below) I start at digit 1, and work down to digit 11, enabling each one, in turn, showing its segments, waiting 1 millisecond, then disable that digit, move on to the next one.

I soldered a pin header on the display, and built up a shield to plug it into.

All of the digit enables wired up.  The top ones are a bit messy. Sorry about that.

I wired it up such that the digit enables and segments are wired directly to IO lines on my Arduino.  This used all of the IO lines, minus the D13 pin, which has an on-board LED.

The code that I wrote (available below) lets you do arbitrary digits per character, so that i can do (primitive) alphanumerics, or do animation patterns, etc.  I also store the decimal point as a separate character going in to the display code, so “3.141” is five ascii characters going in, but a flag is set on the ‘3’ position saying that this digit should also display its decimal point, so it only consumes four digits in the display.

just testing out all of the segments and digits

For now, it displays a nice clock and some animations on my desk, but I plan on changing it around a little in the near future.  I want to use the D13 line as one of the segment enables (probably decimal point) and move the segment enables off of the Serial Receive line.  That way i will be able to control it via serial to display patterns, animations or text content.  Since the hardware serial port is hardwired to 0 and 1, and I will be using the TX line for the LED displays, I’ll have to instead use the Software Serial, with only its Receive line mapped to an IO pin, and its Transmit line mapped to junk. I’ve done this before and it works well.

The code for this project is available in my Geodesic Sphere github repository.

This post is also available on my personal project blog thing.

from on May 17th, 2013Comments0 Comments

Anamatronic Avian: Skeleton Experiments

I’m about to start making the skeleton for my animatronic Tiki-Room Macaw.  Rather than futzing with drawing up detailed plans in some cad program, Iv’e decided to instead get the basic shape made, and then just build one out of foam core.  My thought was that once I have the shape worked out, I’ll disassemble it and come up with plans for 3d printable parts that can be attached together, and eventually some vacuum formed parts as well for the head and beak, which need to be lightweight… although I’m starting to think that they could all be 3D printed, with a skin stretched over them for feathers and fur, after seeing the posts on Hack-A-Day about using acetone vapor to smooth out parts… anyway..

One of the things I was unsure of was the control linkages, and how the articulation points can be made.  It needs to have a few points of articulation to match the birds in the Enchanted Tiki Room:

  • Perch rotation – 270 degrees, spins the bird around (not shown)
  • Lean – +20, -20 degrees, to lean forward and backward at the point where the legs connect
  • Head yaw – +45, -45 degrees back and forth
  • Head tilt – +15, -15 degrees up and down
  • Beak – 30 degrees, could be all open or all closed (shown in the diagram as 15 degrees)

I was thinking that after I constructed the foam version, I could figure things out from there, but after seeing this post on Hack-A-Day with a “HOG Drive”, I realized I could leverage off of this design for the head linkages.

I chatted with Skip at Interlock, and by the end of this last Tuesday evening, I had two 3-D printed versions of this, using ABS, rather than the PLA material I am more familiar with. (Here’s the Thingiverse link for the design.) Since I wasn’t going to be mounting a motor, we (and by “we” I mean “he”) replaced the motor space with a flat plate with a mounting screw hole.  He also replaced the back control arm with just a peg, since the bridge-like shape wouldn’t hold up properly on his printer.


The first print (on the left) has a failed control peg on the center disk.  It was adding material onto printed material that didn’t cool yet, so it just kinda globbed up.  This was improved by Skip by adding a second post, seen in the second version on the right.  He also added some material around the screw holes in the frame, to improve durability.

After printing and having this in my hand, I’m realizing that it won’t quite work for me, although it does give me an excellent starting point.  The center disk is too small to mount the head on.  It’s only about 1 1/2 inches in diameter. I think I’d want something about 2-3″ in diameter, with plenty of mounting points and space for securing the head ,as well as space for wiring for the beak servo (or linear motor, or solenoid, or whatever).  It really showed me the design considerations for actually constructing something, not to mention it really emphasized that whatever design I can think of, I can print… which is pretty futuristically awesome.

But the important thing is that I know have ideas to build on for the final version.  I’ll still be constructing a foam core model, and I’ll be using this above design as a kick-off point.

(This post is cross-posted to my personal project blog as well.)

from on March 6th, 2013Comments0 Comments