https://qiita.com/ikesato/items/92f4cb143e7aeb5e0f9b
i2cの接続は
GPIO4 - SDA
GPIO5 - SCL
とします。サイトによってはSCLをGPIO14にしている場合もある様ですが、Arduino IDEのデフォルトはGPIO4,5 の様です、
------------------------
/*
* WROOM TEST
*
* NTP Time Sync
* HDC1000 i2c
*
*/
#include <Wire.h>
#include <Arduino.h>
#include <time.h>
#include <ESP8266WiFi.h>
//#include <WiFiUDP.h>
//Access Point Setting
const char *ssid = "****";
const char *pass = "****";
#define addr 0x40
#define LED 13
#define JST 3600*9
IPAddress myIP;
void HDC1000_ini(void){
delay(100);
Wire.beginTransmission(addr);
Wire.write(0x02); //Configuration address
Wire.write(0x10); //MODE=1, 14bit
Wire.write(0x00);
Wire.endTransmission();
}
void setup() {
int t=0;
pinMode(LED, OUTPUT);
Serial.begin(9600);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if(t++>20){
Serial.println("ERROR Wifi CONNECT");
break;
}
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
myIP=WiFi.localIP();
Serial.println(myIP);
configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
Wire.begin();
HDC1000_ini();
}
void loop() {
static short intvl=0;
time_t t;
struct tm *tm;
delay(100);
if(intvl++ & 7 ){
return;
}
digitalWrite(LED, HIGH);
t= time(NULL);
tm = localtime(&t);
Serial.printf(" %04d/%02d/%02d %02d:%02d:%02d , ",
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
HDC1000_read();
digitalWrite(LED, LOW);
}
void HDC1000_read(void){
unsigned int temp = 0;
unsigned int humid = 0;
delay(100);
Wire.beginTransmission(addr);
Wire.write(0x00); //レジスタ0x00
Wire.endTransmission();
delay(50);
Wire.requestFrom(addr, 4);
if(4 <= Wire.available())
{
temp = (Wire.read()<<8);
temp += Wire.read();
humid = (Wire.read()<<8);
humid += Wire.read();
Serial.print(temp/65536.0*165.0-40.0);
Serial.print(",");
Serial.println(humid/65536.0*100.0);
}
}
実行結果: