Introduction: Arcade1Up Mod With LED Marquee and Sub-Displays
****April 2020 Update // Software support added for virtual pinball, more at http://pixelcade.org ****
An Arcade1Up arcade cabinet modded with an LED marquee and additional smaller, sub-displays that show game information like game title, year, manufacturer, genre, and rating.
Parts
Arcade1Up Mortal Kombat Cabinet Amazon or Arcade1Up Mortal Kombat at Walmart
Pixelcade LED Marquee Kit for Arcade1Up
Dell OptiPlex 9020 Small Form Factor Computer (Refurbished)
LED Buttons, Joysticks, 2 USB Encoders, & Cables
LCD Controller Board (Adds HDMI to Arcade1Up Monitor)
7 Port Powered USB Hub (a non-powered USB hub will not work)
LogiTech K400 Wireless Keyboard and Mouse
Pixelcade Software - Free
LEDBlinky Software - $25
Misc Hardware (Various Sized M2 and M3 screws)
Optional
1 1/8" Drill Bit to Drill Arcade Button Holes
DISCLAIMER: I am the creator and sell the Pixelcade LED marquee http://pixelcade.org. Some of the above product links are affiliate links which means I’ll receive a small commission at no extra cost to you.
Step 1: Assemble Arcade1Up Stock
It takes a little over an hour to assemble the Arcade1Up stock and the instructions are intuitive. You can save yourself some time if you don't install the Arcade1Up marquee but do install the small marquee bracket as shown in the pics.
Step 2: Dis-Assemble Arcade1Up Marquee and Assemble Pixelcade Marquee
Dis-assemble the current Arcade1Up marquee, assemble the Pixelcade LED Marquee, and then install.
Step 3: Add HDMI Input to Arcade1Up Monitor
Add an HDMI input to the current Arcade1Up monitor allowing you to connect your PC to the monitor.
Step 4: Sub-Displays & Control Panel Mod
Modding the Arcade1Up control which includes the sub-displays and spinner.
The architecture diagram shows how the Pixelcade software communicates with the LED marquee via the PIXEL board and sub-displays connecting via an Arduino.
Arduino Sketch (note in the sketch the additional libraries you'll need to install too)
https://github.com/alinke/PIXEL/blob/master/max721...
Required Libraries
- https://github.com/MajicDesigns/MD_MAX72XX
- https://github.com/MajicDesigns/MD_Parola
- https://github.com/greiman/SSD1306Ascii
- https://www.arduinolibraries.info/libraries/led-control
Here are the Arduino pins used:
Max7219 Single Color LED Dot Matrix
- CLK_PIN 13
- DATA_PIN 11
- CS_PIN 10
Max7219 7 Segment
- CLK 7
- CS 8
- DIN 9
Mini OLED
- SDA - A4
- SCL - A5
You can use jumper wires to connect or as I did, make a custom cable using Du Pont connectors. If you are using jumper wires, I'd recommend to use Kapton or similar tape to secure the jumpers to the Arduino headers so they don't fall out.
In this installation, we're daisy chaining two Max7219 Dot Matrix Displays and two Max7219 7Segment Displays. The Mini OLED displays are I2C devices and have the same address. This means the same output will be displayed on each display. You can however de-solder a resistor jumper and change the address and then will be able to display something different on the second OLED display.
Step 5: Speaker Panel Mods
Laser cut files for speaker panel and speaker grill ==> https://github.com/alinke/pixelcade/tree/master/Laser%20SVG%20Files/LED-Panel-Mounts/Arcade1Up%20Speaker%20Panel
I ended up laser cutting the original Arcade1Up panel for this speaker panel portion. However, this piece is not laser cutter friendly and took 7 passes to cut and had a high flame too. I'd recommend not using the original Arcade1Up panel and rather get a laser cutter friendly black piece of acrylic or wood that is 3/8" thick.
Step 6: PC On/Off Momentary Switch and Power Switch Relay
My goal was to have one master switch that turns on and off the arcade system including all components not powered by the PC (LED marquee, speaker amp, etc.). The IoT relay power switch fits the bill nicely. When a low voltage power signal is detected by the IoT relay power switch, it trips the relay turning on the 120 VAC power. Wiring up a custom USB to 5V cable does the trick. When the PC is turned on, the USB ports output 5V and trips the relay. Likewise, when the PC is turned off (via the momentary switch), USB power goes off and hence the relay cuts off 120 VAC power.
Note I made a mistake purchasing the Dell OptiPlex 9020 Mini Tower which turned out to be too tall for the Arcade1Up. And hence I had to remove it from the case and re-mount resulting in extra work. You won't need to do that if you get the Dell OptiPlex 9020 SFF (small form factor) case or a similar one.
Step 7: Final Assembly
Now time to put everything together. Once you're confident the connections and wiring is correct, use some hot glue to secure the connections to the sub-displays.
Step 8: Software Installation (LEDBlinky, Pixelcade, HyperSpin)
I used HyperSpin as my arcade front end but be warned, HyperSpin is a pain to setup and configure. Other front ends like GameEx and LaunchBox don't look quite as nice but are easier to setup.
Either way, you'll also need a third party piece of software called LEDBlinky enables the Pixelcade LED marquee and sub-displays to update while you're scrolling through games from the arcade front end. Pixelcade will also work without LEDBlinky but the marquee will just update when a game is launched as opposed to while scrolling through the arcade front end and during game launches.
Software Install Steps:
1. Install LEDBlinky software
2. Install Pixelcade LED Marquee software
LEDBlinky Setup Guide for Pixelcade ==>https://pixelcade.org/ledblinky/
3. Configure arcade front end to use LEDBlinky (LEDBlinky supports most if not all arcade front ends)
Step 9: Taking It Further With the Pixelcade API
Can you code?
Take things farther with the open source and REST based Pixelcade API and create additional use cases. Use the Queue feature for example to combine and cascade multiple GIF animation, still images, and scrolling text events.
A Pixelcade Listener called pixelweb.exe (Windows) or pixelweb.jar (for Raspberry Pi and Mac) runs in the background and listens for REST URL calls. Note these are local REST calls to localhost so an Internet connection is not required. However if your host (PC or Raspberry Pi) is reachable via the Internet, then you can make these calls remote too. You can interact with the API by making REST URL calls directly or use pixelcade.exe (Windows) or pixelcade.jar (for Raspberry Pi & Mac). If integrating from a third party application, it will be significantly faster to make the REST URL calls direct from your application vs. using the command line interface. LEDBlinky for example makes REST URL calls to the Pixelcade listener to accomplish dynamic front end scrolling marquee updates.
This REST call
http://localhost:8080/text?t=Hello%20World&c=green
will scroll the text "Hello World" in green
This REST call
http://localhost:8080/animations/stream/0rain
will stream the 0rain.gif file in the <your Pixelcade install path>/animations folder indefinitely
The API also has a queue feature enabling you to queue up several events (scrolling text, GIF animations, or still images) and each event will play after the previous one has completed.
These sequence of REST calls
http://localhost:8080/text?t=Game%20Playing%20Pacm...
http://localhost:8080/arcade/stream/mame/pacman.pn... http://localhost:8080/arcade/stream/mame/pacghost...
will scroll “Game Playing Pacman” in blue one time, then displays pacman.png for 3 seconds, and then loops the pacghost.gif animation two times, and then clears the display blank.
The full Pixelcade REST API is documented here
API Source Code https://github.com/alinke/PIXEL