From 8bf53a8813747cb6a799848b6aa743848ffb44af Mon Sep 17 00:00:00 2001 From: lmwangi Date: Wed, 29 Jul 2020 16:32:49 +0300 Subject: [PATCH 1/2] support optional autocalibration on begin. --- src/SparkFun_SCD30_Arduino_Library.cpp | 4 ++-- src/SparkFun_SCD30_Arduino_Library.h | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/SparkFun_SCD30_Arduino_Library.cpp b/src/SparkFun_SCD30_Arduino_Library.cpp index c67a03c..36fcada 100644 --- a/src/SparkFun_SCD30_Arduino_Library.cpp +++ b/src/SparkFun_SCD30_Arduino_Library.cpp @@ -33,7 +33,7 @@ SCD30::SCD30(void) } //Initialize the Serial port -bool SCD30::begin(TwoWire &wirePort) +bool SCD30::begin(TwoWire &wirePort, bool autoCalibrate) { _i2cPort = &wirePort; //Grab which port the user wants us to use @@ -58,7 +58,7 @@ bool SCD30::begin(TwoWire &wirePort) if (beginMeasuring() == true) //Start continuous measurements { setMeasurementInterval(2); //2 seconds between measurements - setAutoSelfCalibration(true); //Enable auto-self-calibration + setAutoSelfCalibration(autoCalibrate); //Enable auto-self-calibration return (true); } diff --git a/src/SparkFun_SCD30_Arduino_Library.h b/src/SparkFun_SCD30_Arduino_Library.h index 002fbe3..d724a72 100644 --- a/src/SparkFun_SCD30_Arduino_Library.h +++ b/src/SparkFun_SCD30_Arduino_Library.h @@ -49,8 +49,9 @@ class SCD30 { public: SCD30(void); - - bool begin(TwoWire &wirePort = Wire); //By default use Wire port + + bool begin(bool autoCalibrate) { return begin(Wire, autoCalibrate); } + bool begin(TwoWire &wirePort = Wire, bool autoCalibrate=true); //By default use Wire port bool beginMeasuring(uint16_t pressureOffset); bool beginMeasuring(void); From a36f09d673d0dbc968eb494affa603d100a0cf9f Mon Sep 17 00:00:00 2001 From: Nathan Seidle Date: Fri, 7 Aug 2020 11:51:17 -0600 Subject: [PATCH 2/2] Add example --- .../Example4_DisableCalibrate.ino | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 examples/Example4_DisableCalibrate/Example4_DisableCalibrate.ino diff --git a/examples/Example4_DisableCalibrate/Example4_DisableCalibrate.ino b/examples/Example4_DisableCalibrate/Example4_DisableCalibrate.ino new file mode 100644 index 0000000..309a899 --- /dev/null +++ b/examples/Example4_DisableCalibrate/Example4_DisableCalibrate.ino @@ -0,0 +1,61 @@ +/* + Reading CO2, humidity and temperature from the SCD30 + By: Nathan Seidle + SparkFun Electronics + Date: May 22nd, 2018 + License: MIT. See license file for more information but you can + basically do whatever you want with this code. + + Feel like supporting open source hardware? + Buy a board from SparkFun! https://www.sparkfun.com/products/15112 + + This example turns off the auto-calibrate function during .begin() + + Hardware Connections: + Attach RedBoard to computer using a USB cable. + Connect SCD30 to RedBoard using Qwiic cable. + Open Serial Monitor at 115200 baud. +*/ + +#include + +#include "SparkFun_SCD30_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_SCD30 +SCD30 airSensor; + +void setup() +{ + Serial.begin(115200); + Serial.println("SCD30 Example"); + Wire.begin(); + + //Start sensor using the Wire port, but disable the auto-calibration + if (airSensor.begin(Wire, false) == false) + { + Serial.println("Air sensor not detected. Please check wiring. Freezing..."); + while (1) + ; + } + + //The SCD30 has data ready every two seconds +} + +void loop() +{ + if (airSensor.dataAvailable()) + { + Serial.print("co2(ppm):"); + Serial.print(airSensor.getCO2()); + + Serial.print(" temp(C):"); + Serial.print(airSensor.getTemperature(), 1); + + Serial.print(" humidity(%):"); + Serial.print(airSensor.getHumidity(), 1); + + Serial.println(); + } + else + Serial.println("Waiting for new data"); + + delay(500); +}