forked from airgradienthq/arduino
improved CO2 code (details https://forum.airgradient.com/t/s8-co2-reading-of-1/69/15)
This commit is contained in:
@ -607,47 +607,27 @@ const char* AirGradient::getCO2(int retryLimit) {
|
|||||||
return Char_CO2;
|
return Char_CO2;
|
||||||
}
|
}
|
||||||
int AirGradient::getCO2_Raw(){
|
int AirGradient::getCO2_Raw(){
|
||||||
int retry = 0;
|
const byte CO2Command[] = {0xFE, 0X44, 0X00, 0X08, 0X02, 0X9F, 0X25};
|
||||||
CO2_READ_RESULT result;
|
byte CO2Response[] = {0,0,0,0,0,0,0};
|
||||||
const byte CO2Command[] = {0xFE, 0X44, 0X00, 0X08, 0X02, 0X9F, 0X25};
|
|
||||||
byte CO2Response[] = {0,0,0,0,0,0,0};
|
|
||||||
|
|
||||||
while(!(_SoftSerial_CO2->available())) {
|
_SoftSerial_CO2->write(CO2Command, 7);
|
||||||
retry++;
|
delay(100); //give the sensor a bit of time to respond
|
||||||
// keep sending request until we start to get a response
|
|
||||||
_SoftSerial_CO2->write(CO2Command, 7);
|
|
||||||
delay(50);
|
|
||||||
if (retry > 10) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int timeout = 0;
|
|
||||||
|
|
||||||
while (_SoftSerial_CO2->available() < 7) {
|
|
||||||
timeout++;
|
|
||||||
if (timeout > 10) {
|
|
||||||
while(_SoftSerial_CO2->available())
|
|
||||||
_SoftSerial_CO2->read();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
delay(50);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (_SoftSerial_CO2->available()){
|
||||||
for (int i=0; i < 7; i++) {
|
for (int i=0; i < 7; i++) {
|
||||||
int byte = _SoftSerial_CO2->read();
|
int byte = _SoftSerial_CO2->read();
|
||||||
if (byte == -1) {
|
CO2Response[i] = byte;
|
||||||
result.success = false;
|
if (CO2Response[0] != 254) {
|
||||||
return -1;
|
return -1; //error code for debugging
|
||||||
}
|
}
|
||||||
CO2Response[i] = byte;
|
}
|
||||||
}
|
unsigned long val = CO2Response[3]*256 + CO2Response[4];
|
||||||
int valMultiplier = 1;
|
|
||||||
int high = CO2Response[3];
|
|
||||||
int low = CO2Response[4];
|
|
||||||
unsigned long val = high*256 + low;
|
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -2; //error code for debugging
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//END CO2 FUNCTIONS //
|
//END CO2 FUNCTIONS //
|
||||||
|
Reference in New Issue
Block a user