Voie Série Et Comparaison De Chaines De Caractères - Zeste De Savoir
Maybe your like
- Aller au menu
- Aller au contenu
- Aller à la recherche
- Accueil
- Forums
- Savoirs
- Systèmes et Matériels
- voie série et comparaison de chaines de caractères
Cette réponse a été utile
Bonsoir, Je suis nouvelle en Arduino et pour m’entraîner avant de refaire le tp "Baignade" (car j’avais quand même du mal à le faire j’ai un peu tricher
) j’ai écrit le programme suivant:
Le problème c’est qu’à chaque fois que je tape le mot requin le message "les mots sont différents" s’affiche.
Quel est le problème avec mon code svp?
Merci!
- 10/03/19 à 20h18
- Modifié
Cette réponse a été utile
Salut et bienvenue sur Zeste de Savoir ! 
Tu as oublié une petite chose à faire avant de comparer les chaînes de caractères. La réponse est dans cette partie et concerne le caractère \0. 
Bonne chance !
- 10/03/19 à 20h38
“I don’t love studying. I hate studying. I like learning. Learning is beautiful.” – Natalie Portman
+1 -0Cette réponse a été utile
@PG06 merci:) D’accord j’ai alors ajouté la ligne suivante après la 22 e ligne:
mot[i] = '\0'; delay(10);Mais ca ne fonctionne toujours pas…
- 10/03/19 à 20h59
- Modifié
Cette réponse a été utile
Quel est le réglage de fin de ligne que tu as dans ton moniteur série (en bas à côté de 9600 baud) ?
- 10/03/19 à 22h11
“I don’t love studying. I hate studying. I like learning. Learning is beautiful.” – Natalie Portman
+0 -0Cette réponse a été utile
J’ai le réglage "nouvelle ligne".
- 10/03/19 à 23h09
Cette réponse a été utile
Essaye avec "pas de fin de ligne".
- 11/03/19 à 07h41
“I don’t love studying. I hate studying. I like learning. Learning is beautiful.” – Natalie Portman
+0 -0Cette réponse a été utile
@Fvb02 Conseil: indente ton code avec le même nombre d’espaces (2 à 4 en général) pour faciliter ta relecture et celle par les autres (bien que là ton code ne soit pas conséquent en taille) comme ci-dessous par exemple:
//Avec indentation void affichage(void) { int i = 0; while(Serial.available()>0 && i<19) { mot[i] = Serial.read(); delay(10); i++; } if(strcmp(mot, "requin") == 0) { Serial.println(mot); Serial.println("les mots sont identiques"); } else { Serial.println(mot); Serial.println("les mots sont différents"); } }Remarque: Dans la plupart des éditeurs de textes (et aussi dans l’IDE Arduino), la touche Tab (tabulation) insert des espaces tout seul pour éviter de devoir s’acharner sur ta barre d’espace 
- 11/03/19 à 17h38
Cette réponse a été utile
@Vanadiae d’accord merci du conseil 
- 11/03/19 à 23h51
Cette réponse a été utile
Pense à mettre ton sujet en "Résolu" si ton problème est résolu ou sinon fait signe 
- 12/03/19 à 21h00
Cette réponse a été utile
@vanadiae je n’arrive toujours pas à régler le problème:( Mais pourriez vous svp m’expliquer cette ligne afin que je puisse faire les changements nécessaires svp merci!
mot[i] = '\0';- 12/03/19 à 22h40
Cette réponse a été utile
Même avec "pas de fin de ligne" ça ne fonctionne pas ?
Le \0 est un caractère qui indique la fin d’une chaîne de caractère. Quand tu affiches la chaîne on ne le voit pas mais il est bien là. Donc dans ton code, à la ligne 24, le mot "requin" qui sert de comparaison est en fait composé des caractères r, e, q, u, i, n, \0. Quand tu récupère la chaîne mot depuis la liaison série, tu n’as pas le \0 à la fin donc forcément la comparaison échoue. C’est pour ça qu’il faut ajouter "à la main" le \0 après les autres caractères.
Concernant la fin de ligne, j’ai proposé de l’enlever car sinon il est possible que l’appui sur la touche Entrée dans le moniteur série pour valider le mot rajoute un (ou deux) caractère de fin de ligne. Donc dans ce cas mot contiendrait r, e, q, u, i, n, fin de ligne et ça échouerait aussi.
- 13/03/19 à 08h10
“I don’t love studying. I hate studying. I like learning. Learning is beautiful.” – Natalie Portman
+1 -0Cette réponse a été utile
Salut 
Normalement si tu veux lire un mot qui est entré,
On utilise Serial.readString() ou Serial.readStringUntil(caractère de fin de lecture).
Pour représenter un saut de ligne, il faut utiliser \n comme tu utiliserais e ou \0
Remarque:
while(Serial.available()>0 && i<19)Tu peux simplement remplacer Serial.available() > 0 par Serial.available() tout simplement 
- 13/03/19 à 14h55
Cette réponse a été utile
@PG06 Effectivement je vois, oui finalement c’était ca le problème. J’ai choisi l’option pas de fin de ligne et ça a marché merci beaucoup!!! 
@Vanadiae Merci beaucoup pour les explications et les astuces! Je tâcherai de bien en faire usage! 
- 13/03/19 à 17h24
- Modifié
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité. Créer un compte
Retour à la liste des sujetsTag » Arduino If Caractères
-
Récapitulatif Sur Les Chaînes De Caractères Avec Arduino - AranaCorp
-
If : Comparer Le Texte D'une Variable à Un Texte. - Arduino Forum
-
Caractères Non Pris En Compte Dans Un Test "if" - Arduino Forum
-
Le Langage Arduino :Les Chaînes De Caractères "string" - RedOhm
-
Les Chaînes De Caractères | Référence Du Langage Arduino En ...
-
String.length() | Référence Du Langage Arduino En Français
-
Les Chaînes De Caractères - Locoduino
-
Arduino String - Uso, Ejemplos Y Más - HETPRO/TUTORIALES
-
Texte Et Arduino (2): Les Tableaux De Caractères Du Langage C
-
Texte Et Arduino (1): La Classe String - Électronique En Amateur
-
Arduino #41: Les Chaînes De Caractères - Types String | Char [TUTO]
-
Arduino : Recevoir Une Chaine De Caractère En Une Fois Et Non Pas ...
-
Lire Un Nombre Sur Le Port Série Arduino - Gists · GitHub
-
Comment Comparer La Chaîne De Séad()? - Arduino - AskCodez