Aide conversion

Bonjour tout le monde :slight_smile:

Je réalise une station météo avec Arduino et Labview (logiciel de programmation), pour cela j'ai besoin de convertir un char en un byte, ce char correspond à la "sortie" d'un capteur de pression BMP180.

J'ai essayé d'utiliser la fonction byte(), mais je n'arrive pas à convertir ma variable nommée "h".

Quelqu'un a une solution?
Merci de votre aide.

myBMP.begin();
unsigned char h = (myBMP.getTemperature(), 1);
//byte("104"); //correspond au h en Ascii
Serial.println(h);

Pourrais-tu préciser quelle librairie tu utilises ?

unsigned char h = (myBMP.getTemperature(), 1);

Je me demande bien ce que produit cet appel, probablement pas grand chose.

Bonsoir,

J'utilise la librairie BMP180.h visible au lien suivant :

Cette commande me permets de récupérer les données ici de température, il y a la même commande pour la pression. J'utilise un unsigned char car il était présent dans un exemple de communication entre Arduino et Labview (via le plugin Linx )

Merci :slight_smile:

Un char et un byte c'est pareil (ou presque, faut voir si byte est unsigned ou signed).
Préoccupes toi de savoir ce que contient ta variable, avant de te préoccuper du conteneur en C.

unsigned char h = (myBMP.getTemperature(), 1);

C'est quoi ça, c'est du C++ ? ça compile sans erreur ? Moi je ne sais pas ce que ça fait (et il y a peu de chance que h contienne ce que tu crois).

Le prototype de la méthode :

float getTemperature();

Je ne comprends pas ton problème, et surtout ce que tu essaies de faire avec un char ou byte.

Bonjour :slight_smile:

Afin d'envoyer sur le logiciel Labview je dois avoir un byte et non un float ( effectivement le char était inutile, c'était une erreur de ma part). il me faut donc convertir ce float getTemperature() en un char.

Merci

byte temp = (byte)myBMP.getTemperature();

Cela s'appelle un cast.

Merci de votre réponse

Cependant la formule convertit en int et non en byte... :confused:

Un byte est un nombre sur 8 bits.
Si la température en float est de 25.123° le byte contiendra 25.

Je ne comprends pas ce que tu veux exactement.

Je dois envoyer sur Labview un byte dans un tableau, mais je ne peux simplement mettre 25 dans un tableau car le logiciel va comprendre 25 mais en ASCII (ce qui ne correspond pas au 25 décimal).

Un byte qui vaut 25 vaut 25, point barre. Cela n'a rien à voir avec une chaîne ASCII "25".
Affiche-le tu verras bien.

Tu nous expliques clairement ce qu'attends labview, et on te donne la solution.

Apparemment Labview attend une valeur réelle (c-à-d non entière), encodée comme une chaîne de caractères (par ex. "25.123") représentant une température exprimée en degrés Celsius.
La chaîne doit ou bien n'a pas besoin d'être terminée par un octet nul ?

Vrai ? Faux ? à toi de dire selon le manuel de Labview.