Partage
  • Partager sur Facebook
  • Partager sur Twitter

transmettr un float un émetteur et récepteur 432

arduino

    14 décembre 2013 à 0:41:22

    Bonjour , j’ai un problème je utilise un émetteur et récepteur  434 MHz entre  mes Arduino

    Quand je veux émettre un float de je reçois des « ? »

    Comment faire pour recevoir un float avec un émetteur et récepteur  434 MHz ?

    Merci de votre aide

    //Emeteur

    void loop()
    
    {
    
     char message[30];
    
     float teperature =12.5;
    
        sprintf(message,"%f",teperature);
    
      const char *msg = message;
    
        vw_send((uint8_t *)msg, strlen(msg));
    
        vw_wait_tx();                     
    
    delay(200);                                                       
    
    }



    //Recepteur

    {  
    
     uint8_t buf[VW_MAX_MESSAGE_LEN];
    
        uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
        if (vw_get_message(buf, &buflen)) // On test afin de savoir si un message est reçu.
    
        {
    
        int i;
    
        for (i = 0; i < buflen; i++)
    
        {
    
            Serial.write(buf[i]);          }
    
        Serial.println("");
    
         }



    • Partager sur Facebook
    • Partager sur Twitter
      15 décembre 2013 à 16:43:36

      Donc, en considérant que tu utilise VirtualWire (ce que j'ai crut reconnaitre) et que ton problème concerne uniquement les float (ce qui veux donc dire que tu as déjà testé pour tous les autres types), je pense que le problème vient uniquement de la fonction sprintf qui n'est pas sensé fonctionner avec des float.

      J'ai une idée de solution, ce serais de multiplier ta valeur flottante par 10, 100, 1000 suivant le nombre de chiffre significatif que tu souhaite garder, et d'envoyer a la place une variable de type int.

      • Partager sur Facebook
      • Partager sur Twitter
        15 décembre 2013 à 16:46:40

        Je confirme, le support de sprintf n'est que partiel chez Arduino et du coup ca merde avec des float, il faut ruser...

        • Partager sur Facebook
        • Partager sur Twitter

        Retrouvez moi sur mon blog et ma chaine Youtube !

          15 décembre 2013 à 19:23:00

          Salut

          Je n'ai jamais utiliser d'arduino, mais éssaies de l'envoyer en ascii (chaine de caractère)

          puis reconverti-le à la reception

          Cordialement

          • Partager sur Facebook
          • Partager sur Twitter
          Il n'y a pas de honte à ne pas savoir (faire) quelque chose que l'on n'a pas appris

          transmettr un float un émetteur et récepteur 432

          × 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