# Help needed with Leap Motion and live capture

**URL:** <https://discourse.processing.org/t/help-needed-with-leap-motion-and-live-capture/6323>\
**Category:** Electronics (Arduino, etc.)\
**Created:** [December 5, 2018, 11:30am UTC](https://discourse.processing.org/t/help-needed-with-leap-motion-and-live-capture/6323 "2018-12-05T11:30:21Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![saskia\_NL](https://avatars.discourse-cdn.com/v4/letter/s/8baadc/32.png) [@saskia\_NL](https://discourse.processing.org/u/saskia_NL)\
**Post date:** [December 5, 2018, 11:30am UTC](https://discourse.processing.org/t/help-needed-with-leap-motion-and-live-capture/6323/1 "2018-12-05T11:30:21Z")

</div>

Hi all!

Can someone help me with this code? I’m trying to use the Leap Motion control the movement of the “scan beam” on the screen. It works when I use the mouseX as a input, but now I want it to use te X position from my hand coming from the Leap Motion.

Hope you can help me! I’m just starting with coding 🙂

```auto
import processing.video.*;
Capture video;

import processing.serial.*;
Serial myPort;

import de.voidplus.leapmotion.*;
LeapMotion leap;

boolean tekenRondje;

ArrayList<PVector> points;
PVector fp;
float handPositieX; 
int newHandPositieX = int(handPositieX);

float interactionWidth = 200; // left-right from user
float interactionDepth = 150; // away-and-toward user
float fingerDot = 10;

void setup() {
  size(800, 500, P3D);
  

  String portName = Serial.list()[0];
  myPort = new Serial(this, portName, 9600);

  leap = new LeapMotion(this);
  delay(3000);
 
  video = new Capture(this, 320, 240);
  video.start();
}

void draw() {
  background(255);
  int fps = leap.getFrameRate();
  frameRate(fps);

  for (Hand hand : leap.getHands ()) {
// for (Finger finger : hand.getFingers()) {
      fp = hand.getIndexFinger().getRawPositionOfJointTip();

    float handTime = hand.getTimeVisible();
    PVector thumbTip = hand.getThumb().getRawPositionOfJointTip();
    PVector indexTip = hand.getIndexFinger().getRawPositionOfJointTip();
    PVector ringTip = hand.getRingFinger().getRawPositionOfJointTip();
    PVector middleTip = hand.getMiddleFinger().getRawPositionOfJointTip();
    PVector pinkyTip = hand.getPinkyFinger().getRawPositionOfJointTip();
    PVector handPosition = hand.getPosition();
   if(handPosition.y >= 200){
    handPositieX = handPosition.x;
// tekenRondje = true;
   } else {
     handPositieX = 0;
// tekenRondje = false;
   }
    

    handleFinger(thumbTip);
    handleFinger(indexTip);
    handleFinger(middleTip);
    handleFinger(ringTip);
    handleFinger(pinkyTip);
    }

//hand.draw();
myPort.write('1');
println(handPositieX);

int w = video.width;
  int h = video.height;
 
  copy(video, newHandPositieX/2, 0, 20, h, newHandPositieX, 0, 20, h);
  

// positieHand = newHandPositieX;

}

void captureEvent(Capture video) {
  video.read();
}

void handleFinger(PVector pos) {

  float x = map(pos.x, -interactionWidth,
  interactionWidth, 0, width);
  float y = map(pos.z, -interactionDepth,
  interactionDepth, 0, height);

  fill(0,0,255);
  noStroke();
  if (tekenRondje){
  ellipse(x, y, fingerDot, fingerDot);
  }

}

```
