Problème avec le "if"

Bonjour,
Pendant notre année de terminale avec 4 amis, nous devons réaliser un projet qui sera présenté à l'oral du baccalauréat. Je vais éviter de rentrer dans les détails mais nous devons utiliser une communication Bluetooth pour que celui ci fonctionne à son maximum. Rentrons dans le vif du sujet, lorsque je met tout les if en commentaire a l'aide du /* */, le moniteur série reçoit bien toutes les informations (j’envoie des données assez simple tel que A, B, C,...). Mais dès que je met en place les conditions if, rien ne va plus, il y a des sorte de ""pertes"" c'est a dire que dans le moniteur série au lieu d'afficher "ABABAB", avec A pour désigner l'action d'appuyer sur un bouton, sur une appli et B pour désigner le
relâchement du doigt sur le bouton, il affiche "AAABBABAAABB" (par exemple) et en plus ça avec une latence. Je ne connais pas la source du problème et ça m'empêche d'avencer. Je vous partage le code:

#include <SoftwareSerial.h>
#define rxPin 10 // Broche 11 en tant que RX, à raccorder sur TX du HC-05
#define txPin 11 // Broche 10 en tant que TX, à raccorder sur RX du HC-05
SoftwareSerial mySerial(10, 11);
int c = 0;
int t = 0;

void setup()
{
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
mySerial.begin(9600);
Serial.begin(38400);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}

void loop()
{
int i = 0;
char c[32] = {0};
// when characters arrive over the serial port...
if(Serial.available())
{
do
{
c[i++] = Serial.read();
//delay(3);
}
while (Serial.available() > 0);
mySerial.println(c);
Serial.println(c);
}
while(mySerial.available())
Serial.print((char)mySerial.read());

if ((char)mySerial.read() == 'A') digitalWrite(2,HIGH);
if ((char)mySerial.read()== 'C') digitalWrite(3,HIGH);
if ((char)mySerial.read()== 'E') digitalWrite(4,HIGH);
if ((char)mySerial.read()== 'G') digitalWrite(5,HIGH);

if ((char)mySerial.read() == '5')
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
}

if ((char)mySerial.read()== 'B') digitalWrite(2,LOW);
if ((char)mySerial.read()== 'D') digitalWrite(3,LOW);
if ((char)mySerial.read()== 'F') digitalWrite(4,LOW);
if ((char)mySerial.read()== 'H') digitalWrite(5,LOW);

}

Le programme a une fonction assez simple, il ne fait que allumer des led via bluetooth. Du moins, c'est ce qu'il devrais faire. Je ne connais pas vraiment la source du problème a part qu'en supprimant tout les "if", le moniteur série reçoit bien toutes les données.
Merci d'avoir pris le temps de lire mon message, en espérant avoir une réponse de votre part.

Cordialement, Narupyb

Bonjour,

Mets ton code entre balises de code.

Chaque fois que tu fais mySerial.read() le caractère est lu puis est perdu. Donc le mySerial.read() suivant ne le reverra jamais.

Il faut que tu lises le caractère dans une variable puis tu testes la variable.
Par exemple

char c=mySerial.read();
if (c== 'A') digitalWrite(2,HIGH);
if (c== 'C') digitalWrite(3,HIGH);
if (c== 'E') digitalWrite(4,HIGH);
if (c== 'G') digitalWrite(5,HIGH);

Merci de votre réponse rapide kamill effectivement ça marche je n'avais pas oser essayer merci.
Cordialment