在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裝置控制樂高機器人:感測器面板
詳細參數請看以下說明:
====================================================
1:觸碰感應器(RCX / NXT)2:溫度感應器3:RCX光感應器4:RCX角度感應器5:光感應器,亮燈(反射光模式)6:光感應器,不亮燈(環境光模式)7:聲音感應器,db8:聲音感應器,dba9:自製感應器10:I2C感應器(低速通訊標準)11:I2C感應器(低速通訊標準),另提供9V電源12:高速通訊感應器,目前無NXT可用產品14:樂高顏色感應器,亮紅燈15:樂高顏色感應器,亮綠燈16:樂高顏色感應器,亮藍燈
17:樂高顏色感應器,不亮燈
sensorMode(感應器模式,0x代表 16進位表示法)
0:(0x00)原始資料 raw32:(0x02) 布林模式64:(0x04) 布林值由0->1的計數,PULSE96:(0x06) 布林值在0,1之間轉換的計數,EDGE128:(0x08)百分比160:(0x10)攝氏溫標192:(0x12)華氏溫標224:(0x14)角度步進模式(RCX角度感應器)