Arduino Mega does early Bally/Stern pinball

Just finished getting this working yesterday. This shield interfaces an Arduino Mega to a fairly large class of early solid state Bally and Stern
machines that share a common MPU architecture and cabling to the switch matrices, solenoids, feature lamps, and score displays. In these machines the score displays and feature lamps are time multiplexed by an interrupt service routine. A separate ISR queries and debounces the switches and turns off momentary solenoids that should not remain activate too long. I've got that all working in a library and have added some additional support like edge event detection on the playfield switches. Some of the pinballs in this class have sound cards, but it wasn't feasible to interface the Mega to those sound cards because they are designed to tap directly off a 6800 processor bus. So, I included the capability to play sound effects off SD card files based on a design by Chan, along with an audio amplifier. Why did I do all this when you can buy replacement MPU boards for these pinball machines? I intend to teach an embedded systems class where the students can write code to control a pinball machine as part of the course. I could have them write 6800 code for the original Bally/Stern MPUs, but it is impossible to find an In-Circuit Emulator for the 6800 anymore, so I decided to create an shield for the Arduino instead. This could also be used by pinball hobbyists (like myself) to customize the behavior of a pinball machine. It's been a fun project and I've learned a lot about both Arduino and Bally pinball architecture in the process. Pictures attached. The picture with score displays on is showing a test that cycles through the 2 x 8 cabinet switch matrix, which is separate from the playfield switch matrix. The player 1 and player 2 displays are cycling thru the switch states in row 1 and 2 of the matrix, respectively. This was actually my first PCB layout, for which I used Express. The Express tools aren't the most capable of the free or inexpensive tools out there, but the board production is inexpensive and the learning curve on the tools is negligeable. Very intuitive.

ArdToBallyStern (Small).jpg

InMachine (Small).JPG

Test4Cab Switch (Small).JPG

Wauw great work.
I think a lot of pinball freaks would love this!

I also am trying to controll a Bally pin with Arduino.

Thanks benboogaard. Students will be using this to reprogram a Bally Mata Hari that I recently restored in my CSCD 496 Embedded Systems class at Eastern Washington University this Spring (April-Jun 2013).

By request I have now posted the source code for the Software Developers Kit at my website (under the Software link):