Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme programmation

    27 décembre 2012 à 16:49:17

    bonjours,

    le logiciel arduino n'arrete pas de me dire qu'il y a une erreur mais je ne voit pas laquel, pouvez vous m'aider svp !
    le message qui s'affiche est le suivant : invalide conversion from 'char' to 'const char'


    int mot(char valeur)
    {
      if(strcmp(valeur, "vague") == 0)
      {
      return orange;
      }
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 décembre 2012 à 17:19:48

      Met 'const char' a la place de 'char' comme il te le dit.

      Cependant ça marchera toujours pas parce que tu ne peux pas comparer 1 caractère avec une chaine de caractere. tu vas devoir mettre 'const char *' ou 'const char chaine[]'.

      Si tu fais un return dans une condition, fait un return en dehors de ta condition, tu vas avoir des problemes sinon.
      C'est A Dire:

      if (condition) {
        return patate;
      }
      return -1; //code de non condition par exemple
      
      //ou
      
      if (condition) {
        return patate;
      } else {
        return -1;
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        27 décembre 2012 à 17:41:56

        super je te remercie de m'avoir repondu... par contre je viens d'avoir un autre problème :p
        je souhaiterai que lorsque je j'écrit "sos", "ras" ou "vague" sa m'allume une led. mais ici en l'occurence sa marche pas :(
        Tu peut m'aider stp ?


        const int vert = 22;
        const int orange = 28;
        const int rouge = 38;
        
        char lire;
        
        void setup()
        { 
          Serial.begin(9600);
          
          pinMode(vert, HIGH);
          pinMode(orange, HIGH);
          pinMode(rouge, HIGH);
        }
        
        void loop()
        {
          if(Serial.available())
          {
            if(Serial.available() > 0)
            {
              lire = Serial.read();
              
              if(lire == 'sos')
              {
                digitalWrite(vert, HIGH);
                digitalWrite(orange, HIGH);
                digitalWrite(rouge, LOW);
                
              }
              else if(lire == 'ras')
              {
                digitalWrite(vert, LOW);
                digitalWrite(orange, HIGH);
                digitalWrite(rouge, HIGH);
              }
              else if(lire == 'vague')
              {
                digitalWrite(vert, HIGH);
                digitalWrite(orange, LOW);
                digitalWrite(rouge, HIGH);
              }
              else
              {
                Serial.print('sa ne marche pas');
                delay(200000);
              }
            }
          }
          else
          {
            Serial.print('rien sur le port serie');
            delay(200000);
          }
          
          digitalWrite(vert, LOW);
          digitalWrite(orange, HIGH);
          digitalWrite(rouge, HIGH);
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          27 décembre 2012 à 19:35:50

          Serial.read(); ne lis qu'un char.

          Or "sos" et les autres sont un tableau de char.

          Il faut que tu trouve une solution pour faire assez de read pour lire tout ton mot envoyé.
          • Partager sur Facebook
          • Partager sur Twitter
            27 décembre 2012 à 19:57:05

            et les chaines de caratères s'écrivent avec des doubles guilllemets ( " ) plutot que des guillemets simples ( ' ) qui eux sont utilisé pour un caractère seul uniquement
            • Partager sur Facebook
            • Partager sur Twitter
              27 décembre 2012 à 20:01:17

              quand je met des double guillemet sa marche pas, j'ai des erreurs...

              et j'ai essayer en récupérant les mot dans un tableau mais sa ne marche toujours pas :(
              • Partager sur Facebook
              • Partager sur Twitter
                27 décembre 2012 à 21:11:02

                Ok, mais la tu essaie de comparer un seul caractère (issu du serial.read) avec une chaine de caractères.

                C'est un peu comme si je te disais "voici la collection de lettres bien ordonnée de tata Albert" (la chaine de caractère), et voici ma propre collection de lettres. Dis moi si elles sont identiques et dans le même ordre. On est d'accord que pour les comparer, il faudrait que tu es les deux collections dans les mains. Mais moi, je ne peux te donner que une seule lettre à la fois (fonctionnement du serial.read). Comment faire donc pour comparer les deux collections ?

                Une solution serait : stocké les lettres que je t'envoie une à une dans ta main et ne faire la comparaison que lorsque je te dis "je n'ai plus rien à te donner".

                Or, ce que tu essaies de faire est "je compare chaque lettre que tu me donne par rapport à toute la collection de Tata Albert et j'ignore la lettre précédente que j'ai recu".

                Tu vois l'idée ?

                Dans le sujet du tp sur la zPlage, a tu bien lu la partie "conseil" qui parle de strcmp() et des chaines de caractères en général ?
                • Partager sur Facebook
                • Partager sur Twitter

                probleme programmation

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown