新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > Arduino與LabVIEW互動應用

        Arduino與LabVIEW互動應用

        作者: 時間:2017-01-06 來源:網絡 收藏
        Arduino的源代碼如下所示:

        #define LED_ON_COMMAND 0x10 //打開LED命令字
        #define LED_OFF_COMMAND 0x20 //關閉LED命令字
        unsigned int comdata[3]; //定義數組數據,存放串口命令數據
        int led = 13; //定義LED連接的管腳
        int ON_mark=0; //定義ON 的標志位
        int OFF_mark=0; //定義OFF的標志位
        void receive_data(void); //接受串口數據
        void test_data(void); //測試串口數據是否正確,并更新數據
        void do_command(void); //執行更新的數據
        void setup()
        {
        Serial.begin(9600);
        pinMode(led, OUTPUT);
        }
        void loop()
        {
        while (Serial.available() > 0) //不斷檢測串口是否有數據
        {
        receive_data(); //接受串口數據
        test_data(); //測試數據是否正確并更新數據
        do_command(); //執行更新的數據
        }
        }
        void receive_data(void)
        {
        int i ;
        for(i=0;i<3;i++)
        {
        comdata[i] =(unsigned char)(Serial.read());
        //延時一會,讓串口緩存準備好下一個字節,不延時可能會導致數據丟失,
        delay(2);
        }
        }
        void test_data(void) //驗證命令的正確性
        {
        if(comdata[0] == 0x55) //0x55和0xAA均為判斷是否為有效命令
        {
        if(comdata[1] == 0xAA)
        {
        switch(comdata[2])
        {
        case LED_ON_COMMAND:
        {
        ON_mark=1; //ON數據更新位置位
        }
        case LED_OFF_COMMAND:
        {
        OFF_mark=1; //OFF數據更新位置位
        }
        }
        }
        }
        }
        void do_command(void) //執行命令
        {
        if(OFF_mark==1)
        {
        OFF_mark=0; //復位OFF更新位
        digitalWrite(led, LOW); //關閉LED燈
        }
        if(ON_mark==1)
        {
        ON_mark=0; //復位ON 更新位
        digitalWrite(led, HIGH); //打開LED燈
        }
        }
        2、LabVIEW部分
        LabVIEW上位機部分擔任主機,Arduino UNO作為下位機接收上位機發送的命令,并執行命令。LabVIEW只需要完成命令的發送,此處僅使用了LabVIEW的串口數據發送功能。LabVIEW的串口設置見。
        LabVIEW程序包括兩個部分:前面板和程序框圖,前面板如圖6所示,程序框圖如圖7、8、9所示。
        圖6LabVIEW前面板
        圖7LabVIEW程序框圖1
        圖8LabVIEW程序框圖2
        圖9LabVIEW程序框圖3
        3、實驗與演示
        利用虛擬串口技術,基于Proteus的Arduino UNO與LabVIEW串口通訊控制LED的視頻如下:
        基于Arduino Leonardo與LabVIEW的實物演示視頻如下:
        4、結束語
        利用虛擬串口技術,實現了Proteus仿真環境下的Arduino UNO與LabVIEW串口通訊,并自定義了通訊協議,以保證通訊的可靠性。

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 邮箱| 新民市| 汨罗市| 射阳县| 通海县| 寿阳县| 政和县| 洛宁县| 衡南县| 太湖县| 香港 | 涞源县| 福泉市| 光山县| 宣城市| 深泽县| 分宜县| 平凉市| 七台河市| 维西| 霍山县| 东方市| 宕昌县| 乌兰浩特市| 隆安县| 来宾市| 元氏县| 金华市| 湖南省| 交口县| 平度市| 新邵县| 竹溪县| 宁明县| 桓台县| 永定县| 曲周县| 旬阳县| 新丰县| 平定县| 迭部县|