(5)の続きです。
データが取れたら、変換します。
tmp275によると、データはMSBから送られてきて、先頭から8ビットが温度の整数部になります。
例えば先頭8ビットが'0001 1001'だったら25℃で、以下のビットが温度の小数部です。
なので、MATLABでは、
temperature = (double(bitshift(int16(data(1)), 4)) +... double(bitshift(int16(data(2)), -4))) * 0.0625
で温度が求まります。
最後はデバイスをクリアして、
% Clean Up clear tmp275 a;%デバイス消去
終わりです。
おまけですが、プルアップ抵抗について書きます。
I2Cは何もしていないときはデータ(SDA)もクロック(SCL)もHighになっている必要があります。
(何かしようとするときに引きおろされるイメージです)。
ですので、
こんな感じにデータ線、クロック線を大きめの抵抗でHigh(この場合は5V)に釣る必要があります。
(tmp275のデータシートにも「プルアップせよ」とあります)。
ですが、この場合においてはプルアップ抵抗は必要ありません。
a=arduino('COM6','Uno','Libraries','I2C'); tmp275=i2cdev(a,'0x48');
で、「I2Cで使います」を宣言したところで、自動的にプルアップが入るようになっているのです。