Re:50歳から始めるArduino UNO-13
Re:50歳から始めるArduino UNO
amazon kindle版を出版しました。
(6)I2C通信の実験
温度センサADT7410を用いて、I2C通信を行い温度を測定してみましょう。I2C通信はシリアル通信の一種で、マイコンとセンサーなどのデバイス間を接続するときに用いられます。
I2Cではクロック(SCL)とデータの入出力(SDA)の2本の信号線を用いて、データの通信を行います。複数個のデバイスを接続できるため、デバイスにはそれぞれデバイスのアドレスを持っています。温度センサADT7410はデフォルトでは0x48となっています。ここでは、デフォルトのまま使用します。
<プログラム>
#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℃まで測定が可能です。