LabVIEW日記Vol.3 Whileループ
前回はLabVIEWでForループを使ったサイコロプログラムを作成しました.
今回はWhileループを使って,乱数を繰り返し生成し,ゲージで表示するプログラムを作成します.
参考文献はこちらです.一部のみを扱っているので,より詳細な内容を知りたい方はぜひ購入してみましょう.
ブロックダイアグラムウィンドウを右クリックし,関数パレットのストラクチャからWhileループを選択します.
![](https://assets.st-note.com/img/1735960044-jITO07yrx93dcAWEfe5BMwbN.png?width=1200)
Whileループを適当な大きさでブロックダイアグラムウィンドウに配置します.
左下には現在の繰り返し回数を示すアイコンiがあります.
右下の赤丸アイコンはループ条件を設定するためのものです.
![](https://assets.st-note.com/img/1735960131-6P84tdoslYTyJ12Q0FKBwbup.png?width=1200)
右下のアイコンを右クリックするとループ条件が選択できます.現在,Stop if True(Trueの場合,停止) にチェックが入っています.今回はそのままで大丈夫ですが,必要に応じて条件を変更します.また,条件を変えればアイコンも変化します.
![](https://assets.st-note.com/img/1735960309-24mdfy5ANI6oCzME3D9jQniW.png)
先ほどのアイコンを右クリックすると,Create Control(制御器を作成)という選択肢があります.それをクリックすると,アイコンと制御器が配線されます.フロントパネルにはSTOPボタンが自動的に作成されています.
なお,同様の作業はフロントパネルで制御器パレット booleanからStop Buttonを配置することでも可能です.
![](https://assets.st-note.com/img/1735960683-QAZzrtH6kF3xKBuYX9o7PGis.png)
次に,フロントパネルを右クリックし,制御器パレット NumericからDialとGaugeを配置します.先ほど作成されたSTOPも適当な場所に移動させました.
![](https://assets.st-note.com/img/1735961060-f3poZSLwdm9QUJgvqecWPR2i.png?width=1200)
続いて,制御器パレット BooleanからRound LEDを選択し,配置します.
さらに,制御器パレット GraphからWaveform chartを選択し,配置します.
現在,5つの制御器がフロントパネルに表示されており,ブロックダイアグラムウィンドウにも反映されています.
![](https://assets.st-note.com/img/1735961265-8FJQIRMWTZSBGiqeEm9Uzg37.png?width=1200)
次はブロックダイアグラムウィンドウでの作業です.まずは配置がでたらめなので,下記のように整理します.
![](https://assets.st-note.com/img/1735961379-FMj1LvVPd2XYhZJTU5N9SgA6.png?width=1200)
次に,関数パレットから以下のノードを配置します.
Numeric→Random Number(0-1)
Comparison→Greater Or Equal?
Timing→Wait (ms)
さらに,Wait (ms)ノードの左側端子を右クリックして,Creat→Constantをクリックすると,数値定数が配線されます.
![](https://assets.st-note.com/img/1735961750-VC0aE7XUkQ1pJArtBZ5gRq68.png?width=1200)
これらを次のように配線でつなぎます.Randomの乱数情報はGauge,Waveform chart,比較器に繋がっています.また,比較器はDialの値も入力され,乱数とDialの値を比較し,乱数のほうが大きければBooleanに点灯信号を送るというフローになっています.
![](https://assets.st-note.com/img/1735961917-FJju6irCkDAf7Y5hVE0UPGBs.png?width=1200)
このとき,Rondom-Waveform間の配線とGauge-Greater間の配線同士も繋げてください.これは,配線を引っ張った状態で配線上にカーソルをあわせるとノードを出すことができます.
続いて,フロントパネルに戻って各種設定をおこないます.
まず,DialとGuageの名前をダブルクリックして,それぞれ警告値設定と出力値ゲージに変更します.
さらに,それぞれのメーター右下は最大値10が表示されています.これをダブルクリックし,値を入力するとメータの最大値を変更できます.
DIal,Guageともに最大値を1に変更します.
![](https://assets.st-note.com/img/1735962852-t8iX437mVGDgylZA1CTSxHzY.png?width=1200)
続いて,LEDの名前をBooleanから警告灯に変更します.また,アイコンの角にカーソルを合わせて引っ張ることで大きさを変更します.
その後,LEDアイコンを右クリックしてPropertiesをクリックします.
左下のColorsの緑部分をクリックすると,点灯時の色を変更できるので,今回は赤色を選択します.その後,OKを押して閉じます.
![](https://assets.st-note.com/img/1735963026-TM6wvjLNqf7V2WpeohQXn8lO.png?width=1200)
LEDをクリックして点灯させると赤色になりました.
![](https://assets.st-note.com/img/1735963164-A9LSO6fBbiQqrczTkv5728ZD.png?width=1200)
次に,Waveform Chartの名前を出力波形チャートに変更し,右下の100(x軸の最大値)をダブルクリックして60に変更します.ついでに警告灯をクリックして切っておきます.
![](https://assets.st-note.com/img/1735963366-kgUOuXKBb2TzeGq35Ds9NcZP.png?width=1200)
最後に,ブロックダイアグラムウィンドウのWait (ms)ノードにつながる数値定数を1000に設定して完成です.実行してみましょう.なお,プログラムを停止するにはフロントパネルのSTOPを押す必要があります.
![](https://assets.st-note.com/img/1735963462-NDhIcj3oMsQ2pXLgGtOwCf6R.png?width=1200)
プログラムを実行すると,1秒 (1000ミリ秒)ごとに乱数が生成され,その値が出力値ゲージに表示されるとともに,出力波形チャートにプロットされていきます.
また,警告灯が光り続けています.これは警告値設定のメーターを0にしているので,常に警告されています.
![](https://assets.st-note.com/img/1735964099-D3vhcGIJseWrkEnYU8QMaXTm.png?width=1200)
そこで,警告値設定のメーターをドラッグして0.6付近にしてみましょう.
また,出力波形チャートを右クリックしてData OperationsからClear Chartをクリックし,グラフを消去します.警告灯もOFFにしました.
![](https://assets.st-note.com/img/1735964435-aBGKN6iPSuYmhrxt9VO5n0jf.png?width=1200)
それでは実行してみましょう.
今度は,出力値ゲージが警告値設定の値より小さい場合,警告灯が消えていますね.
![](https://assets.st-note.com/img/1735964499-dt53XyCHcUP2Ya0QifBA8zm6.png?width=1200)