M5STACK(12) ADT7410で温度計測
ADT7410とM5STACKを接続して、温度の測定を試みました。
配線
ADT7410 | M5STACK |
---|---|
VDD | G |
SCL | 22 |
SDA | 21 |
GND | 5V |
スケッチ
#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); }
実行結果