慣性センサーとは...↓ですね。
XG1300L

例のジャイロと加速度が両方ついた、凄いやつです。(しかも、積分機能も!)
今回は、そのNXCでの使い方について説明します。 

〜慣性センサー関連記事〜

慣性センサー 参上!!

 

慣性センサー 実装!!


慣性センサー 研究


慣性センサー プログラム


慣性センサー 加速度

 

1.センサーポートをI2Cにセットする 
 これは、普通に
 SetSensorLowspeed(IN_1);SetSensorLowspeed(IN_1); 
 とでも、書いとけばOKです。

2. 定型文を挿入
 センサーのリセットや、値の読み込みなどに使います。
 これらは、サンプルプログラムからコピペしてきます。

#define XGL_PORT S1             //センサーを接続したポートによって変更する。

#define XGL_ADDR 0x02

#define XGL_DATA_REG  0x42

#define XGL_RESET_REG  0x60

#define XGL_ACC_SF_REG  0x61

#define XGL_DATA_PACKET 10

#define XGL_COMMAND 2

#define XGL_TIME_OUT 500

#define ACC_RANGE 2
 

//XGL1300L sensor data packet

struct XGLpacket

{

short GYRO_M;

short mRate;

short ACC_X;

short ACC_Y;

short ACC_Z;

};


//Reset XGL1300L sensor

void Reset_MSensor()

{

byte cmd[XGL_COMMAND];

byte n_read=0;

ArrayBuild(cmd,XGL_ADDR,XGL_RESET_REG);

while (I2CStatus(XGL_PORT,n_read)==STAT_COMM_PENDING);

I2CWrite(XGL_PORT,0,cmd);

}


void Read_MSensor(XGLpacket &XglData)

{

byte data[XGL_DATA_PACKET];

byte cmd[XGL_COMMAND];

byte count=XGL_DATA_PACKET;

byte n_read=0;

ArrayBuild(cmd,XGL_ADDR,XGL_DATA_REG);

while (I2CStatus(XGL_PORT,n_read)==STAT_COMM_PENDING);

if (I2CBytes(XGL_PORT,cmd,count,data))

{

    XglData.GYRO_M = data[0] + data[1]*256;

XglData.mRate = data[2] + data[3]*256;

XglData.ACC_X = (data[4] + data[5]*256)*ACC_RANGE/2;

XglData.ACC_Y = (data[6] + data[7]*256)*ACC_RANGE/2;

XglData.ACC_Z = (data[8] + data[9]*256)*ACC_RANGE/2;

}

}

  上のは、少しサンプルプログラムをいじったものの様ですが...

3-0.プログラム内で使用する。
 一つだけ注意点があります。
 それは、使う前(リセットとか、読み込みとか)に、

XGLpacket xgl;

  を書く事です!これを書かないと、たぶん動きません。
  
 3-1.センサーをリセットする。

Reset_MSensor();

  で、センサーの値をリセットする事が出来ます。
  具体的に言うと、ジャイロセンサーを値を0にする事が出来るといったところでしょうか?
  状況によって、記述するか、しないかは、考えてください。

 3-2.値の読み込み
  値を読み込むには、

Read_MSensor(xgl);

  これで、ジャイロ・加速度の両方の値が一度に読み込まれます。

3-3.値の利用
  ジャイロセンサーを使いたい時は、

xgl.GYRO_M

  加速度センサーは

xgl.ACC_X  //X軸の時のプログラム。 Y軸、Z軸についての時は、Xをそれぞれ、Y,Zに変える。

   で利用できます。
  変数などを扱う時と同じような感覚で、利用可能です。
//例01
if(xgl.GYRO_M>9000)
{
  //90度回転した

   

Whileやifを組み合わせて、90度回転プログラムや直進補正プログラムを作ってみてください。


追記
MICROINFINITY社のホームページがリニューアルされてて...サンプルプログラムを探し出せませんでした。
まだ、配布してるのかなぁ?
http://xgl.minfinity.com/eng/page.php?Main=1&sub=1&tab=5



〜慣性センサー関連記事〜

慣性センサー 参上!!

 

慣性センサー 実装!!


慣性センサー 研究


慣性センサー プログラム


慣性センサー 加速度