Average from all sensors for better accuracy
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,7 @@ void setup() {
|
|||||||
lcd.clear();
|
lcd.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Print temperature and humidity to LCD
|
||||||
void printLCD(float temperature, float humidity, float pressure) {
|
void printLCD(float temperature, float humidity, float pressure) {
|
||||||
lcd.clear();
|
lcd.clear();
|
||||||
|
|
||||||
@@ -34,7 +35,8 @@ void printLCD(float temperature, float humidity, float pressure) {
|
|||||||
lcd.print(pres);
|
lcd.print(pres);
|
||||||
}
|
}
|
||||||
|
|
||||||
float measure_htu21d(int data) {
|
// Measure from HTU21D
|
||||||
|
float measure_htu21d(String data) {
|
||||||
float temperature;
|
float temperature;
|
||||||
float humidity;
|
float humidity;
|
||||||
|
|
||||||
@@ -44,9 +46,9 @@ float measure_htu21d(int data) {
|
|||||||
weatherShield.HTU21D.set_i2c_master_mode(htu21_i2c_no_hold);
|
weatherShield.HTU21D.set_i2c_master_mode(htu21_i2c_no_hold);
|
||||||
weatherShield.HTU21D.read_temperature_and_relative_humidity(&temperature, &humidity);
|
weatherShield.HTU21D.read_temperature_and_relative_humidity(&temperature, &humidity);
|
||||||
|
|
||||||
if (data == 0) {
|
if (data == "temp") {
|
||||||
return temperature;
|
return temperature;
|
||||||
} else {
|
} else if (data == "humi") {
|
||||||
return humidity;
|
return humidity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,7 +58,8 @@ float measure_htu21d(int data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float measure_ms5637(int data) {
|
// Measure from MS5637
|
||||||
|
float measure_ms5637(String data) {
|
||||||
float temperature;
|
float temperature;
|
||||||
float pressure;
|
float pressure;
|
||||||
|
|
||||||
@@ -65,9 +68,9 @@ float measure_ms5637(int data) {
|
|||||||
if (weatherShield.MS5637.is_connected()) {
|
if (weatherShield.MS5637.is_connected()) {
|
||||||
weatherShield.MS5637.read_temperature_and_pressure(&temperature, &pressure);
|
weatherShield.MS5637.read_temperature_and_pressure(&temperature, &pressure);
|
||||||
|
|
||||||
if (data == 0) {
|
if (data == "temp") {
|
||||||
return temperature;
|
return temperature;
|
||||||
} else {
|
} else if (data == "pres") {
|
||||||
return pressure;
|
return pressure;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -76,12 +79,89 @@ float measure_ms5637(int data) {
|
|||||||
lcd.print("Napaka senzorja 2!"); }
|
lcd.print("Napaka senzorja 2!"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Measure from MS8607
|
||||||
|
float measure_ms8607(String data) {
|
||||||
|
float temperature;
|
||||||
|
float pressure;
|
||||||
|
float humidity;
|
||||||
|
|
||||||
|
weatherShield.selectMS8607();
|
||||||
|
|
||||||
|
if (weatherShield.MS8607.is_connected()) {
|
||||||
|
weatherShield.MS8607.set_humidity_i2c_master_mode(ms8607_i2c_hold);
|
||||||
|
weatherShield.MS8607.read_temperature_pressure_humidity( &temperature, &pressure, &humidity);
|
||||||
|
|
||||||
|
if (data == "temp") {
|
||||||
|
return temperature;
|
||||||
|
} else if (data == "humi") {
|
||||||
|
return humidity;
|
||||||
|
} else if (data == "pres") {
|
||||||
|
return pressure;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lcd.setCursor(2, 0);
|
||||||
|
lcd.print("Napaka senzorja 3!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Measure from TSYS01
|
||||||
|
float measure_tsys01(String data) {
|
||||||
|
float temperature;
|
||||||
|
|
||||||
|
weatherShield.selectTSYS01();
|
||||||
|
|
||||||
|
if (weatherShield.TSYS01.is_connected()) {
|
||||||
|
weatherShield.TSYS01.read_temperature(&temperature);
|
||||||
|
|
||||||
|
if (data == "temp") {
|
||||||
|
return temperature;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lcd.setCursor(2, 0);
|
||||||
|
lcd.print("Napaka senzorja 4!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Measure from TSD305
|
||||||
|
float measure_tsd305(String data) {
|
||||||
|
float temperature;
|
||||||
|
float object_temperature;
|
||||||
|
|
||||||
|
weatherShield.selectTSD305();
|
||||||
|
|
||||||
|
if (weatherShield.TSD305.is_connected()) {
|
||||||
|
weatherShield.TSD305.read_temperature_and_object_temperature(&temperature, &object_temperature);
|
||||||
|
|
||||||
|
if (data == "temp") {
|
||||||
|
return temperature;
|
||||||
|
} else if (data == "obj_temp") {
|
||||||
|
return object_temperature;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lcd.setCursor(2, 0);
|
||||||
|
lcd.print("Napaka senzorja 5!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float avg(String data) {
|
||||||
|
if (data == "temp") {
|
||||||
|
float avgTemp = (measure_htu21d("temp") + measure_ms5637("temp") + measure_ms8607("temp") + measure_tsys01("temp") + measure_tsd305("temp")) / 5;
|
||||||
|
return avgTemp;
|
||||||
|
} else if (data == "humi") {
|
||||||
|
float avgHum = (measure_htu21d("humi") + measure_ms8607("humi")) / 2;
|
||||||
|
return avgHum;
|
||||||
|
} else if (data == "pres") {
|
||||||
|
float avgPres = (measure_ms8607("pres") + measure_ms5637("pres")) / 2;
|
||||||
|
return avgPres;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
StaticJsonDocument<100> jsonBuffer;
|
StaticJsonDocument<100> jsonBuffer;
|
||||||
|
|
||||||
float temperature = measure_ms5637(0);
|
float temperature = avg("temp");
|
||||||
float pressure = measure_ms5637(1);
|
float pressure = avg("pres");
|
||||||
float humidity = measure_htu21d(1);
|
float humidity = avg("humi");
|
||||||
|
|
||||||
printLCD(temperature, humidity, pressure);
|
printLCD(temperature, humidity, pressure);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user