Re: The history of "M&Y"

Team "M&Y" and "花鳥風月"
the soliloquy of the father
毎日更新!

Arduinoねた その14 SRF02のアドレス変更

2010-09-15 | Arduinoねた

I2C接続の超音波センサーである、SRF02のアドレス変更に挑戦してみました。

これまで、I2Cモジュールの接続は、あっけないほど簡単だったのですが・・・

今回のアドレス書き換えには苦労しました。


まず、ネットで書き換えのための説明を確認すると・・・

3つのコマンドを順番に送れば良いことが判りました。

0xA0,0xAA,0xA5

です。

その後に、新しいアドレスにしたい数値を送付します。

試しに・・・デフォルトの0xE0を0xF2に変えようと思って、以下のプログラムを実行してみます。 (以下は主要部分だけ)

  Wire.beginTransmission(i2cAddress);
  Wire.send(0xA0);
  Wire.send(0xAA);
  Wire.send(0xA5);
  Wire.send(0xF2);
  Wire.endTransmission();

さて、書き換わったかと思いきや・・・なにも変わっていません。


そうか、やっぱり先頭に Command の 0x00 を書かないとだめなのか・・・

  Wire.beginTransmission(i2cAddress);
  Wire.send(0x00);
  Wire.send(0xA0);
  Wire.send(0xAA);
  Wire.send(0xA5);
  Wire.send(0xF2);
  Wire.endTransmission();

よし、これで・・・変わらない・・・


もう、いろいろやってみました。

でも・・・変わらない・・・


もう一回、冷静にネットでSRF02のアドレス書き換えについて書かれているページを検索して、英語を何度も読んでみたところ・・・

アドレス書き換えのためのコマンド1個1個を独立して送らなければならないようです。

ということで・・・

  Wire.beginTransmission(i2cAddress);
  Wire.send(0x00);
  Wire.send(0xA0);
  Wire.endTransmission();

  Wire.beginTransmission(i2cAddress);
  Wire.send(0x00);
  Wire.send(0xAA);
  Wire.endTransmission();

  Wire.beginTransmission(i2cAddress);
  Wire.send(0x00);
  Wire.send(0xA5);
  Wire.endTransmission();

  Wire.beginTransmission(i2cAddress);
  Wire.send(0x00);
  Wire.send(0xF2);
  Wire.endTransmission();

としてみたら・・・やっとアドレスが書き換わりました。


今回は長かった!


これで、やり方は理解できました。

(9.99GBPの出資がムダにならずに済んでほっとしてます。)

で、このSRF02の素晴しいところは・・・電源を入れると、設定されている自分のアドレスをLEDの点滅で表示してくれるんです。 これなら、アドレスを変更しても、判らなくなることがありません。

こんなに小さいのに素晴しい機能です。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする