Multiplied the temperature by 10 to get better accuracy. NACK is making problems again after I2C transmit.

This commit is contained in:
David Žaitlík 2021-07-18 11:42:48 +02:00
parent 42144d74f2
commit 00811846d5
2 changed files with 5 additions and 3 deletions

View File

@ -88,7 +88,7 @@ int8_t scd4x_read_measurement(int * co2, int *temperature, int *relative_humidit
uint32_t co2_ticks = (buffer[0] << 8) + buffer[1];
uint32_t t_ticks = (buffer[3] << 8) + buffer[4];
uint32_t rh_ticks = (buffer[6] << 8) + buffer[7];
int t_degC = -45 + 175 * t_ticks / 65535;
int t_degC = 10*(-45 + 175 * t_ticks / 65535);
int rh_pRH = 100 * rh_ticks / 65535;
if (rh_pRH > 100) {
rh_pRH = 100;

View File

@ -25,9 +25,11 @@ int8_t sht4x_measure(int *temperature, int *relative_humidity)
// start measurement
buffer[0] = START_MEAS_HIGH_PRECISION;
result = i2c_transmit(SHT4X_I2C_ADDRESS<<1, buffer, 1);
// TODO: Proc to vraci NACK? Vyresit.
/*
if (result != I2C_OK) {
return SHT4X_ERROR;
}
}*/
LL_mDelay(100); // 10 ms should be enough
// read out
result = i2c_receive(SHT4X_I2C_ADDRESS<<1, buffer, 6);
@ -38,7 +40,7 @@ int8_t sht4x_measure(int *temperature, int *relative_humidity)
// Convert to T and RH; taken directly from pseudocode in SHT4x datasheet, page 3
uint32_t t_ticks = (buffer[0] << 8) + buffer[1];
uint32_t rh_ticks = (buffer[3] << 8) + buffer[4];
int t_degC = -45 + 175 * t_ticks / 65535;
int t_degC = 10*(-45 + 175 * t_ticks / 65535);
int rh_pRH = -6 + 125 * rh_ticks / 65535;
if (rh_pRH > 100) {
rh_pRH = 100;