J'ai un problème avec Arduino et Processing

Salut, je suis en terminale et je bosse sur un projet, je dois en gros faire une maison avec des capteurs pour les fenêtres, le Co2 etc...

Le problème est survenu quand j'ai ajouté le capteur de Co2 ; plus rien ne s’affichait sur l'interface Processing :sob:

ARDUINO :

#include "AirQuality.h"
#include "Arduino.h"
AirQuality airqualitysensor;
int current_quality =-1;

int PinCuisine = 7;
int PinSDB = 10;               // choose the input pin (for PIR sensor)
int CapteurSDB = LOW;          // we start, assuming no motion detected
int CapteurCuisine = LOW;
int val = 0;                   // variable for reading the pin status
String monString = "";
String monString1= "";
String monString2 = "";

void setup() {
  airqualitysensor.init(14);
  pinMode(PinSDB, INPUT);      // declare sensor as input
  pinMode(PinCuisine, INPUT);
  Serial.begin(9600);

}

void loop(){
  current_quality=airqualitysensor.slope();
if (current_quality >= 0)// if a valid data returned.

{
if (current_quality==0)
monString2 = ("High pollution! Force signal active");
else if (current_quality==1)
monString2 = ("High pollution!");
else if (current_quality==2)
monString2 = ("Low pollution!");
else if (current_quality ==3)
monString2 = ("Fresh air");
}

  val = digitalRead(PinSDB);  // read input value
  if (val == HIGH) { // check if the input is HIGH
    delay(150);
   // we have just turned on
    monString = "FENETRE SDB OUVERTE ";
    // We only want to print on the output change, not state
    CapteurSDB = HIGH;
  } else {
    delay(300);
    // we have just turned of
    monString = "FENETRE SDB FERMEE ";
   // We only want to print on the output change, not state
   CapteurSDB = LOW;
  }
  
   val = digitalRead(PinCuisine);  // read input value
  if (val == HIGH) { // check if the input is HIGH
    delay(150);
      // we have just turned on
      monString1 = "FENETRE Cuisine OUVERTE ";
      // We only want to print on the output change, not state
      CapteurSDB = HIGH;
  } else {
   
    delay(300);
      // we have just turned of
      monString1 = "FENETRE Cuisine FERMEE ";
      // We only want to print on the output change, not state
      CapteurSDB = LOW;
  }
  Serial.println(monString+" "+monString1 + " "+monString2);
}
ISR(TIMER2_OVF_vect)
{
if(airqualitysensor.counter==122)//set 2 seconds as a detected duty
{

airqualitysensor.last_vol=airqualitysensor.first_vol;
airqualitysensor.first_vol=analogRead(A0);
airqualitysensor.counter=0;
airqualitysensor.timer_index=1;
PORTB=PORTB^0x20;
}
else
{
airqualitysensor.counter++;
}
}

PROCESSING :

import processing.serial.*;


/* Ce programme permet de récupérer l'état des entrées-sorties numériques et analogiques d'une carte arduino. Le tableau de variable "E_S" contient les données; 
 de la variable E_S[0] à E_S[13] se trouvent les états 0 ou 1 des E/S numériques de 0 à 13, de la variable E_S[14] à E_S[19] se trouvent les valeurs numériques des E/S analogiques de A0 à A5 */

boolean FenetreSDB = false;
boolean FenetreCuisine = false;
boolean FenetreChambre = false;

Serial arduino;/*déclaration d'une variable de communication sur le port série
 pour commuiquer avec la carte arduino*/

String[]E_S;// tableau de variables contenant les états des entrées-sorties de la carte arduino en valeurs entières
int lf = 10;      // code ascii du "saut de ligne" (line feed) pour détecter la fin du message

void setup() { 
  println(Serial.list());
  arduino = new Serial(this, Serial.list()[2], 9600); /*démarrage d'une communication 
   sur le port série avec la carte arduino; changer le n° du port si nécessaire (0 ou 1 ou 2...)*/
  arduino.bufferUntil(lf);
  
  background(0,0,0);
  size (1000, 1000);
  fill(200, 173, 127);
  rect(200, 500, 500, 250);
  fill (115, 8, 0);
  triangle(200, 500, 700, 500, 450, 250);
  fill (126, 51, 0);
  rect(620, 550, 80, 200);
  fill (255, 255, 0);
  rect(620, 650, 25, 25);
  fill(0,101,0);
  ellipse(535,580,25,25);
  fill(101,0,0);
  ellipse(535,620,25,25);
  fill(0, 0, 0);
  textSize(15);
  text("Salle de bain", 220, 700); 
  textSize(15);
  text("Cuisine", 375, 700); 
  textSize(15);
  text("CO2",520,700);
  fill(0,200,0);
  textSize(15);
  text("",555,585);
  fill(200,0,0);
  textSize(15);
  text("Danger",555,627);
} 

void draw() { 
 
   textSize(18);
    fill(255, 255, 255);
    text("Indice de CO2 : ", 50, 50);
  fill (116, 208, 241);
  rect(225, 550, 100, 100);
  rect(350, 550, 100, 100);
  if (FenetreSDB==true) { 
    textSize(18);
    fill(255, 0, 0);
    text("Ouverte", 250, 605);
  }
  else if (FenetreSDB == false)
  {
    textSize(18);
    fill(0, 200, 0);
    text("Fermée", 250, 605);
  }

  if (FenetreCuisine==true) { 
    textSize(18);
    fill(255, 0, 0);
    text("Ouverte", 375, 605);
  }
  if (FenetreCuisine==false) { 
    textSize(18);
    fill(0, 200, 0);
    text("Fermée", 375, 605);
  }
}
void serialEvent(Serial arduino) { // sous programme qui s'exécute lorsqu'un "saut de ligne" est détecté(line feed)
  String com = arduino.readString(); // chargement de la chaîne de caractère reçue dans une variable
  test(com);
  println ("réception arduino:  "+ com);
  println("Args 2 = "+args[2]+" Args 5 = "+args[5]+" args 6 = "+args[6]);
 
} 
void test(String com)
{
  String args[] = com.split(" ");
  if (args[1].equalsIgnoreCase("SDB"))
  {
    if (args[2].equalsIgnoreCase("OUVERTE"))
    {
      FenetreSDB = true;
      println("Fenetre SDB vaut "+FenetreSDB);
    }
    if (args[2].equalsIgnoreCase("FERMEE"))
    {
      FenetreSDB = false;
      println("Fenetre SDB vaut "+FenetreSDB);
    }
  }
  if (args[5].equalsIgnoreCase("Cuisine"))
  {
    if (args[6].equalsIgnoreCase("OUVERTE"))
    {
      FenetreCuisine = true;
      println("Fenetre Cuisine vaut "+FenetreCuisine);
    }
    if (args[6].equalsIgnoreCase("FERMEE"))
    {
      FenetreCuisine = false;
      println("Fenetre Cuisine vaut "+FenetreCuisine);
    }
  }
  println();
}

Je ne sais pas comment faire ! J'ai ce message d’erreur :sob:

error, disabling serialEvent() for //./COM37
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at processing.serial.Serial.serialEvent(Unknown Source)
	at gnu.io.RXTXPort.sendEvent(RXTXPort.java:732)
	at gnu.io.RXTXPort.eventLoop(Native Method)
	at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
	at IHM_Processing.test(IHM_Processing.java:110)
	at IHM_Processing.serialEvent(IHM_Processing.java:102)
	... 8 more

Merci d'anvance :kissing: