Skip to content

Instantly share code, notes, and snippets.

@TakehikoShimojima
Last active February 21, 2018 00:13
Show Gist options
  • Save TakehikoShimojima/342b7e068a358e811cf3d7265fd00020 to your computer and use it in GitHub Desktop.
Save TakehikoShimojima/342b7e068a358e811cf3d7265fd00020 to your computer and use it in GitHub Desktop.
void readCCS811()
{
ccs811_wake(); // CCS811をI2C通信可能にする。
CO2 = 0;
while (CO2 <= 400 || CO2 > 8192) { // CCS811 Datasheet よりCO2の値は400〜8192ppmとのことで、
// それ以外の範囲の値を読み飛ばす
long t = millis();
while (!ccs811.dataAvailable()) { // CCS811のデータが読み出し可能かチェックする。
delay(100);
long e = millis() - t;
if ((e) > 3000) {
// 3秒以上データーが読み出し可能にならなければCCS811をリセットして再起動する
Serial.println(e);
t = millis();
Serial.println("data unavailable for too long.");
ccs811_hw_reset();
CCS811Core::status returnCode = ccs811.begin(); // CCS811を初期化
if (returnCode != CCS811Core::SENSOR_SUCCESS) { // 初期化に失敗したら
Serial.print(".begin() returned with an error: ");
Serial.println(returnCode, HEX);
while (1) {
delay(0); // プログラムを停止する
}
}
}
}
ccs811.readAlgorithmResults(); // CO2とTVOCの値をCSS811から読み出す。
CO2 = ccs811.getCO2(); // CO2の値を取得する。
TVOC = ccs811.getTVOC(); // TVOCの値を取得する。
}
ccs811_sleep(); // CCS811のI2C通信を停止する。
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment