Je viens vous demander conseil car depuis ce matin mon arduino Uno reçoit des ÿ après chaque caractère. Pour vous expliquer le contexte j'envoi "GO" depuis mon Pc ou depuis le moniteur série d'arduino. Je récupère ces deux lettre dans un tableau de Char[2] puis j'affiche ces valeurs (pour le test).
Et l'arduino me renvoi "Gÿ" et "Oÿ". J'utilise Serial.read().
voici le code :
void setup()
{
// On utilise les PIN 12 et 13 en sorties digitales
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
// Démarage de la com série
Serial.begin(9600);
Serial.flush();
}
void setup()
{
// On utilise les PIN 12 et 13 en sorties digitales
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
// Démarage de la com série
Serial.begin(9600);
Serial.flush();
}
void loop()
{
// mesure de sécurité, on s'assure que le moteur est bien arrêté
digitalWrite(12, LOW);
digitalWrite(13, LOW);
Deplace=0;
valided = false;
// S'il y a des donnees en attente sur le port USB
if(Serial.available() > 0 )
{
// Récupére la donnée disponible
Deplace=Serial.parseInt();
Serial.print(Deplace);
// On boucle tant que la valeur de Deplace ne correspond pas
// On lance la méthode de vérif
while(!valided)
verif(Deplace);
Je ne vous met pas la suite, mais je vous met la fonction Verif (c'est ici le bug)
//Fonction de vérification de la valeur d'entré
void verif (int valeur)
{
if(Serial.available() > 0)
{
char Str[2];
for (int i =0; i <2 ; ++i)
{
Str[i] = Serial.read();
}
Serial.print(Str[0]);
Serial.print(Str[1]);
if (Str[0] == 'G'&& Str[1] == 'O')
{
valided = true;
Deplace = valeur;
}
else if (Str[0] == 'N' && Str[1] == 'O')
{
valided = true;
Deplace = 0;
}
else
{
valided = false;
}
}
}
Et voici ce que j'obtiens lorsque je rentre en valeur "5000" puis que je rentre "GO" pour valider cette valeur.