Problema con While loop, Pir passive infrarosso + Processing

Salve!

volevo far partire un video quando il Pir IR riceve un serial (es: uno sta davanti al Pir), parte il video e "play" completamente (con la durata completa), poi se non ci fosse più un serial viene da input, apparirà un immagine.

problema è che per ora riesco a far partire questo video quando riceve un serial, e far "play" fino alla fine però il Pir stop ricevere serial informazioni.

le codici sono Arduino:

int inputPin = 2;

void setup() {
  pinMode(inputPin,INPUT);
  Serial.begin(9600);
}

void loop() {
  int val = digitalRead(inputPin);
  Serial.println(val);
  delay(50);
}

per Processing:

import processing.serial.*;
Serial myPort;
String adaptor= "/dev/cu.usbmodem1411"; 
 
void portConnect(){
    int portNumber = 99;
    String [] ports;
    println(Serial.list());
    ports = Serial.list();
      for(int j = 0; j< ports.length; j++) { 
    if(adaptor.equals(Serial.list()[j])) portNumber = j;         
    }
    if(portNumber == 99) portNumber = 0;
    String portName = Serial.list()[portNumber]; 
    println("Connected to "+portName);
    myPort = new Serial(this, portName, 9600);
    myPort.bufferUntil(10);
}
import processing.video.*;
Movie myMovie;
PImage img;
 
void movieEvent(Movie m) {
  m.read();
}
 
void setup() {
    size(400, 400);
    portConnect(); 
    img = loadImage("prova.jpg");
    myMovie = new Movie(this, "prova3.mov");
  }
 
void serialEvent(Serial myPort) {  
   String recieved = myPort.readString() ;  
   recieved = trim(recieved); 
   float md = myMovie.duration();
   float mt = myMovie.time();
   if (recieved.equals ("1")){
      myMovie.play();
     while(mt != md){ 
      image(myMovie, 0, 0); // che da qui stop di ricevere informazione dal pir, e il while loop stop..
      println(recieved);
     }
   }
   else{
     myMovie.stop();
      loadImage("prova.jpg");
      image(img,0,0);
      println(recieved);
   }
}
  void draw(){
}

dopo aver mostrato il video, il while loop stop.. aiutatemi!!