GO-AHEADの日記

GO-AHEADで出版した書籍の紹介をします

Re:50歳から始めるArduino UNO-13

Re:50歳から始めるArduino UNO

amazon kindleを出版しました。


 (6)I2C通信の実験
 温度センサADT7410を用いて、I2C通信を行い温度を測定してみましょう。I2C通信はシリアル通信の一種で、マイコンとセンサーなどのデバイス間を接続するときに用いられます。
 I2Cではクロック(SCL)とデータの入出力(SDA)の2本の信号線を用いて、データの通信を行います。複数個のデバイスを接続できるため、デバイスにはそれぞれデバイスのアドレスを持っています。温度センサADT7410はデフォルトでは0x48となっています。ここでは、デフォルトのまま使用します。

f:id:GO-AHEAD:20201222102042p:plain




<プログラム>
#include <Wire.h>

void setup() {
Serial.begin( 9600 );
Wire.begin();
Wire.beginTransmission(0x48);//センサーアドレス
Wire.write(0x03);//コンフィギュレーションレジスタ
Wire.write(0x80);//16bitで読み出し
}

void loop() {
uint16_t tm;//16bitの負でない整数を宣言
int tm1;
float T;

Wire.requestFrom(0x48, 2);
tm=Wire.read() <<8 ;//上位データ読み出し
tm |=Wire.read();//下位データ読み出し
tm1=tm;
//マイナスの場合は補数+1をして-をつける
if( tm & 0x8000){
tm1=-(~tm+1);
}
T=float(tm1)/128.0;//0.0078倍は1/128倍
Serial.println(T);

delay(1000);

}

このように温度が表示できました。通常の気温も、氷を温度計に接触させて、マイナスの温度も計測できます。
 この温度計は、-55℃~150℃まで測定が可能です。

f:id:GO-AHEAD:20201222102114p:plain  f:id:GO-AHEAD:20201222102127p:plain