Bonjour, je m'appelle Clément et suis actuellement en terminale STI2D SIN.
Je travaille actuellement sur mon projet de bac qui a pour but de connaitre l'état de santé d'une ruche grâce à des capteurs de poids, de température et d'humidité.
Ma partie consiste à envoyer ces valeurs par bluetooth à un shield ethernet et une arduino, pour ensuite les comparer avec des valeurs seuils entrées par l'apiculteur et les afficher sur un site.
Etant débutant en C j'ai réussi à envoyer une variable, la recevoir et l'afficher dans le moniteur série, mais je n'y arrive pas lorsque ma variable est un nombre à virgule, le moniteur ne m'affiche que la valeur entière.
De plus, je vais devoir envoyer les valeurs de chaque capteur, et à la réception les différencier et mettre chaque valeur dans une variable différente.
D'après ce que je lis dans les classes Stream et Print, la méthode read() renvoit un int et pas un float. De plus write va convertir ton flottant en entier (en byte en fait). Les deux méthodes sont inappropriées
En émission, il est préférable d'utiliser println pour que le flottant soit converti en chaine de caractère. En effet, rien ne prouve que les nombres soient codés de la même manière côté émetteur et côté récepteur. Il est donc préférable de passer en ASCII (pour ce genre d'appli, l'augmentation du nombre d'octets envoyés n'est pas critique)
En réception, faire
e = bluetooth.parseFloat();
plutôt
Concernant la seconde question, il va falloir faire un petit protocole. Par exemple au lieu d'envoyer un flottant tout seul, tu envoies un caractère pour l'identifier puis le flottant.
Par exemple pour envoyer une température tu préfixes par la lettre T, l'humidité par la lettre H, etc.