08-21-2022 02:56 AM
Bonjour.
Je suis enseignant et ultra novice avec Labview,
J'ai souhaité faire un .exe pour que mes élèves puissent voir en temps réel le tracé d'un graphique montrant la température en fonction du temps (expériences de changement d'état de l'eau par exemple).
L'acquisition des données se fait avec un arduino et une sonde ds18b20. Les élèves programment l'arduino à l'aide de mblock. Les valeurs de température sont affichées sur le port série.
Avec Labview, j'ai fait (ou plutôt copié sur la toile puis arrangé à ma façon) un VI qui récupère les données du port série et affiche la température et trace le graphique de son évolution au cours du temps.
Tout marche bien, mais je suis têtu et perfectionniste.
Le problème, c'est que j'initialise le registre à décalage avec une valeur (0 dans cet exemple) et donc, le premier point sur le graphique a pour valeur 0.
Ci-joint une copie d'écran du graphe et mon VI.
Comment faire pour que la première valeur sur le graphique soit bien une mesure et non une valeur arbitraire ?
idée : Il faudrait attendre une itération de la boucle while peut-être, avant de lancer le graphique, mais je ne sais pas comment faire.
MERCI D'AVANCE pour votre aide.
Solved! Go to Solution.
08-21-2022 01:35 PM - edited 08-21-2022 01:36 PM
Hi Solar,
@Spectrosolar wrote:
It's all good, but I'm stubborn and a perfectionist. The problem is that I initialize the shift register with a value (0 in this example) and therefore, the first point on the graph has a value of 0. Attached is a screenshot of the graph and my VI. How to make the first value on the graph really be a measure and not an arbitrary value?
There's not so much "all good", but a lot of apparently LabVIEW beginner mistakes!
The answer to your question is really easy: don't initialize the array to already contain an element with the value "zero"! Initialize with an empty array (s you do with that other shift register)!
08-21-2022 04:12 PM
Merci pour votre réponse.
En effet, je suis débutant, donc je fais des erreurs de débutant 🙂
- le "wait time" c'est pour avoir un chronomètre à la seconde (1000ms)
- le "diviser par 1", je l'ai laissé, car si je mets "wait time à 100ms", je "divise par 10" pour avoir un chronomètre au dixième de seconde.
Même si ce programme n'est pas bien fait, il fonctionne, donc pour l'instant, je m'en contente.
Pour mon principal problème, à savoir la première valeur à 0 sur le graphique, je n'ai pas compris votre réponse. Je ne sais pas comment initialiser avec un "empty array". Désolé, je débute vraiment.
Pouvez-vous être plus précis, et me guider davantage dans les icônes à utiliser dans chaque palette ? Relier quoi à quoi ? ou encore un "screenshot" ?
Merci encore pour votre aide.
ps : J'espère qu'on arrivera à communiquer, car j'écris en français, et le forum traduit en anglais.
08-21-2022 04:31 PM
J'ai trouvé cela :
"
You're probably using a Build Array . That gives you an array with a single element, zero.
What you want is an empty array constant:
To get this, select the Array Constant from the Array palette and place it on your diagram. Then, from the Numeric palette select the numeric constant and drop it inside the array. Right-click on the element in the array constant and select Representation (pick the correct numeric representation).
"
Mon problème est résolu. (Je sais, mon VI n'est pas bien fait, mais cela fonctionne, donc je suis content)
Merci beaucoup.
08-22-2022 12:35 AM
08-23-2022 04:40 PM
Merci beaucoup.