microLIFA 
LabVIEW 
+ 
AVR microcontroller 
& 
Arduino 
Koji Ohashi 
日本LabVIEWユーザー会 北東北支部作ろう会http://labview.exblog.jp
LINX 
LabVIEW INterface 
for X(chipKIT, Arduino 
and myRIO) 
LIFA 
LabVIEW Interface For Arduino 
MicroLIFA Subset of LIFA
LIFA VIsとLIFA_Base
LIFAを使えば 
Arduinoを安価なIOとして活用できる!! 
デジタルIO(ピン/ポート), アナログIn(ピン/ 
ポート), PWM(ピン/ポート), トーン, サーボ 
モーター/ステッピングモーター, SPI, I2C 
とIR通信, LCD表示器など 
Arduino UNOなどサポートされているボードを使っている限 
り豊富な機能はじゃまにはならないが、、、 
使わない機能を省いて、 
LIFAのエッセンスだけを残せば 
どんなArduinoでもIOとして使う事ができる 
microLIFA
LIFAのエッセンスは 
シリアル通信のフォーマット (LabVIEW side) 
Packetize.viがコマンドとパラメータを固定長の文 
字列にパケット化
LIFAのエッセンスは 
シリアル通信のフォーマット (Arduino side) 
LabVIEWInterface.inoの 
processCommand(unsigned char command[]) 
switch文でおよそ50個 
のコマンドに対応
通信フォーマット 
15byte(デフォルト)固定長 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
255 CMD Data Data Data Data Data Data Data Data Data Data Data Data CS 
先頭は常に255、最後尾はチェックサム、2バイ 
ト目がSwitchの分岐で用いられる数値(コマン 
ド)、3バイト目から14バイト目はコマンド付随す 
るデータでデフォルトは0となっている。 
例えばアナログ(PWM)出力で11pinから124で出 
力する場合は次のようなデータを送る 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
255 10 11 124 0 0 0 0 0 0 0 0 0 0 144
Arduinoでシリアルデータを受ける 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
255 10 11 124 0 0 0 0 0 0 0 0 0 0 144 
int checkForCommand(void) 
{ 
int buferBytes = Serial.available(); 
if(buferBytes >= COMMANDLENGTH) 
{ 
for(int i=0; i<COMMANDLENGTH; i++) 
{ 
currentCommand[i] = Serial.read(); 
} 
processCommand(currentCommand); 
return 1; 
} 
else 
{ 
return 0; 
} 
} 
但し、COMMANDLENGTHは15 
void processCommand(unsigned char command[]) 
{ 
// Determine Command 
if(command[0] == 0xFF && checksum_Test(command) == 0) 
{ 
switch(command[1]) 
{ 
case 0x00: // Sync Packet 
Serial.print("sync"); 
//digitalWrite(led, HIGH); 
Serial.fush(); 
break; 
: 
: 
case 0x0A: // PWM Write Pin 
analogWrite(command[2], command[3]); 
Serial.write('0'); 
break; 
: 
: 
} 
} 
else{ 
Serial.fush(); 
} 
}
使わない機能を省いて、 
LIFAのエッセンスだけを残せば 
どんなArduinoでもIOとして使う事ができる 
microLIFA 
デジタルIO, アナログIn, PWM出力を残した 
見通しの良いスケッチはArduinoプログラム 
との混在もストレスがない 
LabVIEW側のLIFA VIsはボード種類の 
チェック機能を削除して、シリアルやTCPで 
データを送る
USB接続版のmicroLIFA 
•ATMega328P-PU(Arduinoブートローダ書き込み済み/内蔵CR発振8MHz版) 
•FT231X USBシリアル変換モジュール 
•RGB LED (LIFA制御) 
•LED(Arduino制御) 
•I2C LCD(Arduino制御)
USB接続版のmicroLIFA 
•ボーレートは57600ボー、3.3V内蔵8MHzでは上限のようだ
XBee接続版のmicroLIFA 
•ATMega328P-PU(Arduinoブートローダ書き込み済み/内蔵CR発振8MHz版) 
•XBee WiFi (S6B) + XBee用2.54mmピッチ変換基板 
•RGB LED (LIFA制御) 
•LED(Arduino制御) 
•I2C LCD(Arduino制御)
XBee接続版のmicroLIFA 
•TCPを使用する点だけが異なるが、PCとつながれていないのがとても良い
LIFAのエッセンスだけを残してArduinoと 
LabVIEWの融合を楽しもう。 
microLIFA 
Koji Ohashi 
http://labview.exblog.jp 
日本LabVIEWユーザー会 北東北支部作ろう会

microLIFA for LabVIEW & Arduino User