M5STACK(12) ADT7410で温度計測

ブログランキング・にほんブログ村へ

ADT7410とM5STACKを接続して、温度の測定を試みました。

配線

ADT7410M5STACK
VDDG
SCL22
SDA21
GND5V

スケッチ

#include <M5Stack.h>
#include <Wire.h>

int ADT7410_ADDR = 0x48; // ADT7410温度センサのアドレス
uint16_t uiVal;
float fVal;
int iVal;

void setup(void) {
  M5.begin();
  M5.Lcd.setTextSize(3);
  M5.Lcd.setCursor(20, 50);
  M5.Lcd.print("Temperature ");
  M5.Lcd.setCursor(20, 130);  
  M5.Lcd.print("degree Celsius");
  // 内部プルアップ抵抗有効化
  pinMode(21, INPUT_PULLUP);
  pinMode(22, INPUT_PULLUP);
  Wire.begin(); // I2Cバスにマスタとして接続
}

void loop(void) {
  Wire.requestFrom(ADT7410_ADDR, 2); // ADT7410に2byteのデータを要求
  uiVal = (uint16_t)Wire.read() << 8; // 1byte受信し、1byte左シフト
  uiVal |= Wire.read(); // 1byte受信し、前回値に加算
  uiVal >>= 3; // 3bit右シフト
  
  if(uiVal & 0x1000){ // bit 12が1のとき
    iVal = uiVal-0x2000; // 負の温度換算
  }
  else{
    iVal = uiVal; // 正の温度換算
  }
  fVal = (float)iVal / 16.0;
  M5.Lcd.setTextSize(4);
  M5.Lcd.setCursor(20, 90);
  M5.Lcd.print(fVal,4);
  M5.Lcd.setTextSize(3);
  delay(1000);
}

実行結果

 









ブログランキング・にほんブログ村へ

コメントを残す

メールアドレスが公開されることはありません。