mirror of https://github.com/arendst/Tasmota.git
45 lines
1.2 KiB
Arduino
45 lines
1.2 KiB
Arduino
|
#include <Wire.h>
|
||
|
#include "Adafruit_SGP30.h"
|
||
|
|
||
|
Adafruit_SGP30 sgp;
|
||
|
|
||
|
void setup() {
|
||
|
Serial.begin(9600);
|
||
|
Serial.println("SGP30 test");
|
||
|
|
||
|
if (! sgp.begin()){
|
||
|
Serial.println("Sensor not found :(");
|
||
|
while (1);
|
||
|
}
|
||
|
Serial.print("Found SGP30 serial #");
|
||
|
Serial.print(sgp.serialnumber[0], HEX);
|
||
|
Serial.print(sgp.serialnumber[1], HEX);
|
||
|
Serial.println(sgp.serialnumber[2], HEX);
|
||
|
|
||
|
// If you have a baseline measurement from before you can assign it to start, to 'self-calibrate'
|
||
|
//sgp.setIAQBaseline(0x8E68, 0x8F41); // Will vary for each sensor!
|
||
|
}
|
||
|
|
||
|
int counter = 0;
|
||
|
void loop() {
|
||
|
if (! sgp.IAQmeasure()) {
|
||
|
Serial.println("Measurement failed");
|
||
|
return;
|
||
|
}
|
||
|
Serial.print("TVOC "); Serial.print(sgp.TVOC); Serial.print(" ppb\t");
|
||
|
Serial.print("eCO2 "); Serial.print(sgp.eCO2); Serial.println(" ppm");
|
||
|
delay(1000);
|
||
|
|
||
|
counter++;
|
||
|
if (counter == 30) {
|
||
|
counter = 0;
|
||
|
|
||
|
uint16_t TVOC_base, eCO2_base;
|
||
|
if (! sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
|
||
|
Serial.println("Failed to get baseline readings");
|
||
|
return;
|
||
|
}
|
||
|
Serial.print("****Baseline values: eCO2: 0x"); Serial.print(eCO2_base, HEX);
|
||
|
Serial.print(" & TVOC: 0x"); Serial.println(TVOC_base, HEX);
|
||
|
}
|
||
|
}
|