Re: The history of "M&Y"

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

EV3ねた その13 ROBOT-C でI2C通信 出来てた!

2020-05-07 | EV3ねた

目の記事はこちら EV3ねた その12 ROBOT-C でI2C通信 できそう・・・

 

前回までで、EV3に接続するArduinoを、なんとか(NXTの)超音波センサーに偽装させて、通信ができないか!?

について、頑張っていたのですが・・・なんと、そんなこと全然頑張らなくても良いことがわかりました。

 

上にも書いたように、これまでは、LEGO純正の超音波センサーと同じ振る舞いをして、EV3に「超音波センサーが接続されたよ」と認識させることで、EV3のポートビューでArduinoから送られてきた値が(超音波センサーでに偽装して)表示ができます。だから、なんとか、超音波センサーが接続された振る舞いを真似しようとやっきになっていました。

だから、0x08を受け取ったら、”LEGO"を返して、0x10を受け取ったら”sonar"を返して・・・とやっていました。

しかし・・・単に接続するだけであれば、そんなのは全然必要ありませんでした。

Arduinoをポートに接続して、(何もしないから) UNKNOWN のまま、超音波センサーを読み出すプログラムを書けば Arduino からの値を受け取れるところまでは、前の記事で書いた通りです。

これを、汎用的なI2Cの通信に置き換えてテストしたのが下のプログラムです。

このプログラムを動かせば、普通にArduinoからの値が読み取れます。

(もちろん、Arduino側で 0x42 が送られたら、1Byteの値を返すようなプログラムが必要です。)

 

task main()
{
char Wbuf[3] = {2,0x02,0x42};
char Rbuf[1];

while(true)
  {
  sendI2CMsg(S1,Wbuf,1); 
  wait1Msec(20);
  readI2CReply(S1,Rbuf,1);

  eraseDisplay();
  displayBigTextLine(10," %d",Rbuf[0]);

  wait1Msec(500);
  }
}

(Arduino側は、nicosensor に掲載されたプログラム)

 

超音波センサーに偽装するだけでは、1つのセンサーの値しかやりとりできませんが・・・

このやり方が成功したので、いくつもの値をやりとりできる可能性が出てきました!

 

さて・・・それでは、単純に受け渡しができるような、Arduino側のプログラムを研究したいと思います。

 

続きの記事はこちら EV3ねた その14 いよいよArduinoとの接続

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« EV3ねた その12 ROBOT-C でI... | トップ | EV3ねた その14 いよいよArd... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

EV3ねた」カテゴリの最新記事