Since I’m using different displays than I was before, I needed to update the Arduino sketch so that it loads the correct libraries and properly initializes the display. There were only 3 lines that needed to change, but I wanted to make sure it was working before installing all the displays.
I got some long leads for the displays to account for the distance between the circuit board and the front of the control panel.
To solder them in, I put the leads into a breadboard, and then supported the display to get it close to a 90-degree angle.
I soldered one pin, and then checked the angle. If it was off a little from 90, I could heat up just that one connection and adjust accordingly. Then I soldered the rest of the pins.
To install the display, I laid it on the workbench with the pins up, and then placed the control panel over it, threading the pins into the circuit board.
Before adding any components to the control panel, I used it as a template to drill holes in the clear polycarbonate sheet. I took the same approach as I did with the plexiglass, removing the pilot bit from the hole saw.
I also put a piece of scrap wood under the polycarbonate to help prevent cracking.
Once the drilling was done, I started putting nuts in all the hexagonal holes. I found that the easiest way to get them in was to tap them in with a hammer.
Next, I added the standoffs for the large circuit board.
I made the control panel 6mm thick, because that is the length of the threaded portion of the standoffs. But when I put one of the standoffs in, it protruded a little through the other side. A small washer under each standoff fixed this problem.
Next, I installed the circuit board.
With the board installed, I can start soldering in the LCDs. I will have to remove the circuit board again to solder the wires that will attach to the relay bank, as well as the wires for the LEDs in the buttons.
I checked that all the minting holes line up with the components, and the button holes and screen holes are the right size. The recesses for the nuts are a little tight. I can’t get the nuts in just by placing them there, but pulling them through by threading the standoff in works pretty well.
I mentioned that I was using new displays with more pixels, and that I would have to remake all of the images for the labels. Here is a little illustration of why I’m recreating the images rather than just resizing the ones I have. The top image is the original 160×80, the middle image is the original scaled up and cropped to 240×135, and the bottom is the image recreated at 240×135. (Keep in mind that the actual size difference will not be as dramatic as it seems from this image, since the larger displays also have higher pixel density.)
I plan to have a nice marquee at the top of the arcade machine, but I haven’t had a lot of luck figuring out what to put on it. While looking for tips on setting up a power button, I came across a tabletop build that the builder named “Nostalgia-Tron.” I really liked that, and decided to come up with a name for my machine. I drew a blank for a long time, and one night I thought about maybe naming it after an iconic 80s movie. I started thinking about different movies, and one of them was perfect.
With a new circuit board design, I needed new mounting holes in the panel base. I decided to stop using the hardboard and have a base 3D-printed.
I have no experience with any 3D cad software so I asked around and was recommended Open SCAD. It’s perfect for what I need and really easy to learn, especially if you have any experience with writing software. I was able to use the coordinates from my circuit board design to place the holes in the panel structure. For mounting holes, I made a recessed hexagon with a hole through it so it can hold the nuts and they will be below the surface.
Here is the rendering from Open SCAD
Here is a better (imo) rendering from the fabrication factory
The tutorial on the Adafruit for the displays I am using has two code examples. The first, simpler one, displays text to the screen. The following statement is made in this part of the tutorial:
If you’re using Hardware SPI, the CLOCK and MOSI pins are ‘fixed’ and can’t be changed. But you can change to software SPI, which is a bit slower, and that lets you pick any pins you like.
Based on this statement, I designed the circuit board layout using pin connections that were the easiest to manage without worrying about crossing wires. Before committing to ordering the board, I decided to test out the new pin layout with the Arduino Uno and one display. That’s when I saw this in their code snippet, which I really wish I had seen before:
// OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique // to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and // SCLK = pin 13. This is the fastest mode of operation and is required if // using the breakout board's microSD card.
So hardware SPI is required if using the microSD card. Cool. No pin reassignment. Good thing I didn’t order that board yet!
In the original design, I was using the back of the circuit board for connecting all of the 5V nodes, and connecting the ground from the Arduino to the display. I was using the front of the board for connecting the inputs to all the Arduinos, connecting ground between all the Arduinos, and the SPI connections.
For the new layout, I moved the SPI connections for DC and SDCS to the back, and redid the 5V and ground connections on the back to accommodate that. The other four SPI connections are still on the front, but I had to shift the input traces (SW1-SW7) to accommodate connecting them to the correct pins.
With this new layout, I will also be able to move the cut lines for the board in a little, leaving better access to the microSD slots on the displays.
I actually like the new layout a good bit better than what was there before. It is quite a hassle redoing all of those connections, though! I will also need to remove some of the mounting holes, and perhaps put new ones in other locations. This is a hassle because I had already started laying out the control panel base in OpenSCAD, and I had placed mounting holes there corresponding to the mounting holes in the circuit board. So those will also have to be corrected.