この記事で扱っていること
- 7セグメントディスプレイを作る方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
LabVIEWプログラム上で数字を表わす場合、真っ先に思い浮かぶのは数値制御器/表示器だと思いますが、次には文字列制御器/表示器に文字として数字を表示する方法でしょうか?
これ以外のデータタイプで数字を表わすとなると・・・ブールのLEDの出番ですね。
7個のセグメントを長方形LEDで用意し、これらで0~9までの数字を表わす、というものです。
配列でLEDを表わしてできなくはないですが、「この数字の時にはここをTRUEにして」などと考えるのを2次元配列に対して指定する必要があるため面倒です。本記事の方法でも結局配列が途中で出てきますが1次元配列で指定できるので多少はやりやすいと思います。
というわけで、ベースはクラスタを使用して、7セグメントディスプレイを作ってみました。
どんな結果になるか
フロントパネルには7セグメントディスプレイとここに表示させたい数値を指定する数値制御器を置いています。
実行すると指定した数値に応じて7セグメントディスプレイのLEDのパターンが変わります。
プログラムの構造
そもそも7セグメントディスプレイをどう表現しているかというと、これはクラスタの中にブール表示器のLEDタイプを乗せているだけです。
いくつかの7セグメントディスプレイをまとめて表示するために、「どのLEDをTRUEにしてどれをFALSEにするか」を決める部分はサブVIとして使いまわせるようにしています。
このサブVIの中身は以下の通りで、クラスタの中の要素を最初1次元配列として指定しています。
1次元の数値の配列で、どのブールを光らせるか(TRUEにするか)の番号を指定し、Forループの中で1D配列検索によって0~6までのそれぞれの数字が数値配列に入っているかという情報を自動指標付け有効で取り出し、この配列をクラスタに変換しています。
配列からクラスタに変換する際にはこの関数をダブルクリックして要素数を7と指定する必要があります。
それぞれの数字を表わすために0~9までの全10ケースで異なる数値配列を用意しておきます。
時間を表示させる
7セグメントディスプレイは数値を表わすのに使用できるのですが、計算を行うというよりは何か具体的なデータを単に示すために使用することと思います。
そのデータとして時間を表わすようにする場合には、例えば以下のような組み方が考えられます。
カウントダウンを行う
また、カウントダウンタイマー的な使い方もできます。
注意点としては、例えば4つのディスプレイを持っている場合に、2桁の数字を表わす際には上位2桁を0にする必要があることです。
単純なカウントダウンであれば数値データで例えば「25」と表すところを、「0025」と表す必要があるのでどのように「余分な」0を付け加えるかを考えます。
・・・もっといい組み方があるような気もしますが、以下の図のような形で一応表現はできます。
この記事では7セグメントディスプレイを用意して数字を表現する方法を紹介しました。指定する際には1次元配列が単純で、表示する際にはクラスタで、がそれぞれ楽だったので、配列をクラスタに変換する関数を使用することで両データタイプの橋渡しをするという組み方にしています。参考にしてもらえたらうれしいです。
ここまで読んでいただきありがとうございました。
コメント