controle robot, capteurs ultrasons

bonjour,

je travaille actuellement sur un robot, le robot ce déplace via les touches de mon clavier. J'aimerais par contre que le robot s'arrête lorsqu'il est trop proche d'un obstacle ( capteurs hc-sr04 )

programme arduino :

#define dir_1 2
#define pwm_1 3
#define dir_2 4
#define pwm_2 5
#define dir_3 7
#define pwm_3 6
#define dir_4 8
#define pwm_4 9
int pwm_value;
int execute_timer = 0;

void setup() {
Serial.begin(9600);
while (!Serial); // pour certains Arduino on attend que le port Série soit connecté
pinMode(pwm_1,OUTPUT);
pinMode(dir_1,OUTPUT);
pinMode(pwm_2,OUTPUT);
pinMode(dir_2,OUTPUT);
pinMode(pwm_3,OUTPUT);
pinMode(dir_3,OUTPUT);
pinMode(pwm_4,OUTPUT);
pinMode(dir_4,OUTPUT);

}

void loop() {

if (Serial.available() > 0) {
execute_timer = 0;
char key[1];
int r = Serial.readBytes(key, 1);
switch (key[0]) {
// the keyboard
case 'Z': {
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,50);
analogWrite(pwm_1,50);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,50);
analogWrite(pwm_4,50);
break;
}

case 'S': {
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,50);
analogWrite(pwm_1,50);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,50);
analogWrite(pwm_4,50);
Serial.println("DOWN");
break;
}

case 'Q': {
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,90);
analogWrite(pwm_1,90);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,90);
analogWrite(pwm_4,90);
break;
}

case 'D': {

digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,90);
analogWrite(pwm_1,90);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,90);
analogWrite(pwm_4,90);
break;
}
case 'E': {
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,90);
analogWrite(pwm_1,0);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,90);
analogWrite(pwm_4,0);
break;

}
case 'A': {
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,0);
analogWrite(pwm_1,90);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,0);
analogWrite(pwm_4,90);
break;
}
case 'C': {
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,90);
analogWrite(pwm_1,0);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,90);
analogWrite(pwm_4,0);
break;
}
case 'W': {
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,0);
analogWrite(pwm_1,90);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,0);
analogWrite(pwm_4,90);
break;
}
case 'T': {
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,90);
analogWrite(pwm_1,90);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,67);
analogWrite(pwm_4,67);
break;
}
case 'R': {
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,90);
analogWrite(pwm_1,90);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,67);
analogWrite(pwm_4,67);
break;
}
case 'G':{
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,0);
analogWrite(pwm_1,90);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
break;
}
case 'F':{
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,90);
analogWrite(pwm_1,0);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
break;
}
case 'V':{
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,90);
analogWrite(pwm_4,0);
break;
}
case 'B':{
digitalWrite(dir_1,HIGH); //controls the direction the motor
digitalWrite(dir_2,HIGH);
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
digitalWrite(dir_3,HIGH); //controls the direction the motor
digitalWrite(dir_4,HIGH);
analogWrite(pwm_3,0);
analogWrite(pwm_4,90);
break;
}
case 'H':{
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,90);
analogWrite(pwm_1,0);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
break;
}
case 'J':{
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,0);
analogWrite(pwm_1,90);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
break;
}
case 'N':{
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,90);
analogWrite(pwm_4,0);
break;
}
case ',':{
digitalWrite(dir_1,LOW); //controls the direction the motor
digitalWrite(dir_2,LOW);
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
digitalWrite(dir_3,LOW); //controls the direction the motor
digitalWrite(dir_4,LOW);
analogWrite(pwm_3,0);
analogWrite(pwm_4,90);
break;
}

case '\n': {
analogWrite(pwm_2,0);
analogWrite(pwm_1,0);
analogWrite(pwm_3,0);
analogWrite(pwm_4,0);
break;
}
}
}
}

programme proccesing :
programme proccessing pour controler le robot :

//on importe la bibliotheque pour la communication série
import processing.serial.*;

Serial mySerial;

void setup(){
size(300,300);

mySerial = new Serial(this,Serial.list()[0],9600);
mySerial.bufferUntil('\n');

}
void draw(){

background(255);
stroke(0);
fill(0);
textSize(20);
text("Controle du robot",75,25);
}

void keyPressed() {
print("Current pressed: ", keyCode, "\n");
mySerial.write(keyCode);
}

void keyReleased() {
mySerial.write('\n');
}