This repository contains code, panel layouts and documentation for KSKY, a Kerbal Space Program screen and keyboard. The project is a hardware control interface and display device for KSP. It interfaces with the game using KSPSerialIO. The KSPSerialIO mod, and parts of the arduino code here, are written by zitronen.
This system has three main components:
- Game I/O and most of the input handling is done with an Arduino Mega2560, with a Mux Shield II and another custom shield terminating connections to the individual panels.
- The digital displays are driven by an Arduino Leonardo and some custom PCBs.
- A Teensy 3.2 drives a TFT display through an RA8875 controller.
A full hardware list is in
Interface elements are grouped on to a number of console panels. I've
written a blog post describing how these are fabricated, and some notes
on how panels for this project should be deisgned are in
PANELS.md contains details of the panels I've constructed for this project,
and DXF files for them are in the
Most input devices are just wired directly to an input pin, with a 10K
pull-down resistor. Potentiometers wired directly to their appropriate
analogue input pin. A full list of input pins on the Arduino and Mux
Shield is in
Most standalone LEDs so far are WS2812B addressable LEDs. They share 5V and GND with their appropriate panel, and DIN and DOUT pins are wired in series to form a single bus.
Schematics and PCBs were created using EAGLE 7. The freeware license is fine for viewing and editing these designs.
The current version of the PCB schematics have a couple of severe bugs.
- The SparkFun footprint for the seven segment displays is around 8mm shorter than the component. This resulted in the actual displays overlapping the footprints for the LEDs along the edges. On my 1.0 boards I was able to bend the LED pins to the side to compensate. But I've created a quick 1.1 revision of the display boards to fix it.
- The IDC connector pins on the display and controller boards were mismatched. They're unusable unless you're prepared to hack up custom IDC cables or similar. I haven't yet tried to fix this.
- The two MAX7219 ICs that drive the seven-sgment displays just... don't have the DP pin connected to anything. The IDC connectors have their DP pins connected together, but I just plain didn't add a net from them to the MAX7219 pin. That's easily fixed with a couple of short lengths of wire, but it sure was startling to discover.
The following libraries are required to build this code:
- digitalIOPerformance for high speed IO.
- MuxShield library, to drive the Mux Shield.
- FastLED animation library, for driving addressable RGB LEDs.
- RA8875 is used to drive the TFT controller.
In addition, the following libraries were written to support this project. * EngNumber, for converting floating point numbers to engineering notation.