12-01-2021 03:46 AM
LabVIEW CommunityのMac版はLINXが動きません。
「プログラミングを楽しもう」の第7章はLINX無しでArduinoとの連携が楽しめる例なのですが、第5章と第6章はMacでは動きません。Arduino用のLINXはパフォーマンスが良くないのでMac用が無くともさほど痛手ではないのですが、「プログラミングを楽しもう」の第5章と第6章を読む気が失せてしまうのはもったいないことです。
そこで、LINXを使わないLEDのVI特性測定プログラムを作りました。この方法は、Windows版、Linux版を使っている人もパフォーマンスが向上するので役に立つのではないかと思います。
Arduinoのアナログ入力A0,A1,A2で測定した値をCSV(カンマ区切りの数値列)文字列にしてシリアルプリントします。これはArduinoのサンプルプログラムを少し改造するだけでできます。
LabVIEWプログラムで受け取るプログラムは第7章と同じ要領でキューを使った生産者消費者デザインパターンで作成するのが楽です。
Arduinoプログラムの改造過程は以下のようなものです。
「Sample_AnalogReadSerial.ino」Arduinoの1chアナログ入力のプログラム例
「AnalogReadSerial3ch.ino」上記を3chに拡張
「AnalogRead3chCSV-Str.ino」CSV文字列に変更
「my_AnalogRead3ch10ms.ino」10msec間隔で文字列を送信するように追加
my_AnalogRead3ch10ms.inoのプログラム
void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
}
// the loop routine runs over and over again forever:
void loop() {
float t = micros();
// read the input on analog pin 0,1,2:
int sensorValue0 = analogRead(A0);
int sensorValue1 = analogRead(A1);
int sensorValue2 = analogRead(A2);
// print out the value you read:
Serial.print(sensorValue0);
Serial.print(",");
Serial.print(sensorValue1);
Serial.print(",");
Serial.println(sensorValue2);
while((micros()-t)<10000){}
//wait 10ms
}
LabVIEWの読み取りプログラムもサンプルから改造していきます。Mac版ではLabVIEW Communityをインストールしただけではシリアル通信を行う「NI-VISA」はインストールされませんでしたので、以下からダウンロードしてください。Windows版はLINXと同時にインストールされるようです。
https://www.ni.com/ja-jp/support/downloads/drivers/download.ni-visa.html#409839
シリアル受信プログラムの改造過程は以下の通りです。
「Continuous Serial Write and Read.vi」サンプルプログラム
「Continuous Serial Read.vi」送信部分を削除
「Continuous Serial Read CSV str.vi」文字列を数値配列に変換
Continuous Serial Read CSV str.viのブロックダイアグラム
Arduinoからは0-1023で送られてきますので、0-5Vに変換しています。このデータをキューで送れば良いのです。LINXでデータを受け取っていた部分に渡すだけですから改造も簡単です。
最終的なプログラムは「第6章のプログラム(withoutLINX)」フォルダに入っています。
Windows版で作ったVIをMac版で開くと制御器・表示器のラベルが文字化けしてしまいます。深くて暗い川がある🎶
キャプションは文字化けしないようなので、今回はそれを使ってみました。グラフ内の軸名などは逃げようがなかったのでアルファベットにしました。