if(mot==test)
Tu a trouvé cela sur le site du zéro ?
Ca m'étonnerais, généralement ils ne font pas ce genre d'erreur
test et mot sont des tableaux de caractères. Le signe == ne peut pas s'appliquer à un tableau (ou plutot il s'applique sur le pointeur en mémoire du tableau et pas sur son contenu)
pour comparer 2 chaines de caractères il faut utiliser la fonction strcmp( chaine1, chaine2 ) qui retour 0 en cas d'égalité.
Ou bien strncmp( chaine 1, chaine 2, nombrechar )
char mot[5];
char test[] = " debit"; // on déclare comme un chaine de caractère terminée par un caractère nul '\0'
void setup()
{
Serial.begin(115200);
}
void loop()
{
if(Serial.available())
{
//alors on va lire le contenu de la réception
lireVoieSerie();
Serial.println(mot);
}
}
//lit un mot sur la liaison série (lit jusqu'à rencontrer le caractère '\n')
void lireVoieSerie(void)
{
int i = 0; //variable locale pour l'incrémentation des données du tableau
//on lit les caractères tant qu'il y en a
//OU si jamais le nombre de caractères lus atteint 4 (limite du tableau stockant le mot - 1 caractère)
while(Serial.available() > 0 && i <= 4)
{
mot[i] = Serial.read(); //on enregistre le caractère lu
delay(10); //laisse un peu de temps entre chaque accès a la mémoire
i++; //on passe à l'indice suivant
if(0 == strncmp(mot, test, 5) )
{
Serial.println("ca marche");
}
}
mot[i] = '\0'; //on supprime le caractère '\n' et on le remplace par celui de fin de chaine '\0'
}
Il y a encore des trucs a voir dans ton code
Si la syntaxe de test commandes est toujours <mot-clé>:<mot-clé>\n
Tu peux utiliser habilement les fonctions Serial.readUntil pour lire le 1er mot jusqu'au ':' puis le 2eme mot jusqu'au '\n'