NxtDirectCommand的SetInputMode參數說明


在App Inventor中的NxtDirectCommand元件中有許多有趣的指令,其中的SetInputMode可以讓我們進一步設定感應器的類型與模式,這是相當進階的技巧唷!

一般的使用情況下,我們都是使用感應器的預設模式來讀取資料,例如觸碰感應器就是0或1,聲音或光感應器則是0~100的整數值。但如果要進一步設定也是可以的,這時候就要借重SetInputMode指令了。

一般我們會使用NxtLightSensor.GetLightLevel就能順利讀取光感應器值,但App Inventor會讀取的是raw值,而非我們所習慣看到的百分比。或者也可以用SetInputMode指令,將sensorType設為5,sensorMode設為128,設定完成後再使用GetInputValue指令,這樣就能讀取光感應器的百分比值了。

對於樂高官方的感應器來說,當然直接使用GetOOO指令是最方便的。但如果我今天拿到一個其他的感應器,就能這樣利用來讀取資料,不用再看App Inventor的臉色啦。

如果是I2C數位感應器的話,就要使用NxtDirectCommand的LsRead / LsWrite指令唷,MindSensors也是利用這種方法來完成他們家的App Inventor 函式庫

延伸閱讀:[CAVE專欄] 輕鬆使用Android裝置控制樂高機器人:感測器面板


詳細參數請看以下說明:
====================================================
sensorType(感應器類型):
1:觸碰感應器(RCX / NXT)
2:溫度感應器
3:RCX光感應器
4:RCX角度感應器
5:光感應器,亮燈(反射光模式)
6:光感應器,不亮燈(環境光模式)
7:聲音感應器,db
8:聲音感應器,dba
9:自製感應器
10:I2C感應器(低速通訊標準)
11:I2C感應器(低速通訊標準),另提供9V電源
12:高速通訊感應器,目前無NXT可用產品
14:樂高顏色感應器,亮紅燈
15:樂高顏色感應器,亮綠燈
16:樂高顏色感應器,亮藍燈
17:樂高顏色感應器,不亮燈

sensorMode(感應器模式,0x代表 16進位表示法)
0:(0x00)原始資料 raw
32:(0x02) 布林模式
64:(0x04) 布林值由0->1的計數,PULSE
96:(0x06) 布林值在0,1之間轉換的計數,EDGE
128:(0x08)百分比
160:(0x10)攝氏溫標
192:(0x12)華氏溫標
224:(0x14)角度步進模式(RCX角度感應器)