Game Controller for Lunar Landing

What a journey this project was. I immediately dived into the junk shelf and began digging through thenpiles until I found some things I could use.

I found a joystick from a drone, some wood, and buttons from the Shop. I was set…or so I thought…

My focus was on ergonomics as having a tiny box didn’t seem the best way to play. I played around with the idea of large controls, i.e. pedals and a thrust lever, but I was straying too far from the original ask. I found some pieces of wood that resembled extra large video game controllers, so I took the cue from there and began shaping and designing them as a game controller.

 

 

 

I cut off the end clip and soldered leads on each of the wires. I thought I would come back to this controller once I figured out the buttons…

It took me some time to figure out the code and the wiring.
#include

const int upButton = 13;
const int downButton = 12;
const int leftButton = 11;
const int rightButton =10;
const int reloadButton = 9;
const int enterButton = 6;
const int ledPin = 5;

int potMove;
int up;
int down;
int left;
int right;
int reload;
int enter;
int led;

void setup() {
Serial.begin (9600); //set up serial baud rate
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(leftButton, INPUT_PULLUP);
pinMode(rightButton, INPUT_PULLUP);
pinMode(reloadButton, INPUT_PULLUP);
pinMode(enterButton, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
Keyboard.begin();
}
//
void loop() {
int up = digitalRead(upButton);
int down = digitalRead(downButton);
int left = digitalRead(leftButton);
int right = digitalRead(rightButton);
int reload = digitalRead(reloadButton);
int enter = digitalRead(enterButton);
// int potMove = analogRead(A2);
// led = digitalRead(ledPin);

//use buttons and pot to control keyboard
// Serial.println(potMove);

if (up == HIGH) {
Keyboard.press(‘w’);
delay(10);
Serial.println(“UP_”);
Keyboard.release(‘w’);
//Serial.println(potMove);
}

if (down == HIGH) {
Keyboard.press(‘s’);
delay(10);
Serial.println(“DOWN_”);
Keyboard.release(‘s’);
//Serial.println(potMove);
}

if (right == HIGH) {
Keyboard.press(‘d’);
delay(10);
Serial.println(“RIGHT_”);
Keyboard.release(‘d’);
//Serial.println(potMove);
}

if (left == HIGH) {
Keyboard.press(‘a’);
delay(10);
Serial.println(“LEFT_”);
Keyboard.release(‘a’);
//Serial.println(potMove);
}

if (reload == HIGH) {
Keyboard.press(135);
Keyboard.press(‘r’);
delay(50);
Keyboard.releaseAll();
digitalWrite(ledPin, HIGH);
delay(1000);
Serial.println(“RELOAD”);
digitalWrite(ledPin, LOW);
}

if (enter == HIGH) {
Keyboard.write(176);
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
Serial.println(“ENTER”);
}

 

I then focused on the actual controller bit of the assignment.


 

I drew out where the controls were go, and walked around the Floor, asking random classmates hold the device, and adjusting the orientation and placements of the buttons to ensure that both large handed and small handed people would be able to grasp the large controller without any significant issue.

 

I wanted to figure out a way for the button to sit flush in the wood, but it was way too thick and after various attempts to make it work, I went back to laser cutting acrylic.


 

I hot glued the buttons to the bottom so they would stay in place as the user pressed on the buttons from the top.

 

This is when I ran into issues. I didn’t think through how I wanted to close the controller…

I wanted it to be accessible, but I ran out of time in figuring this portion of the controller out.

 

Functionally it works! It doesn’t look so good though…

XYZ Project Proposal: Draw, Play, Decorate, Clean

Assignment

Everyone will formally pitch an early robot idea (nothing written in stone) in class next week.  Have your verb and your specifics.  Think of ways you will actuate it.  Will it be a traditional X, Y, Z gantry?  What parts are you confident in, what parts are you worried about.  Bring anything that makes it more real: mockups, prototypes, images, and videos.  You will all present in class for a few minutes, be prepared to take questions.

 

Overall Theme

Overall I want to utilize computer vision into my project in some way.

 

Proposal Idea 1: The Line Drawing Robot

My idea is centered around automating the line drawing process on the millions of miles of motorways. This process generally has to be done a couple times a year, as wear and tear breakdown the quality of the roads, leading them to be re-paved and repainted. Having a XYZ robot on a chassis would make this process a whole lot easier, efficient and cost effective in the long run.

 

Some examples:

Cons

  • Moving chassis
  • Scale

 

Proposal Idea 2: Cake Decorator

Let’s make the process of decorating a cake easier! I wanted to add a twist with taking a picture of someone and it draws that person. Or a variant would be that it senses someone’s emotion and draws on a cupcake a quote to help them with that mood. Make them happy, make them happier, etc.

 

Proposal Idea 3: Sharpie Class Scheduler

Experiment with a method to create an interface for writing weekly class schedules outside of each class room that can be sent to the boards every Monday to save the paper that is wasted, more than 4,000 sheets per year can be saved and have something that looks cool on the floor.

 

Proposal Idea 4: Air Hockey Computer

I want to see if I could recreate this project. I’m very hesitant in recreating this as it’s already been done and there is lots of documentation that was done on this project and don’t think that would be a good way to properly learn. Open for suggestions.

Idea 5: Show Cleaning

place your shows on the bed and it runs through a database of sneakers and then views the shoe and then cleans the sneaker properly.