Problema Processing-Arduino

Salve, ho scritto un semplice programma (OS Windows 10) con processing per affacciarmi a questo linguaggio. Il codice in teoria avrebbe dovuto mandare quando premo un tasto del mouse o '1' o '0' in base a dove viene premuto.
ecco qui il codice:

import processing.serial.*;

Serial myPort; 

void setup() {
  size(200,200); 
   String portName = Serial.list()[3];
   myPort = new Serial(this, portName, 9600);
}
void draw(){
  background(0);
  quad(0, 0, 100, 0, 100, 200, 0, 200);
  if(mousePressed){
    if(mouseX >= 0 && mouseX < 100){
      myPort.write('1');
      }
    else{
      myPort.write('0');
    }
  }
}

Il problema pero è che a processing non va a genio il "3" in questa istruzione String portName = Serial.list()[3];
A quanto ho capito il valore fra le quadre dovrebbe indicare la porta seriale alla quale è connesso arduino, nel mio caso la COM 3; Fattostà che quando eseguo il programma su processing non viene visualizzato cio che dovrebbe, e per di più se cerco di chiudere la nuova finestra essa non risponde, ma provandoci ripetutamente appare una nuova finestra con scritto "Java(TM) Platform SE bynary non risponde", successivamente, dopo aver chiuso quest'ultima finestra mi compare in basso nell'IDEE il seguente errore

Could not run the sketch (Target VM failed to initialize).

Cio invece non si verifica ne al posto del tre inserisco "0" o "1", ma da lo stesso risultato dal 2 in poi.
Spero di aver descritto al meglio i problemi riscontrati.Confido nel vostro aiuto.

quel 3 è la sequenza di una lista, non è la COM3.
nel setup inserisci il print list:

println(Serial.list());

sotto ti apparirà la com3 a che numero della lista corrisponde.

oppure inserisci la porta com direttamente,
al posto di:

myPort = new Serial(this, portName, 9600);

metti:

myPort = new Serial(this,"COM3", 9600);