最近有許多人對於使用icommand與NXT的加速度計(加速規)非常有興趣。
經過多方查證測試,終於弄清楚大家的問題何在!也發現大家同時各自研究的辛苦,不管這些讀友是否彼此認識,我想整理出一些結論,也請JAVA高手不吝指點。
先再聲明一次,我不會JAVA!這是很遺憾的事,我也會努力學習!
==================================================
首先是有人在機器人學苑論壇留言,關於icommand程式執行問題。
他們的程式節錄如下:
long diff = 0;
int count=0;
TiltSensor as = new TiltSensor(SensorPort.S4);
NXTCommand.setVerify(true);
結果一直出現錯誤,訊息如下:
Exception in thread "main" java.lang.NullPointerException
at icommand.nxt.comm.NXTCommand.sendRequest(Unknown Source)
at icommand.nxt.comm.NXTCommand.setInputMode(Unknown Source)
at icommand.nxt.SensorPort.setTypeAndMode(Unknown Source)
at icommand.nxt.I2CSensor.<init>(Unknown Source)
at icommand.nxt.TiltSensor.<init>(Unknown Source)
at TiltSensorTest.main(TiltSensorTest.java:9)
經過測試,請將程式順序更改並加上一行:
long diff = 0;
int count=0;
NXTCommand.open();
NXTCommand.setVerify(true);
TiltSensor as = new TiltSensor(SensorPort.S4);
這樣一來這個Tiltsensor才找得到東西。
=====================================================
其次,icommand裡面的Class Tiltsensor 只支援Mindsesnors的產品,
TiltSensor by Mindsensors.com. Works with: ACCL-Nx-3g3x UNTESTED: ACCL-Nx-2g2x, ACCL-Nx-5g2x
請仔細參考Mindsensors的說明書,以及HiTechnic的說明。
兩種感應器的Sensor Register各個位置的定義不同,當然讀出來的值也不相同。
所以使用HiTechnic的同好請注意,兩者的讀值不同!!你沒有辦法混用,請寫程式時特別注意。
======================================================
有沒有辦法解決,答案或許是有的。
0. 等待icommand改版
1. 你自己修改icommand
2. 請參考Class I2CSensor,讀取不同Register的值,再自行計算轉換。
======================================================
請大家一起努力!也歡迎大家分享你的經驗!
沒有留言:
張貼留言
探奇歡迎大家留言討論!謝謝分享你的意見。