ラズベリーパイとアルディーノのI2C通信

4 visualizaciones (últimos 30 días)
PROJECT SR
PROJECT SR el 30 de Nov. de 2017
Comentada: PROJECT SR el 30 de Dic. de 2017
ゲームパッドジョイスティックの角度をワイヤレス通信で送信送信しようとしています. 方法は添付しました資料の様に,ホストPCからジョイスティックの角度の情報を,ラズベリーパイへワイヤレスで送信し 受信した情報をアルディーノへI2Cで送信します.
本件はラズベリーパイとアルディーノのI2Cでのご相談です.添付しましたmファイルでアルディーノへ通信し,添付しましたアルディーノのプログラムで 値を受信を試みているのですが, 一応ジョイスティックの傾きの情報を送信・受信することができました.
ですが,2つの問題があります.
1長時間接続ができない
5分ほどmatlabプログラムを起動すると,以下のエラー表示がされ,通信ができなくなります.原因がわかりません.それとも長時間起動しない仕様なのでしょうか?
エラー: raspi/recvResponse (line 697) Error writing to I2C bus.
エラー: raspi.internal.i2cdev/write (line 118) recvResponse(obj.Hw);
エラー: I2C (line 15) write(i2csensor,b,'int8');
2arduino側でマイナスの数値が受信されません.
 mファイルにジョイスティックの数値表示  t = [b]  とアルディーノへ送信する  write(i2csensor,b,'int8')  を記述しており,プログラムを起動すると,プロンプトではマイナスの値も表示  されるのですが,arduinoでは以下の様に右へ傾きを大きくすると1~127,  左へ傾きを大きくすると225~128の値が表示され,マイナスが表示されません.    
左傾き大128 ~ 左傾き小255 中央0 右傾き小1  右傾き大127  
解決方法をご存知の方がらっしゃいましたら,ご教示いただけないでしょうか. どうぞよろしくお願いいたします.
  1 comentario
michio
michio el 1 de Dic. de 2017
参照し易いよう画像を貼り付けます。

Iniciar sesión para comentar.

Respuesta aceptada

Kei Otsuka
Kei Otsuka el 4 de Dic. de 2017
Editada: Kei Otsuka el 4 de Dic. de 2017
ジョイスティックの値がマイナス表示されない件ですが、デバイス(送信)側が2の補数表現、Arduino(受信)側がストレートバイナリ表現を使用しているためと考えられます。 デバイス側の設定で数値表現の方法を変更できれば良いですが、そうでなければ受け取った側で処理をするしかありません。 値が128以上(8bitにおける符号bitが1)となった際に、受信した結果から256を減算して使ってみてください。
  5 comentarios
Kei Otsuka
Kei Otsuka el 4 de Dic. de 2017
データの受け手であるArduino側のBaudrateも変更が必要になりますが、そちらは変更済でしょうか?
Arduino側のBaudrate変更が難しい場合は、try/catchの構文の部分だけの変更を追加し、Baudrateの変更はせずに試してみてください。
PROJECT SR
PROJECT SR el 30 de Dic. de 2017
Kei Otuka様
返信いただきありがとうございます.
上記通信時間の問題ですが,arduinoのダウングレード版を使用していたため,通信中に切れてしまうことがわかりました.
純正品で使用したところ,数時間のみの計測ですが,無事途中で通信が途切れることがなくなりました.
ありがとうございます.

Iniciar sesión para comentar.

Más respuestas (1)

Takafumi
Takafumi el 1 de Dic. de 2017
とりあえす、 TimeOut の設定を、長く取ってみてください。デフォルトは10sだと思います。
i2csensor.TimeOut = 60*60;
  1 comentario
PROJECT SR
PROJECT SR el 2 de Dic. de 2017
Editada: PROJECT SR el 4 de Dic. de 2017
Takafumi 様
ご回答いただきありがとうございます.
TimeOutを添付いたしましたファイルの様に書いてみたのですが,
エラーが以下の様に表示され,実行できません.
エラー表示***************************************************************
クラス 'raspi.internal.i2cdev' のプロパティ 'TimeOut' が認識されません。
エラー: I2C (line 11) i2csensor.TimeOut = 60*60; ***************************************************************** i2csensor.TimeOutの書く場所が違うのでしょうか.
補足
matlabプロンプトで,
>> i2csensor = i2cdev(mypi,'i2c-1','0x08')
と入力したところ
i2csensor =
i2cdev のプロパティ:
Bus: 'i2c-1'
Address: '0x08'
というようにTimeOutが表示されません.
matlabのバージョンかそれともラズベリーパイのバージョンの影響なのでしょうか.
使用しているバージョンは,matlab2017b,raspberrypi3です.

Iniciar sesión para comentar.

Categorías

Más información sobre Simulink でサポートされているハードウェア en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!