remember which devices were scanned on which bus and set them accordingly.

This commit is contained in:
Thomas Göttgens
2022-11-12 17:12:40 +01:00
parent 7a67388a97
commit 861ded37db
23 changed files with 177 additions and 119 deletions

View File

@@ -15,8 +15,14 @@ int32_t BME280Sensor::runOnce() {
if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
status = bme280.begin(nodeTelemetrySensorsMap[sensorType]);
if(i2cScanMap[nodeTelemetrySensorsMap[sensorType]].bus == 1) {
#ifdef I2C_SDA1
status = bme280.begin(nodeTelemetrySensorsMap[sensorType], &Wire1);
#endif
} else {
status = bme280.begin(nodeTelemetrySensorsMap[sensorType], &Wire);
}
bme280.setSampling( Adafruit_BME280::MODE_FORCED,
Adafruit_BME280::SAMPLING_X1, // Temp. oversampling
Adafruit_BME280::SAMPLING_X1, // Pressure oversampling

View File

@@ -14,6 +14,13 @@ int32_t BME680Sensor::runOnce() {
if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
if(i2cScanMap[nodeTelemetrySensorsMap[sensorType]].bus == 1) {
#ifdef I2C_SDA1
bme680 = Adafruit_BME680(&Wire1);
#endif
} else {
bme680 = Adafruit_BME680(&Wire);
}
status = bme680.begin(nodeTelemetrySensorsMap[sensorType]);
return initI2CSensor();

View File

@@ -15,6 +15,14 @@ int32_t BMP280Sensor::runOnce() {
if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
if(i2cScanMap[nodeTelemetrySensorsMap[sensorType]].bus == 1) {
#ifdef I2C_SDA1
bmp280 = Adafruit_BMP280(&Wire1);
#endif
} else {
bmp280 = Adafruit_BMP280(&Wire);
}
status = bmp280.begin(nodeTelemetrySensorsMap[sensorType]);
bmp280.setSampling( Adafruit_BMP280::MODE_FORCED,

View File

@@ -14,8 +14,14 @@ int32_t INA219Sensor::runOnce() {
if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
if(i2cScanMap[nodeTelemetrySensorsMap[sensorType]].bus == 1) {
ina219 = Adafruit_INA219(nodeTelemetrySensorsMap[sensorType]);
status = ina219.begin();
#ifdef I2C_SDA1
status = ina219.begin(&Wire1);
#endif
} else {
status = ina219.begin(&Wire);
}
return initI2CSensor();
}

View File

@@ -14,7 +14,13 @@ int32_t INA260Sensor::runOnce() {
if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
status = ina260.begin(nodeTelemetrySensorsMap[sensorType]);
if(i2cScanMap[nodeTelemetrySensorsMap[sensorType]].bus == 1) {
#ifdef I2C_SDA1
status = ina260.begin(nodeTelemetrySensorsMap[sensorType], &Wire1);
#endif
} else {
status = ina260.begin(nodeTelemetrySensorsMap[sensorType], &Wire);
}
return initI2CSensor();
}

View File

@@ -15,7 +15,13 @@ int32_t LPS22HBSensor::runOnce() {
if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
status = lps22hb.begin_I2C(nodeTelemetrySensorsMap[sensorType]);
if(i2cScanMap[nodeTelemetrySensorsMap[sensorType]].bus == 1) {
#ifdef I2C_SDA1
status = lps22hb.begin_I2C(nodeTelemetrySensorsMap[sensorType], &Wire1);
#endif
} else {
status = lps22hb.begin_I2C(nodeTelemetrySensorsMap[sensorType], &Wire);
}
return initI2CSensor();
}

View File

@@ -14,7 +14,13 @@ int32_t MCP9808Sensor::runOnce() {
if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
status = mcp9808.begin(nodeTelemetrySensorsMap[sensorType]);
if(i2cScanMap[nodeTelemetrySensorsMap[sensorType]].bus == 1) {
#ifdef I2C_SDA1
status = mcp9808.begin(nodeTelemetrySensorsMap[sensorType], &Wire1);
#endif
} else {
status = mcp9808.begin(nodeTelemetrySensorsMap[sensorType], &Wire);
}
return initI2CSensor();
}

View File

@@ -14,7 +14,18 @@ int32_t SHTC3Sensor::runOnce() {
if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
status = shtc3.begin();
if (i2cScanMap[SHTC3_ADDR].addr == 0) {
DEBUG_MSG("SHTC3 not found on i2c bus\n");
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
}
if(i2cScanMap[SHTC3_ADDR].bus == 1) {
#ifdef I2C_SDA1
status = shtc3.begin(&Wire1);
#endif
} else {
status = shtc3.begin(&Wire);
}
return initI2CSensor();
}

View File

@@ -24,7 +24,7 @@ class TelemetrySensor
DEBUG_MSG("Could not connect to detected %s sensor.\n Removing from nodeTelemetrySensorsMap.\n", sensorName);
nodeTelemetrySensorsMap[sensorType] = 0;
} else {
DEBUG_MSG("Opened %s sensor on default i2c bus\n", sensorName);
DEBUG_MSG("Opened %s sensor on detected i2c bus\n", sensorName);
setup();
}
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;