communication bluetoot et arduino qui redémarre

bonjour et merci d'avance pour l'aide apportée.

je cherche à faire communiquer deux arduinos par bluetooth, dans le but d'avoir une télécommande qui pourra commander toute mes projets de robotique avec une télécommande unique.

coté émetteur :
carte arduino uno, module bluethhoth HC 05 configuré en maitre !

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
int Switch1, Switch2;


void setup() 
{
 Serial.begin(9600);
 BTSerial.begin(9600);
 pinMode(2, INPUT);
 pinMode(3, INPUT);
}

void loop() 
{
Switch1= digitalRead(2);
Switch2= digitalRead(3);

BTSerial.print("+");
BTSerial.print(Switch1);
BTSerial.print("A");
BTSerial.print(Switch2);

BTSerial.print("B0000C0000D0000");
delay(1);
}

sachant que les valeurs B, C, D seront plus tard pour des potentiomètres

coté récepeteur

ardionu méga avec HC06 (slave uniquement)

char c;
char chaine_recue[]="aaaaaaaaaaaaaaaaaa"; //20 chars  +0A0B0000C0000D0000$
int i;
int k;
int l;
char Val0[5]; //nombre entre crochet = nombre max de char de la donnée recue + 1
char ValA[5];
char ValB[5];
char ValC[5];
char ValD[5];
int VALRed, VALGreen;


void setup()
{
 Serial.begin(9600);
 Serial2.begin(9600);
 pinMode(10,OUTPUT);
 pinMode(9,OUTPUT);
 Serial.println("je démarre");
}

void loop()
{
 // reception
 if (Serial2.available() >0)
 {
   c = Serial2.read();
   if (c == '+')
   {
     i = 0; 
     while(chaine_recue[i] != '\0')
     {
       chaine_recue[i] = Serial2.read();
       delay(50);
       i++;
     }
     Serial.print("Chaine recue: ");
     Serial.println(chaine_recue);
     StringToString();
          Serial.print("Val0(char) = ");
          Serial.print (Val0);
          Serial.print("       ValA(char) = ");
          Serial.print(ValA);
          Serial.print("       ValB(char) = ");
          Serial.print(ValB);   
          Serial.print("       ValC(char) = ");
          Serial.print(ValC); 
          Serial.print("       ValD(char) = ");
          Serial.println (ValD);

 }           
 }
VALRed=atoi (Val0);
VALGreen=atoi (ValA);
digitalWrite(10,VALRed);
digitalWrite(9,VALGreen);
}

void StringToString ()
{
 k=1;

   l=0;
   while (chaine_recue[k]!='A'){
     Val0[l] = chaine_recue[k];
     k++;
     l++;
   }

   k++;
   l=0;
   while (chaine_recue[k]!='B'){
     ValA[l] = chaine_recue[k];
     k++;
     l++;
   }
   k++;
   l=0;
   while (chaine_recue[k]!='C'){
     ValB[l] = chaine_recue[k];
     k++;
     l++;
   }
   k++;
   l=0;
   while (chaine_recue[k]!='D'){
     ValC[l] = chaine_recue[k];
     k++;
     l++;
   }
   k++;
   l=0;
   while (chaine_recue[k] != '\0'){
     ValD[l] = chaine_recue[k];
     k++;
     l++;
   }
}

mon prolème est que mon méga redémarre sans cesse. après des recherches sur le net j'ai essayé sans succès les différentes solutions proposées, mais aucune ne marche (avec une résistance entre 3.3v et RESET, une autre entre +5v et reste, un condesateur de 10µF entre GND et RESET, et égalment en coupant le petit truc entre reste et EN, à même la carte. aucune des solutions ne fonctionne

ou est l'erreur? et comment réduire la latence?

d'avance merci

j'ai trouvé la solution : il faut rallonger le temps de délais d'émission, selon moi, pour que l'arduino de réception "ne soit pas débordé"

pour ceux que ca intéresse :

code d'émission

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
int Switch1, Switch2;


void setup() 
{
  Serial.begin(9600);
  BTSerial.begin(9600);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  digitalWrite(4, HIGH);
  delay (10);
  digitalWrite(4, LOW);
}
void loop() 
{
Switch1= digitalRead(2);
Switch2= digitalRead(3);

BTSerial.print("+");
BTSerial.print("A");
BTSerial.print(Switch1);
digitalWrite(5, Switch1);
BTSerial.print("B");
BTSerial.print(Switch2);
digitalWrite(6, Switch2);

BTSerial.println("C0000D0000");
delay(500);
}

code de réception

/* Serial SLAVE */

char c;
char chaine_recue[]="aaaaaaaaaaaaaaa"; //20 chars  +A0B0C0000D0000
int i;
int k;
int l;
char ValA[5];//nombre entre crochet = nombre max de char de la donnée recue + 1
char ValB[5];
char ValC[5];
char ValD[5];
int VALRed, VALGreen;


void setup()
{
  Serial.begin(9600);
  Serial2.begin(9600);
  pinMode(10,OUTPUT);
  pinMode(9,OUTPUT);
  Serial.println("je démarre");
}

void loop()
{
  // reception
  if (Serial2.available() >0)
  {
    c = Serial2.read();
    if (c == '+')
    {
      i = 0; 
      while(chaine_recue[i] != '\0')
      {
        chaine_recue[i] = Serial2.read();
        delay(10);
        i++;
      }
      Serial.print("Chaine recue: ");
      Serial.println(chaine_recue);
      StringToString();
           Serial.print("       ValA(char) = ");
           Serial.print(ValA);
           Serial.print("       ValB(char) = ");
           Serial.print(ValB);   
           Serial.print("       ValC(char) = ");
           Serial.print(ValC); 
           Serial.print("       ValD(char) = ");
           Serial.println (ValD);

  }           
  }
VALRed=atoi(ValB);
VALGreen=atoi(ValA);
digitalWrite(10,VALRed);
digitalWrite(9,VALGreen);
}

void StringToString()
{
  k=1;

    l=0;
    while (chaine_recue[k]!='A'){
      k++;
      l++;
    }

    k++;
    l=0;
    while (chaine_recue[k]!='B'){
      ValA[l] = chaine_recue[k];
      k++;
      l++;
    }
    k++;
    l=0;
    while (chaine_recue[k]!='C'){
      ValB[l] = chaine_recue[k];
      k++;
      l++;
    }
    k++;
    l=0;
    while (chaine_recue[k]!='D'){
      ValC[l] = chaine_recue[k];
      k++;
      l++;
    }
    k++;
    l=0;
    while (chaine_recue[k] != '\0'){
      ValD[l] = chaine_recue[k];
      k++;
      l++;
    }
}