Tangible Interaction Workshop – Lunar Landing Game Controller

For this first assignment, we were asked to create a game controller for Atari’s 1979 arcade game Lunar Lander. You can play the game yourself online. My controller is below.


My game controller plays with the idea of taking on a character before starting the game. Will you choose to be an astronaut or alien? Perhaps this will change your decisions, or add more of a story to the interaction. This is represented in the visual language of the panel, and a small switch that the user can toggle between either character. In a further prototype, I would change the code a bit to have the alien behave differently than the astronaut.

In an even more ideal scenario, I’d like users to pick between two head pieces, which are the enclosures for the game controllers. The choices are either an astronaut’s helmet or an alien’s head.  Both have controllers on the sides of the head for up, down, thrust, and start.  Maybe the two players battle against each other.


Assignment: Game controller with HID output

  • Send up, down, left, right keypresses, or W, A, S, D keypresses as a USB keyboard
  • Send mouse clicks
  • Move mouse in X and Y direction to desired location to click
  • Your controls should be arranged so that the player can watch the screen, not concentrate on the controls
  • Make a housing for your controller.



In this assignment we take advantage of standard technical protocols written for HIDs (Human Interface Devices) such as keyboards and mice. But we get to replace the keyboard and mouse with a reimagined interface using tangible sensors of our choosing. This way, the user can press a more interesting type of sensor but still be able to interact with content on a computer, such as the web browser.

Shout out to the Arduino libraries written for this keyboard and mouse functionality. The libraries have a lot of power. For example, you don’t want to take over the mouse or keyboard and accidentally write random code into your  program! That’s what happened right before this.

But here’s the button behaving as a mouse as I actually designed it.



Me playing a good old game of Lunar Lander. It’s hard to play while filming yourself.



In addition to this diagram, I created little icons to put inside the windows of the arcade buttons.



I made more finished cut outs, but you can see a draft below.

Sound on. Very satisfying.



Note: I used a MKR1000 microcontroller, not an Uno, to be able to access the keyboard and mouse using HID protocol.




Prototyping & Fabrication 

First I created a simple circuit and slowly built my code’s functions one button at a time.


I used a bamboo box found at the Container Store that comes without a lid. To create a lid, I first prototyped with paper templates.


Then moved on to cardboard.


Then, thanks to Keerthana, I was able to add this fancy black acrylic panel. Here you can see that I had to raise the panel higher than the box. I did this by layering pieces of cardboard. This was necessary because the arcade buttons were a quarter inch taller than the box itself… I had to raise up the panel to accommodate them. I also didn’t have a fourth white button, so had to use a blue button for the start. With limited materials, I made the best of it.



As a note to myself, these are the settings I used on the 75 watt laser cutter.

Acrylic: 1/4 inch think acrylic.  Etch: 600 dpi, 85 speed, 60 power. I went 5 digits slower in speed than the recommended 90, this must be why my engravings are deeper. Cut: 100 frequency, 3 speed, 100 power.

Cardboard: Regular amazon cardboard. Etch: 90 speed, 10 power. Cut: 30 power, 60 speed, 10 frequency.


It would be cool to light the entire panel from below. I’m halfway there with these light-up buttons.






References – Tech and Fabrication



Tom Igoe’s code shared in class:

#include “Keyboard.h”

void setup() {
pinMode(5, INPUT_PULLUP);
pinMode(4, OUTPUT);


void loop() {
if (digitalRead(5) == LOW) {
digitalWrite(4, HIGH);
} else {
digitalWrite(4, LOW);
References – Cultural Background

Here’s a version of the original game, reviewed on youtube. Lunar Lander games are a genre of first person games in which the player controls the landing of a spaceship. As a fun fact, the first version was written by a high school student at the time.


Check out the original panel! The control for thrust looks like the most realistic control one might find in a space ship. The rest are a little harder to interpret. It looks like there are two settings for left movement and two for right movement, which is something the mouse and arrow keys do not afford.



The original enclosure – an arcade unit. Great graphics.