Lecture et exploitation des données sur LCD

Bonsoir :slight_smile:

Je continue gentiment mon premier projet et ai pu extraire les données qui m'intéressaient:

-La température extérieure avec capteur DS18B20 (sonde déportée)
-La température intérieure avec capteur BMP280
-La pression atmosphérique avec capteur BMP280
-Le taux d'humidité avec capteur DHT11

Le tout connecté sur un contrôleur Arduino Nano.

Je lis mes données sur le moniteur série. J'en suis là.

J'aimerais avoir, si cela vous est possible quelques pistes concernant les points suivants:

-Les données du moniteur série sont très bien, dans l'optique de créer des courbes mais il faudrait pouvoir dissocier la pression atmosphérique car l'axe des ordonnées est très long et rend illisible les autres mesures (qui sont relativement "proches" de l'origine). En tout cas sur le traceur série.
Alors faut-il passer par un tableur (LibreOffice Calc) et comment (les tutos trouvés jusqu'à maintenant ne fonctionnent pas)?

-Le rafraîchissement actuel est réglé à 5000 millis sur le moniteur série. Existe-t-il parallèlement une possibilité d'afficher les valeurs en temps réel, sans création d'une nouvelle ligne à chaque mesure?
Un peu comme on lit sur un thermomètre digital?

Il est intéressant d'avoir d'un côté l'historique pour créer une courbe de tendance sur par exemple les dernières 36 heurs et une lecture temps réel.
-Ceci conduit naturellement à l'interface d'affichage.
Les afficheurs LCD que je connais ont deux lignes de 16 caractères; c'est bien peu.
Dois-je envisager de coûte que coûte faire tenir mes données dans 16 caractères et faire basculer les affichages avec un bouton pour avoir deux fois deux écrans de deux lignes?
Un défilement? Mais alors lisibilité très moyenne.
Autre solution?

-J'ai dans un coin un vieux PDA IPAQ, puis-je en exploiter l'écran avec mon contrôleur Nano, quitte à le démonter? Il me faudrait alors bricoler une interface graphique en VBA pour avoir un truc présentable, non?

Voici en fichiers joint mon bricolage.

Qu'en pensez vous?

Merci de m'avoir lu :wink:

[Edit: mise à jour du sujet]

Thermo-barometre.ino (1.55 KB)

Pour tes courbes, je ne pense pas qu'il soit possible d'avoir deux axes des ordonnées différents. Tu peux par contre normaliser tes valeurs pour qu'elles soient toutes dans un même secteur. La fonction map fait ça très bien.

Pour accélérer ton code tu peux enlever le delay (5000) ou diminuer la valeur par exemple delay(100).

Pour éviter les problèmes d'affichage, tu peux passer sur un écran OLED ou TFT. J'ai peur que le nano ne soit pas assez puissant pour ton PDA.

Merci beaucoup.
Je vais me documenter sur cette fonction map et ces affichages dont tu me parles.

Le delay, j'aimerais le garder pour la fabrication de mes courbes, grâce à la création de l'historique.
Je cherche à obtenir un affichage temps réel pour avoir les infos du moment, et de manière séparée pour éviter justement cette création incessante de lignes.
Un peu comme si je voulais afficher ma météo sur mon bureau à l'aide de Conky (Je suis sous Ubuntu)
D'ailleurs j'y pense juste, Conky est peut être capable d'aller pêcher les données des capteurs??

Sujet mis à jour car j'ai choisi d'avancer sur la voie de l'affichage LCD deux lignes de 16 caractères, [avec un bouton pour basculer entre un premier écran (T° intérieure et extérieure) et un second (Pression et Taux humidité) mais c'est la prochaine étape].

(L'affichage dans le moniteur série est tout bon)

J'ai connecté mon LCD, qui fonctionne bien en lui même.
Par contre j'ai un souci au niveau du code (voir Thermo-barometre_V2pour_LCD_Forum.ino joint).

-En ligne 1 du LCD, la température extérieure est affichée mais ne s'actualise pas
-En ligne 2 du LCD, la température intérieure est affichée et actualisée, mais après le C de °C, il y a le T° de l'actualisation suivante.

Je n'arrive pas à afficher la température en temps réel, sans création de nouvelle ligne

Qui pourrait m'aider à résoudre ce souci?

Thermo-barometre_V2_pour_LCD_Forum.ino (2.25 KB)

oui, là d'un tour de loop à l'autre tu ne te replace pas au début de l'écran, donc seule la première fois la première ligne est écrite, ensuite ça écrit tout sur la sseconde.

place un lcd.clear(); au début de loop() par exemple.

Super sympa, merci beaucoup!