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
The KSPSerialIO mod, and parts of the arduino code here, are written by
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
- 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:
for high speed IO.
- MuxShield library, to
drive the Mux Shield.
- FastLED animation library, for driving addressable
- RA8875 is used to drive the TFT
In addition, the following libraries were written to support this project.
* EngNumber, for converting
floating point numbers to engineering notation.