Concaténer 2 int

Bonsoir à tous,

Dans mon code, je veux récupérer la dernière valeur enregistrée sur ma carte SD.
Dans un premier temps, je me place dans mon fichier à la hauteur des dernières données.
Ensuite je commence a remplir un tableau qui contient à chaque fois le caractère lu.

Mon problème est que la mesure d’humidité est composée du caractère 0 et 1 du tableau.
Je voudrais donc les concaténer pour obtenir ‘61’ or avec mon code j’obtiens ‘103’.

Je comprends que c’est un problème de déclaration de variable et du fait que mon code interprète le ‘+’ comme l’opérateur de sommation mais j’ai beau chercher, je tourne en rond… Est ce que qqun aurait la solution pour moi ?

if (myFile) 
  {
    FileSize = myFile.size();
    Curseur = FileSize - 7;

    myFile.seek(Curseur);
    while (myFile.available())
    {
      for (i=0; i<=6; i++)
      {
        Chaine[i]=myFile.read();
        Serial.println(Chaine[i]);
      }
      Serial.print("La derniere mesure d'humidite est de : ");
      int sHumidite = Chaine[0] + Chaine[1];
      Serial.println(sHumidite);
    }
    myFile.close();
  }

Le while ne sert rien dans votre code puisque vous avez la boucle for

En supposant que vous lisiez les bons caractères (pourquoi le -7? Ça devrait dépende se si la dernière humidité tenait sur un deux ou 3 digits) votre tableau contient la représentation ascii de chaque élément lu.

0 est codé en décimal par 48, 1 par 49 etc donc quand vous faites cela

      int sHumidite = Chaine[0] + Chaine[1];

Vous additionnez des valeurs ascii... donc ça donne n'importe quoi ( '6' est codé par 54 et '1' par 49 donc '6' + '1' ça fait bien 54+49=103. C'est de que vous voyez)

Il faut faire   int sHumidite = 10*(Chaine[0]-'0') + (Chaine[1]-'0');

en effet Chaine[0]-'0' ça veut dire la représentation numérique en ascii du premier caractère moins la représentation du caractère '0' --> ça vous donne en numérique la valeur du caractère '6' devient le;chiffre 6, idem pour le '1' qui devient le chiffre 1, ensuite suffit de faire la multiplication 6 * 10 + 1 pour trouver 61

OK?

Merci J-M-L !

Décidément vous m'êtes encore d'une grande aide ;)

J'avais déjà utilisé cette méthode il y 4-5 ans en cours de C# mais j'avoue ne pas y avoir pensé, or que je savais pertinemment que les caractères me revenaient en Ascii ...

Le '-7' vient simplement du fait que la mesure de température et d'humidité sont les dernières infos de ma ligne et qu'elles constituent au total 7 caractères :)

Ok

Pour le -7 comment pouvez vous être sûr? Si l'humidité c'st 9% et la température 4 degrés par exemple, ça ne va pas prendre le même nombre de caractères que 100% et 35 degrés

Vous de manière forcer des 0 ou des blancs pour garantir que ça tient sur 7 charactères? (C'est facilement faisable, mais juste comme ça en passant pour m'assurer que vous avez prévu le coup, c'est un bug classique :) )

oui oui tout cela est prévu ;)

En effet j'ajoute des 0 pour les mesures en dessous de 10 !

Et théoriquement le dht11 mesure l'humidité entre 20 et 80% donc je suis à l'aise :) maintenant l'humidité n'est clairement primordiale dans le projet, c'est surtout le poids et la température qui sont contrôlés

et la température qui sont contrôlés

Pour le produit final un DHT22 sera préférable : même bibliothèque mais bien meilleure qualité et précision.