2011-01-02

【NXT-G教學文章】Switch Block的使用

有讀友來信:提到需要判別光源感應器的數值,控制機器人的動作。

他的程式如下圖的寫法:

結合光源感應器的讀值,再用Compare Block進行比較,最後透過資料線送給Switch Block。



當我看到程式的第一個反應是:『為什麼不直接利用Switch Block的功能呢?這樣會多出一個Compare Block啊!』

探奇通常對於這樣的應用都是直接使用Light Switch Block,如下圖:



其實也可以用更有效率的方式:省略Compare Block,因為Light Sensor Block本身就有判斷的功能,只要透過資料集線器,可以直接輸出判斷結果。如下圖:

這樣的寫法更有彈性,因為Light Switch Block沒有集線器,無法即時更改光源感應器的條件



我分別執行上面三種Switch不同的用法,比較在一秒鐘內所執行迴圈的次數,結果如下:

Switch-1:356次
Switch-2:359次
Switch-3:359次

證明不要使用Compare Block會比較快,有多三次的執行。(其實只有9ms的差異

另外需要比較的是NXT主機記憶體的使用狀況

Switch-1:3158 bytes
Switch-2:3168 bytes
Switch-3:3168 bytes

關於這點我無法解釋,竟然是Switch-1佔用的記憶體比較小。(其實只有差10 bytes

最後是NXT-G程式的大小,如下圖:




這次就符合『較多的Block需要較多的儲存記憶體』,但是也要注意Switch-2比Switch-3多11KB(我無法解釋為什麼是這樣的結果?)

總之,撰寫程式需要容易閱讀,NXT-G也可以有更多進階的寫法。

沒有留言:

張貼留言

探奇歡迎大家留言討論!謝謝分享你的意見。