Skip to content

My Homemade Nintendo Powerglove

October 30, 2011

Remember the old Nintendo powerglove? Of course you do. Well, I’m here to bring it back. With just an arduino, a piezo transducer, flex sensors, 10k Ohm resistors, some wires, rubber bands, a glove, and some C programming knowledge, I am able to recreate the old school Nintendo powerglove…. except this time, I made it into an electronic musical instrument. I mean… do you ever have a melody stuck in your head and you can’t help but to play the imaginary piano keys with your fingers? Well, this is what inspired me to do this. LOL. Seriously.

Yeah I know… you’re probably thinking 1) this looks ugly and 2) I should use this for something cooler. You are absolutely correct, and this is just the beginning of my little powerglove project. Just wait until I finally receive my 3-axis accelerometer in the mail (I didn’t want to break apart a wii controller to do this)… I’m gonna do all sorts of things. What’s on my list?

– Use it to control a robotic arm
– Create an AIR keyboard or mouse (kind of like minority report… except you have to be wearing the glove.
– Use it to control the movement on video games
– The beginning of an ironman suit! (j/k… sort of)

Well… enjoy the pictures and the video and the source code.

Here’s the video of the powerglove in action

…. and HERE is my source code:


int potpin0 = 0;
int potpin1 = 1;
int potpin2 = 2;
int potpin3 = 3;
int potpin4 = 4;

int speakerPin = 7;
int val0, val1, val2, val3, val4;
int flexlow = 50;
int flexhigh = 300;
int flexminimum = 230;

void setup()
{
  pinMode(speakerPin, OUTPUT);
  
}

void loop()
{
  val0 = analogRead(potpin0);
  val1 = analogRead(potpin1);
  val2 = analogRead(potpin2);
  val3 = analogRead(potpin3);
  val4 = analogRead(potpin4);
  if(val0 < flexminimum){
    playTone(1915);
  }
  else if(val1 < flexminimum){
    playTone(1700);
  }
  else if(val2 < flexminimum){
    playTone(1519);
  }
  else if(val3 < flexminimum){
    playTone(1432);
  }
  if(val4 < flexminimum){
    playTone(1275);
  }
}

void playTone(int note)
{
  for (int i=0; i<100; i++)
  {
    digitalWrite(speakerPin, HIGH);
    delayMicroseconds(note);
    digitalWrite(speakerPin, LOW);
    delayMicroseconds(note);
  }
}

From → Hacks

Leave a comment