Arduino與LabVIEW互動(dòng)應(yīng)用
Arduino的源代碼如下所示:
#define LED_ON_COMMAND 0x10 //打開(kāi)LED命令字
#define LED_OFF_COMMAND 0x20 //關(guān)閉LED命令字
unsigned int comdata[3]; //定義數(shù)組數(shù)據(jù),存放串口命令數(shù)據(jù)
int led = 13; //定義LED連接的管腳
int ON_mark=0; //定義ON 的標(biāo)志位
int OFF_mark=0; //定義OFF的標(biāo)志位
void receive_data(void); //接受串口數(shù)據(jù)
void test_data(void); //測(cè)試串口數(shù)據(jù)是否正確,并更新數(shù)據(jù)
void do_command(void); //執(zhí)行更新的數(shù)據(jù)
void setup()
{ Serial.begin(9600); pinMode(led, OUTPUT);
}
void loop()
{ while (Serial.available() > 0) //不斷檢測(cè)串口是否有數(shù)據(jù) { receive_data(); //接受串口數(shù)據(jù) test_data(); //測(cè)試數(shù)據(jù)是否正確并更新數(shù)據(jù) do_command(); //執(zhí)行更新的數(shù)據(jù) }
}
void receive_data(void)
{ int i ; for(i=0;i<3;i++) { comdata[i] =(unsigned char)(Serial.read()); //延時(shí)一會(huì),讓串口緩存準(zhǔn)備好下一個(gè)字節(jié),不延時(shí)可能會(huì)導(dǎo)致數(shù)據(jù)丟失, delay(2); }
}
void test_data(void) //驗(yàn)證命令的正確性
{ if(comdata[0] == 0x55) //0x55和0xAA均為判斷是否為有效命令 { if(comdata[1] == 0xAA) { switch(comdata[2]) { case LED_ON_COMMAND: { ON_mark=1; //ON數(shù)據(jù)更新位置位 } case LED_OFF_COMMAND: { OFF_mark=1; //OFF數(shù)據(jù)更新位置位 } } } }
}
void do_command(void) //執(zhí)行命令
{ if(OFF_mark==1) { OFF_mark=0; //復(fù)位OFF更新位 digitalWrite(led, LOW); //關(guān)閉LED燈 } if(ON_mark==1) { ON_mark=0; //復(fù)位ON 更新位 digitalWrite(led, HIGH); //打開(kāi)LED燈 }
}
2、LabVIEW部分
LabVIEW上位機(jī)部分擔(dān)任主機(jī),Arduino UNO作為下位機(jī)接收上位機(jī)發(fā)送的命令,并執(zhí)行命令。LabVIEW只需要完成命令的發(fā)送,此處僅使用了LabVIEW的串口數(shù)據(jù)發(fā)送功能。LabVIEW的串口設(shè)置見(jiàn)。
LabVIEW程序包括兩個(gè)部分:前面板和程序框圖,前面板如圖6所示,程序框圖如圖7、8、9所示。
圖6 LabVIEW前面板
圖7 LabVIEW程序框圖1
圖8 LabVIEW程序框圖2
圖9 LabVIEW程序框圖3
3、實(shí)驗(yàn)與演示
利用虛擬串口技術(shù),基于Proteus的Arduino UNO與LabVIEW串口通訊控制LED的視頻如下: 基于Arduino Leonardo與LabVIEW的實(shí)物演示視頻如下:
4、結(jié)束語(yǔ)
利用虛擬串口技術(shù),實(shí)現(xiàn)了Proteus仿真環(huán)境下的Arduino UNO與LabVIEW串口通訊,并自定義了通訊協(xié)議,以保證通訊的可靠性。
關(guān)鍵詞:
ArduinoLabVIEW互動(dòng)應(yīng)
相關(guān)推薦
技術(shù)專(zhuān)區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車(chē)電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論