ラズベリーパイとアルディーノのI2C通信
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
ゲームパッドジョイスティックの角度をワイヤレス通信で送信送信しようとしています. 方法は添付しました資料の様に,ホスト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
解決方法をご存知の方がらっしゃいましたら,ご教示いただけないでしょうか. どうぞよろしくお願いいたします.
Réponse acceptée
Kei Otsuka
le 4 Déc 2017
Modifié(e) : Kei Otsuka
le 4 Déc 2017
ジョイスティックの値がマイナス表示されない件ですが、デバイス(送信)側が2の補数表現、Arduino(受信)側がストレートバイナリ表現を使用しているためと考えられます。 デバイス側の設定で数値表現の方法を変更できれば良いですが、そうでなければ受け取った側で処理をするしかありません。 値が128以上(8bitにおける符号bitが1)となった際に、受信した結果から256を減算して使ってみてください。
5 commentaires
Kei Otsuka
le 4 Déc 2017
データの受け手であるArduino側のBaudrateも変更が必要になりますが、そちらは変更済でしょうか?
Arduino側のBaudrate変更が難しい場合は、try/catchの構文の部分だけの変更を追加し、Baudrateの変更はせずに試してみてください。
Plus de réponses (1)
Takafumi
le 1 Déc 2017
とりあえす、 TimeOut の設定を、長く取ってみてください。デフォルトは10sだと思います。
i2csensor.TimeOut = 60*60;
1 commentaire
Voir également
Catégories
En savoir plus sur Simulink でサポートされているハードウェア dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!