Skip to main content

Aduino Based Video Game Controller


Instruction video : 

Make an Arduino based game controller




Arduino Script:


// Monkey Game controller - By Jee Van Kur is not a Monkey ;)

const int button[] = {10, 11, 12}; // pins
int i = 0;

void setup() {
  Serial.begin(9600);
  while(i<3)                      // define pins
  {
    pinMode(button[i], INPUT);
    digitalWrite(button[i], HIGH);
    i++; 
  }
}

void loop(){
  int sum = 0;
  for(i=0;i<3;i++)
  {
    if(digitalRead(button[i]) == LOW)
    sum += (i+1)*pow(2, i);               // sum up the pressed button indexes
  }
  Serial.println(sum);        // print value
  delay(50);
}

// I am of no use without processing

 Processing Script:

import processing.serial.*;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.KeyStroke;
import java.io.IOException;
Serial MyPort;                                
String KeyString = "";
void setup()
{
  size(700, 500);
  MyPort = new Serial(this, "COM4", 9600);// My Arduino is on COM4. Enter the COM on which your Arduino talks.
  MyPort.bufferUntil('\n');
}
void draw(){
  background(0, 0, 0);
  fill(255, 0, 0);
  text("Console Connected !", 200, 175);
}
void serialEvent(Serial MyPort)throws Exception {
   KeyString = MyPort.readStringUntil('\n');
   float num = float(KeyString);
   int sum = int(num);
   System.out.println(sum);//prints the value for debugging purpose
   Robot Arduino = new Robot();//Constructor of robot class
   switch(sum){
     case 0 :  // none is pressed
     {
       delay(40);
       Arduino.keyRelease(KeyEvent.VK_UP);
       Arduino.keyRelease(KeyEvent.VK_RIGHT);
       Arduino.keyRelease(KeyEvent.VK_LEFT);
       break;
     }
     case 1 :   // left
     {
       delay(40);
       Arduino.keyPress(KeyEvent.VK_LEFT);
       Arduino.keyRelease(KeyEvent.VK_UP);
       Arduino.keyRelease(KeyEvent.VK_RIGHT);
       break;
     }
     case 4 :  // up
     {
       delay(40);
       Arduino.keyPress(KeyEvent.VK_UP);//presses up key.
       Arduino.keyRelease(KeyEvent.VK_LEFT);
       Arduino.keyRelease(KeyEvent.VK_RIGHT);
       break;
     }
     case 5 :  // left + up
     {
       delay(40);
       Arduino.keyPress(KeyEvent.VK_UP);//presses up key.
       Arduino.keyPress(KeyEvent.VK_LEFT);//presses up key.
       Arduino.keyRelease(KeyEvent.VK_RIGHT);
       break;
     }
     case 11 :  //  right
     {
       delay(40);
       Arduino.keyPress(KeyEvent.VK_RIGHT);//presses up key.
       Arduino.keyRelease(KeyEvent.VK_UP);
       Arduino.keyRelease(KeyEvent.VK_LEFT);
       break;
     }
     case 12 :  // left + right
     {
       delay(40);
       Arduino.keyPress(KeyEvent.VK_RIGHT);//presses up key.
       Arduino.keyRelease(KeyEvent.VK_UP);
       Arduino.keyPress(KeyEvent.VK_LEFT);
       break;
     }
     case 15 :   // up + right
     {
       delay(40);
       Arduino.keyPress(KeyEvent.VK_RIGHT);//presses up key.
       Arduino.keyPress(KeyEvent.VK_UP);
       Arduino.keyRelease(KeyEvent.VK_LEFT);
       break;
     }
     case 16 :  // left + up + right
     {
       delay(40);
       Arduino.keyPress(KeyEvent.VK_RIGHT);//presses up key.
       Arduino.keyPress(KeyEvent.VK_UP);
       Arduino.keyPress(KeyEvent.VK_LEFT);
       break;
     }
     
   }
   
}
// Export me if I am working fine

Make your own game controllers and have fun. Also post a pic in the comments if you make one.. would love to see it..

Comments

Post a Comment