有讀友來信:提到需要判別光源感應器的數值,控制機器人的動作。
他的程式如下圖的寫法:
結合光源感應器的讀值,再用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也可以有更多進階的寫法。
沒有留言:
張貼留言
探奇歡迎大家留言討論!謝謝分享你的意見。