Simulinkで型​の異なる8bitのデ​ータを結合してint​16に変換する方法に​ついて

SimulinkとArduinoを用いてIMUの加速度データを取得して制御に利用したいです。
IMUでは符号付き16bitのデータが得られるのですが、マイコンへの送信で上位・下位で8bitに分割されます。
Simulinkでは分割された8bitずつのデータが送られ、分割されたデータを統合して再び元の符号付き16bitにしたいのですが方法が分かりません。
何か良い方法を教えていただけたら幸いです。
使用環境は以下になります。
MATLAB/Simulinkのバージョン R2018b
使用しているToolBoxはSimulink Support Package for Arduino Hardware 18.2.0

4 个评论

分割された8bitずつのデータの型は何ですか?
状況を正確に説明できていなくてすいません。
IMUでは符号付き16bitの加速度情報を取得しますがArduinoとの通信(I2C方式)ではその16bitを単純に8bitで半分に分割して通信しています。
そのため,分割された8bitずつのデータには明確な型は存在していません。
Simulink Support Package for Arduino HardwareのI2C Readブロックならデータタイプをint16に設定できる様ですが、8bitで半分に分割して通信しなければならない何らかの理由があるのですね。
IMU自体がデータを8bitに分割して送信してきています。
異なるレジスタアドレスで上位と下位の8bitを送信してきているため,素直にint16で受信ができないです。
使用しているIMUはMPU6050です。

请先登录,再进行评论。

 采纳的回答

Atsushi Ueno
Atsushi Ueno 2021-12-5

0 个投票

Simulink Support Package for Arduino Hardwareに質問の操作を意図した良いブロックがあるかも知れませんが、Simulinkのブロックで作るなら下記のように型変換・ビットシフト・加算の組み合わせで実現できます。

1 个评论

素早い対応ありがとうございます。
試してみようと思います。

请先登录,再进行评论。

更多回答(0 个)

产品

版本

R2018b

标签

Community Treasure Hunt

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

Start Hunting!