[RESOLU] format de variable CAN-BUS

Bonsoir,

Me revoilou,

Dans le sketch visible avec le lien : http://jp-jacobee.fr/CAN_BUS/CanSend_TP_ByPGN/CanSend_TP_ByPGN.ino Je ne parviens pas à faire fonctionner les variables T et P qui ont chargé les valeurs de pression et temperature dans la fonction void "Lecture_BMP180(void)" ligne 248 pour les transmettre au corps du programme lignes : ligne 163 float tempac = (T, 1); // Celsius Air Temp (test 23.7 ok) et ligne 168 long pression = (P, 0); // Prseure mb (test 1017 ok) En remplacant (T, 1) et (P,0) par les nombres 23.7 et 1017 le programme CAN-BUS transmet bien les valeurs qui s'affichent sur l'écran connecté au bus. Mais en mettant le nom des variables contenant les mêmes valeurs ça ne colle pas. Avec un serial print ça passe bien. J'ai peur que mon explication soit confuse. Pour éclairer les esprits il s'agit de récupérer les données d'un module pression atmosph. et temperature connecté en I2C au shield can-bus qui est censé envoyer ces données sur un bus NMEA 2000 (bus CAN Marine) afin de les afficher sur un ecran multifonction. Je pense avoir atteint mon seuil d'incompétence et m'en remet à celui qui aurait une idée sur la façon de reformater les deux datas afin qu'elles soient bien transmises. La boucle principale du sketch contient le traitement de communication avec le bus. En dessous c'est la fonction qui récupère les données dans le module pression/temperature. Je vous remercie pour un éventuel coup de main. jp

Je ne parle Francais mais... float tempac = (T, 1) ? qu'est-ce que cela fait?

Merci pour votre réponse et l'intérêt que vous portez à mon problème.

(T, 1) est la variable (float) température (Kelvin) sur 16bits avec une décimale provenant du capteur BMP180. Je crois que BMP180 délivre T en Celcius. Je vais modifier la ligne 164 pour supprimer tempak. Elle est transmise à long tempak après conversion en Celcius; Puis divisé en deux mots : long tempa1 et long tempa2 (temperature air 1 et 2) pour être envoyés sur le bus CAN ligne 216. Il en est de même pour P (pression atmosphérique).

Salut,

En fait je comprend pas trop ce que tu veux faire avec

float tempac = (T, 1)

Je suis même surpris que le compilateur ne renvoi pas d'erreur ...

Salut B@tto,

En effet tu as raison et c'est ça qui m'a fait perdre une journée. Ce matin l'esprit plus clair j'ai essayé de passer avec T et P sans artifices et c'est bon. L'expression (T, 1) utilisé avec serial.print permet d'afficher une seule décimale pour 1, deux pour 2 etc... Ca m'a induit en erreur.

Voici le résultat ; bien entendu vu la profondeur du verre l'indication ne sort pas mais le problème n'etait pas là. Pas d'indication de vent non plus, je suis chez moi, pas sur le bateau. On a donc bien la PA et la temp Air. Merci pour la réponse