EDIT... Finished:
I've got the control panel (thanks Virtvic) cut, and overlay (thanks Muddymusic) applied.
I've connected it up to a MAME (emulating a 4-slot), with MAME Hooker and Arduino powering the credits (a 2-digit, 7-segment led on some veroboard) :
I'm going to light up mini marquees too.. and have this working really well on a breadboard at the moment:
Still to do:
1/ Get the cab and strip out the DK bits + art.
2/ Add a small de-cased windows PC, probably core2duo, running groovymame.
3/ Add a memory card slot and headphone jack under the control panel.
4/ Finish drawing the rest of the art and get it printed and applied
5/ Cut a clear acrylic bezel.
6/ Look at changing the coin mach to 100 yen.
Here's the arduino code if anyone wants to have a go:
Code: Select all
// Dual seven-segment LED Display
// Common Anode digit 1 pin 14
// Common Anode digit 2 pin 13
// F G A B C1 C2 M H I
// | | | | | | | | | -> pins and segments they control
// --------- ---------
// | A | | H |
// F| |B M| |I
// |---G---| |---N---|
// E| |C L| |J
// | D | | K |
// --------- ---------
// | | | | | | | | | -> pins and segments they control
// E D C D1 L K N J D2
// Segments that make each number when lit:
// 0 => -FEDCBA
// 1 => ----BC-
// 2 => G-ED-BA
// 3 => G--DCBA
// 4 => GF--CB-
// 5 => GF-DC-A
// 6 => GFEDC-A
// 7 => ----CBA
// 8 => GFEDCBA
// 9 => GF-DCBA
// Arduino digital pins used to light up
// corresponding segments on the LED display
#define A 2
#define B 6
#define C 5
#define D 4
#define E 3
#define F_SEG A5
#define G A4
#define H 13
#define I 11
#define J 10
#define K 8
#define L 7
#define M 12
#define N 9
#define W A0
#define X A1
#define Y A2
#define Z A3
// Pins in sequence
const int segs1[7] = { A, B, C, D, E, F_SEG, G };
const int segs2[7] = { H, I, J, K, L, M, N };
const int lamps[4] = { W, X, Y, Z };
// Segments that make each number
const byte numbers[10] = { 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000 };
const byte marquees[4] = { 0b1110, 0b1101, 0b1011, 0b0111 };
const char startOfNumberDelimiter = '<';
const char endOfUnitsDelimiter = 'U';
const char endOfTensDelimiter = 'T';
const char endOfMarqDelimiter = 'M';
void setup ()
{
for (int i = 0; i < 7; i++) {
digitalWrite(segs1[i], 1);
digitalWrite(segs2[i], 1);
}
for (int i = 0; i < 4; i++) {
digitalWrite(lamps[i], 1);
}
Serial.begin (9600);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F_SEG, OUTPUT);
pinMode(G, OUTPUT);
pinMode(H, OUTPUT);
pinMode(I, OUTPUT);
pinMode(J, OUTPUT);
pinMode(K, OUTPUT);
pinMode(L, OUTPUT);
pinMode(M, OUTPUT);
pinMode(N, OUTPUT);
pinMode(W, OUTPUT);
pinMode(X, OUTPUT);
pinMode(Y, OUTPUT);
pinMode(Z, OUTPUT);
}
void processNumber (const int n, const int location)
{
int digit;
switch(n) {
case 6: digit=1; break;
case 91: digit=2; break;
case 79: digit=3; break;
case 102: digit=4; break;
case 109: digit=5; break;
case 125: digit=6; break;
case 7: digit=7; break;
case 127: digit=8; break;
case 111: digit=9; break;
default: digit=0; break;
}
if (location==2){
for (int i = 0; i < 7; i++) {
int bit = bitRead(numbers[digit], i);
digitalWrite(segs2[i], bit);
}
} else if (location==1) {
if (digit==0){
for (int i = 0; i < 7; i++) {
int bit = bitRead(numbers[digit], i);
digitalWrite(segs1[i], 1);
}
} else {
for (int i = 0; i < 7; i++) {
int bit = bitRead(numbers[digit], i);
digitalWrite(segs1[i], bit);
}
}
} else {
for (int i = 0; i < 4; i++) {
int bit = bitRead(marquees[digit-1], i);
digitalWrite(lamps[i], bit);
}
}
} // end of processNumber
void processInput ()
{
static int receivedNumber = 0;
byte c = Serial.read ();
switch (c)
{
case endOfUnitsDelimiter:
processNumber (receivedNumber, 2);
break;
case endOfTensDelimiter:
processNumber (receivedNumber, 1);
break;
case endOfMarqDelimiter:
processNumber (receivedNumber, 3);
break;
case startOfNumberDelimiter:
receivedNumber = 0;
break;
case '0' ... '9':
receivedNumber *= 10;
receivedNumber += c - '0';
break;
}
}
void loop ()
{
while (Serial.available ())
processInput ();
}



























