bonsoir, @dounexaf
pour commencer, bravo, c'est une excellente habitude de mettre des commentaires, mais tu devrais les lier aux [blocs d']outils auxquels ils se rapportent (j'y reviens plus loin ...)
puisque ton .INO est viable (si tu reçois les données auxquelles tu t'attends dans le Moniteur Série c'est qu'il fonctionne) je ne vais m'occuper que du VI.
pour le code-source C/C++, si quelqu'un d'autre se penche dessus (et les candidats ne doivent pas manquer sur ce forum) il pourra sans doute te conseiller d'autres façons d'écrire ou de faire, je me contenterai juste d'un détail : en ligne 39 tu déclares par exemple un bool State_bottom que tu n'utilises nulle part ailleurs ...
je vais maintenant lister ce qui me gène dans ton VI (ne le prends pas mal, même si mes propos te semblent un peu brusques, on m'a souvent reproché mon manque de tact ...)
ci-dessous, la liste des variables locales que tu utilises :
(cette liste ne contient
que les objets pour lesquels tu utilises des variables locales, pas ceux qui ne possèdent qu’
une seule occurrence dans ton VI, il se peut que d’autres objets portent également des noms identiques, je ne suis pas allé aussi loin)
LabVIEW sait gérer des objets différents aux noms identiques mais c’est dangereux car tu peux très bien ne pas avoir attribué la bonne variable locale à l’objet qui doit lui être associé : modifie donc les noms, pour qu’ils soient tous différents.
si, sur ta façade, deux objets doivent avoir le même libellé, préfère dans ce cas l’affichage de l’attribut
Caption à celui du
Label (qui correspond au
nom de l’objet).
peut-être même que certains de ces objets
devraient être les
mêmes mais que tu t’es emmêlé les pinceaux : tu as du travail pour retomber sur tes pattes, mais c’est indispensable.
un exemple d’ambiguïté :

tu as ci-dessus (dans ton Case "tension piézo fonction de…") une écriture dans un Graph et en même temps dans sa propre variable locale, alors que ci-dessous

(dans l’autre cas du même Case) tu écris dans l’autre Graph et la variable locale du premier !
je ne sais pas où est l’erreur, mais tu la trouveras …
autre truc pas très joli :

on ne sait pas d’où viennent et où vont certains flux.
pour nettoyer ton diagramme, il existe ce bouton, c’est un peu comme Ctrl-T dans l’IDE Arduino :

MAIS attention avant de t’en servir !
je te complimentais plus haut pour les commentaires, mais ils sont sous forme de texte libre et le nettoyage automatique ne les gardera pas à proximité des objets qu’ils concernent.
pour lier objets et commentaires je te conseille d’utiliser la Flat Sequence, comme ceci :

(j’ai regroupé au pif, le bloc n’est pas forcément correct)
en faisant un bloc des objets qui constituent une même fonction, non seulement ils resteront groupés visuellement, mais tu pourras ainsi utiliser le Subdiagram Label de la Flat Sequence qui, lui, ne bougera pas lors du nettoyage par rapport au reste de la fonction.
toujours dans cette dernière image :
le Feedback Node est un outil dangereux (je lui préfère le Shift Register, dont le comportement est prévisible, mais on verra ça une autre fois …)
de plus, je ne comprends pas ce que tu cherches à réaliser avec, sur un Decimal String To Number, en lui imposant une valeur par défaut en fonction de la donnée elle-même ? j’avoue que je ne vois pas ce que ça peut produire …
je m'arrête là, tu as déjà pas mal de boulot avec ces premières corrections à apporter.
la prochaine fois, fournis-moi un exemple des données telles qu'elles apparaissent dans le Moniteur Série (et, donc, telles qu'elles sont reçues par LabVIEW) : j'aimerais pouvoir effectuer des essais.
une explication sur les résultats espérés dans les affichages serait aussi la bienvenue.
bonne soirée, et porte-toi bien.