Skip to content

Commit 535f16e

Browse files
committed
Add getMeasurementInterval helper. Re-sort .h and keywords to match.
1 parent 38bdc83 commit 535f16e

File tree

4 files changed

+69
-37
lines changed

4 files changed

+69
-37
lines changed

examples/Example2_SetOptions/Example2_SetOptions.ino

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,34 @@ void setup()
4040
;
4141
}
4242

43-
airSensor.setMeasurementInterval(4); //Change number of seconds between measurements: 2 to 1800 (30 minutes)
43+
airSensor.setMeasurementInterval(16); //Change number of seconds between measurements: 2 to 1800 (30 minutes), stored in non-volatile memory of SCD30
44+
45+
//While the setting is recorded, it is not immediately available to be read.
46+
delay(200);
47+
48+
int interval = airSensor.getMeasurementInterval();
49+
Serial.print("Measurement Interval: ");
50+
Serial.println(interval);
51+
52+
//My desk is ~1600m above sealevel
53+
airSensor.setAltitudeCompensation(1600); //Set altitude of the sensor in m, stored in non-volatile memory of SCD30
4454

4555
//Read altitude compensation value
4656
unsigned int altitude = airSensor.getAltitudeCompensation();
4757
Serial.print("Current altitude: ");
4858
Serial.print(altitude);
4959
Serial.println("m");
5060

51-
//My desk is ~1600m above sealevel
52-
airSensor.setAltitudeCompensation(1600); //Set altitude of the sensor in m, stored in non-volatile memory of SCD30
53-
5461
//Pressure in Boulder, CO is 24.65inHg or 834.74mBar
5562
airSensor.setAmbientPressure(835); //Current ambient pressure in mBar: 700 to 1200, will overwrite altitude compensation
5663

64+
airSensor.setTemperatureOffset(5); //Optionally we can set temperature offset to 5°C, stored in non-volatile memory of SCD30
65+
5766
//Read temperature offset
5867
float offset = airSensor.getTemperatureOffset();
5968
Serial.print("Current temp offset: ");
6069
Serial.print(offset, 2);
6170
Serial.println("C");
62-
63-
//airSensor.setTemperatureOffset(5); //Optionally we can set temperature offset to 5°C, stored in non-volatile memory of SCD30
6471
}
6572

6673
void loop()

keywords.txt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,30 @@ begin KEYWORD2
1717
enableDebugging KEYWORD2
1818
beginMeasuring KEYWORD2
1919
StopMeasurement KEYWORD2
20+
21+
setAmbientPressure KEYWORD2
22+
2023
getSettingValue KEYWORD2
21-
getForcedRecalibration KEYWORD2
22-
getMeasurementInterval KEYWORD2
23-
getTemperatureOffset KEYWORD2
24-
getAltitudeCompensation KEYWORD2
2524
getFirmwareVersion KEYWORD2
2625
getCO2 KEYWORD2
2726
getHumidity KEYWORD2
2827
getTemperature KEYWORD2
28+
29+
getMeasurementInterval KEYWORD2
2930
setMeasurementInterval KEYWORD2
30-
setAmbientPressure KEYWORD2
31+
32+
getAltitudeCompensation KEYWORD2
3133
setAltitudeCompensation KEYWORD2
34+
35+
getAutoSelfCalibration KEYWORD2
3236
setAutoSelfCalibration KEYWORD2
37+
38+
getForcedRecalibration KEYWORD2
3339
setForcedRecalibrationFactor KEYWORD2
40+
41+
getTemperatureOffset KEYWORD2
3442
setTemperatureOffset KEYWORD2
35-
getAutoSelfCalibration KEYWORD2
43+
3644
dataAvailable KEYWORD2
3745
readMeasurement KEYWORD2
3846
reset KEYWORD2

src/SparkFun_SCD30_Arduino_Library.cpp

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ bool SCD30::begin(TwoWire &wirePort, bool autoCalibrate, bool measBegin)
7474
//Check for device to respond correctly
7575
if (beginMeasuring() == true) //Start continuous measurements
7676
{
77-
setMeasurementInterval(2); //2 seconds between measurements
77+
setMeasurementInterval(2); //2 seconds between measurements
7878
setAutoSelfCalibration(autoCalibrate); //Enable auto-self-calibration
7979

8080
return (true);
@@ -87,8 +87,8 @@ bool SCD30::begin(TwoWire &wirePort, bool autoCalibrate, bool measBegin)
8787
//You can also call it with other streams like Serial1, SerialUSB, etc.
8888
void SCD30::enableDebugging(Stream &debugPort)
8989
{
90-
_debugPort = &debugPort;
91-
_printDebug = true;
90+
_debugPort = &debugPort;
91+
_printDebug = true;
9292
}
9393

9494
//Returns the latest available CO2 level
@@ -192,19 +192,20 @@ bool SCD30::setAmbientPressure(uint16_t pressure_mbar)
192192
// SCD30 soft reset
193193
void SCD30::reset()
194194
{
195-
sendCommand(COMMAND_RESET);
196-
195+
sendCommand(COMMAND_RESET);
197196
}
198197

199198
// Get the current ASC setting
200199
bool SCD30::getAutoSelfCalibration()
201200
{
202201
uint16_t response = readRegister(COMMAND_AUTOMATIC_SELF_CALIBRATION);
203-
if (response == 1) {
202+
if (response == 1)
203+
{
204204
return true;
205205
}
206-
else {
207-
return false;
206+
else
207+
{
208+
return false;
208209
}
209210
}
210211

@@ -227,7 +228,7 @@ bool SCD30::beginMeasuring(void)
227228
// Stop continuous measurement
228229
bool SCD30::StopMeasurement(void)
229230
{
230-
return(sendCommand(COMMAND_STOP_MEAS));
231+
return (sendCommand(COMMAND_STOP_MEAS));
231232
}
232233

233234
//Sets interval between measurements
@@ -237,6 +238,15 @@ bool SCD30::setMeasurementInterval(uint16_t interval)
237238
return sendCommand(COMMAND_SET_MEASUREMENT_INTERVAL, interval);
238239
}
239240

241+
//Gets interval between measurements
242+
//2 seconds to 1800 seconds (30 minutes)
243+
uint16_t SCD30::getMeasurementInterval(void)
244+
{
245+
uint16_t interval = 0;
246+
getSettingValue(COMMAND_SET_MEASUREMENT_INTERVAL, &interval);
247+
return (interval);
248+
}
249+
240250
//Returns true when data is available
241251
bool SCD30::dataAvailable()
242252
{
@@ -256,9 +266,12 @@ bool SCD30::readMeasurement()
256266
if (dataAvailable() == false)
257267
return (false);
258268

259-
ByteToFl tempCO2; tempCO2.value = 0;
260-
ByteToFl tempHumidity; tempHumidity.value = 0;
261-
ByteToFl tempTemperature; tempTemperature.value = 0;
269+
ByteToFl tempCO2;
270+
tempCO2.value = 0;
271+
ByteToFl tempHumidity;
272+
tempHumidity.value = 0;
273+
ByteToFl tempTemperature;
274+
tempTemperature.value = 0;
262275

263276
_i2cPort->beginTransmission(SCD30_ADDRESS);
264277
_i2cPort->write(COMMAND_READ_MEASUREMENT >> 8); //MSB
@@ -283,21 +296,21 @@ bool SCD30::readMeasurement()
283296
case 1:
284297
case 3:
285298
case 4:
286-
tempCO2.array[x < 3 ? 3-x : 4-x] = incoming;
299+
tempCO2.array[x < 3 ? 3 - x : 4 - x] = incoming;
287300
bytesToCrc[x % 3] = incoming;
288301
break;
289302
case 6:
290303
case 7:
291304
case 9:
292305
case 10:
293-
tempTemperature.array[x < 9 ? 9-x : 10-x] = incoming;
306+
tempTemperature.array[x < 9 ? 9 - x : 10 - x] = incoming;
294307
bytesToCrc[x % 3] = incoming;
295308
break;
296309
case 12:
297310
case 13:
298311
case 15:
299312
case 16:
300-
tempHumidity.array[x < 15 ? 15-x : 16-x] = incoming;
313+
tempHumidity.array[x < 15 ? 15 - x : 16 - x] = incoming;
301314
bytesToCrc[x % 3] = incoming;
302315
break;
303316
default:

src/SparkFun_SCD30_Arduino_Library.h

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,27 +81,31 @@ class SCD30
8181
bool beginMeasuring(void);
8282
bool StopMeasurement(void); // paulvha
8383

84-
// based on paulvha
84+
bool setAmbientPressure(uint16_t pressure_mbar);
85+
8586
bool getSettingValue(uint16_t registerAddress, uint16_t *val);
86-
bool getForcedRecalibration(uint16_t *val) { return (getSettingValue(COMMAND_SET_FORCED_RECALIBRATION_FACTOR, val)); }
87-
bool getMeasurementInterval(uint16_t *val) { return (getSettingValue(COMMAND_SET_MEASUREMENT_INTERVAL, val)); }
88-
bool getTemperatureOffset(uint16_t *val) { return (getSettingValue(COMMAND_SET_TEMPERATURE_OFFSET, val)); }
89-
bool getAltitudeCompensation(uint16_t *val) { return (getSettingValue(COMMAND_SET_ALTITUDE_COMPENSATION, val)); }
9087
bool getFirmwareVersion(uint16_t *val) { return (getSettingValue(COMMAND_READ_FW_VER, val)); }
91-
9288
uint16_t getCO2(void);
9389
float getHumidity(void);
9490
float getTemperature(void);
95-
float getTemperatureOffset(void);
96-
uint16_t getAltitudeCompensation(void);
9791

92+
uint16_t getMeasurementInterval(void);
93+
bool getMeasurementInterval(uint16_t *val) { return (getSettingValue(COMMAND_SET_MEASUREMENT_INTERVAL, val)); }
9894
bool setMeasurementInterval(uint16_t interval);
99-
bool setAmbientPressure(uint16_t pressure_mbar);
95+
96+
uint16_t getAltitudeCompensation(void);
97+
bool getAltitudeCompensation(uint16_t *val) { return (getSettingValue(COMMAND_SET_ALTITUDE_COMPENSATION, val)); }
10098
bool setAltitudeCompensation(uint16_t altitude);
99+
100+
bool getAutoSelfCalibration(void);
101101
bool setAutoSelfCalibration(bool enable);
102+
103+
bool getForcedRecalibration(uint16_t *val) { return (getSettingValue(COMMAND_SET_FORCED_RECALIBRATION_FACTOR, val)); }
102104
bool setForcedRecalibrationFactor(uint16_t concentration);
105+
106+
float getTemperatureOffset(void);
107+
bool getTemperatureOffset(uint16_t *val) { return (getSettingValue(COMMAND_SET_TEMPERATURE_OFFSET, val)); }
103108
bool setTemperatureOffset(float tempOffset);
104-
bool getAutoSelfCalibration(void);
105109

106110
bool dataAvailable();
107111
bool readMeasurement();

0 commit comments

Comments
 (0)