資料線 Data Wire
相信大家對於NXT樂高機器人程式設計的資料線(Data Wire)並不陌生,邱老師在『NXT樂高機器人:創意樂趣,隨心所欲』書中也有提到資料線的基本使用方式。
資料流在LabVIEW圖控程式中是非常重要的觀念,資料線(Data Wire)可以在命令方塊間傳遞數字,文字及邏輯值。正是實踐資料流的元件。NXT-G或EV3軟體當然也繼承這種概念。
第一個範例
今天邱老師要跟大家分享的是資料線的應用,請看下面的程式圖片:
這個程式想知道A馬達旋轉一秒後的角度變化,作法是:
1. 讀取A馬達內建的角度感應器數值,
2. 放入Number 1 變數箱,
3. 馬達旋轉一秒鐘以後,
4. 再讀取A馬達角度感應器的數值,
5. 減去存放在Number 1的數值,
6. 顯示在NXT主機螢幕上。
這是非常符合基本流程的想法,但是資料線提供更有效率的方式。請看下圖:
因為有了資料線,對於這種需要知道差異的情況,我們不再需要依賴變數,可以直接利用資料線,將馬達旋轉前後的角度數值,放在一起處理運算。程式看起來也清爽許多。
另外一個範例
下面是另外一個範例,在固定時間的迴圈中,想知道迴圈的執行次數,
很直覺的方式就是利用變數加一,計算迴圈次數。如下圖:
(迴圈中的角度感應器命令方塊只是示範,沒有其他用途。)
這時迴圈裡的Count接頭就發揮作用,直接使用資料線將Count接頭的計數數值,拉到迴圈外加以利用(這個範例是顯示在NXT主機螢幕),如下圖:
值得注意的是:迴圈計數是從0開始,千萬不要弄錯。
這樣的程式設計方式,還可以節省「變數加一」的程式執行時間,加速迴圈的運作,在相同的時間內,迴圈執行的次數會更多,程式也比較有效率。
可以再想一想
資料線還可以發展出許多技巧,幫助我們寫出更棒的程式,
歡迎討論及分享你的密技。
沒有留言:
張貼留言
探奇歡迎大家留言討論!謝謝分享你的意見。