本文へスキップ

未来の科学技術を子供たちに託す。 ジュニロボ <JRO>

〒619-0237 京都府相楽郡精華町光台8丁目

TEL. 070-5263-2200

jun@kinet-tv.ne.jp

C-Style 改造(1)                    RECRUI


    今回の改造は、多機能電子コンパス<DSR-1005>を使う時に、最新Ver<20140726>では使えなくなっています。
   最新Verの C-Style の変更点の1つに、変数を扱う数が多くなってる( 16個 ー> 26個 に拡大されている )優位点の恩恵を受けたい為に
   C-Style が VerUp した機能をそのまま利用できて、DSR-1005 が使える様に改造してみました。

  改造方法

   最新バージョン(本日現在:Ver140726>をインストールします。旧バージョンがインストールされている場合は削除します。
   USBシリアル変換ケーブル用ドライバーは、そのままでOKです。
   C-Style は、Cドライブのルートに<Daisen>ファルダがあります。同フォルダ内は下記の様になっています。(必要ファルダのみ記載しています。)

    <Daisen>
      <C-Style for TJ3B>
        <Build>
          <Build_V140726>
            |ー<D_I2C.c
            |ー<D_Sio.c

   上記の2つのファイルの一部を変更します。

   「D_I2C.c」のファイル中央部にある「UINT get_dir ( BYTE dno )」は、下記の様になっています。( 6軸センサ用 )

//------------------------------------------------------------------------------------------------------------------
#ifdef USE_DIR
// dno:0(dir), 1(pitch), 2(roll)
UINT get_dir(BYTE dno)
{
  U_UINT d;
  BYTE adrs = DIR_ADRS;
  BYTE n = 0;

  d.W = 999;
  if (i2c_recv(adrs, 6) == false) return(d.W);
  n = 0;
  gU_Dat[0].H = gI2C_Buf[n++];
  gU_Dat[0].L = gI2C_Buf[n++];
  gU_Dat[1].H = gI2C_Buf[n++];
  gU_Dat[1].L = gI2C_Buf[n++];
  gU_Dat[2].H = gI2C_Buf[n++];
  gU_Dat[2].L = gI2C_Buf[n++];
  dno = dno < 3 ? dno : 0;
  d.W = gU_Dat[dno].W;
  return(d.W / 10);
}
//------------------------------------------------------------------------------------------------------------------
]
   この部分を、下記の様に変更します。( 3軸センサ用:旧バージョンで使用していたもの )

//------------------------------------------------------------------------------------------------------------------
#ifdef USE_DIR
// dno:0(dir), 1(pitch), 2(roll)
UINT get_dir(BYTE dno)
{
  U_UINT d;
  BYTE adrs = DIR_ADRS;
  BYTE n = 0;

  d.W = 999;
  gI2C_Buf[n++] = 0x20 + dno * 2;
  if (i2c_send(adrs, n) == false) return(d.W);
  if (i2c_recv(adrs, 2) == false) return(d.W);
  n = 0;
  d.H = gI2C_Buf[n++];
  d.L = gI2C_Buf[n++];
  if (0 < dno){
  d.W += 90;
  }
  return(d.W);
}
//------------------------------------------------------------------------------------------------------------------


   次に、「D_Sio.c」のファイル下段部分にある「void put_dir(void)」を変更します。変更前が下記内容となっています。

//------------------------------------------------------------------------------------------------------------------
#ifdef USE_DIR
// "D:ddd,ppp,rrr" + CRLF
void put_dir(void)
{
  char str[5 + 1];
   BYTE n;

   get_dir(3);
  tx_putc('D');
  tx_putc(':');
  for (n = 0; n < 3; n++){
  sprintf(str, (ROMC *)"%03u", gU_Dat[n].W / 10);
  tx_puts(str);
  if (n < 2) tx_putc(',');
   } 
   tx_putsX((ROMC *)"\r\n");
}
#endif
//------------------------------------------------------------------------------------------------------------------

   この部分を、下記の様に変更します。( 3軸センサ用:旧バージョンで使用していたもの )

//------------------------------------------------------------------------------------------------------------------
#ifdef USE_DIR
// "D:ddd,ppp,rrr" + CRLF
void put_dir(void)
{
  char str[3 + 1];
  BYTE n;

  tx_putc('D');
  tx_putc(':');
  for (n = 0; n < 3; n++){
  sprintf(str, (ROMC *)"%03u", get_dir(n));
  tx_puts(str);
  if (n < 2) tx_putc(',');
  }
  tx_putsX((ROMC *)"\r\n");
}
#endif
//------------------------------------------------------------------------------------------------------------------


   この改造により、従来のセンサーモニター上のコンパス表示は以下の様な表示でした。



コンパス表示と、ロール、ピッチ表示は数値表示のみでした。























   新しいバージョンでは、6D-Comp にチェックを入れてください。



   新しいセンサーモニター表示です。