//www.youtube.com/c/engineer2you
#include <Wire.h>
#include <Sodaq_SHT2x.h> //for SHT21 sensor
//-------------------------------BME280
#include <Arduino.h>
//#include <BMx280I2C.h>
#define I2C_ADDRESS 0x76
BMx280I2C bmx280(I2C_ADDRESS); //create object I2C Address 0x76
//-------------------------------DHT22
#include <DHT.h>;
#define DHT_PIN 14 // Output of DHT22 to pin 14 Arduino
#define DHT_TYPE DHT22 // DHT22 (AM2302)
DHT dht(DHT_PIN, DHT_TYPE); // Initialize DHT sensor for Arduino 16MHz
int chk;
float hum; //Stores humidity value
float temp; //Stores temperature value
//-------------------------------DHT22
void setup() {
Wire.begin();
Serial.begin(9600);
dht.begin(); //DHT22
//---------------------------------------------------------BMP280
if (!bmx280.begin()) {
Serial.println("begin() failed. check your BMx280 Interface and I2C Address.");
while (1);
}
if (bmx280.isBME280())
Serial.println("sensor is a BME280");
else Serial.println("sensor is a BMP280");
//reset sensor to default parameters.
bmx280.resetToDefaults();
//by default sensing is disabled and must be enabled by setting a non-zero
//oversampling setting.
//set an oversampling setting for pressure and temperature measurements.
bmx280.writeOversamplingPressure(BMx280MI::OSRS_P_x16);
bmx280.writeOversamplingTemperature(BMx280MI::OSRS_T_x16);
//if sensor is a BME280, set an oversampling setting for humidity measurements.
if (bmx280.isBME280())
bmx280.writeOversamplingHumidity(BMx280MI::OSRS_H_x16);
//---------------------------------------------------------BMP280
}
void loop() {
//////////////BMP280
if (!bmx280.measure()) {
Serial.println("could not start measurement, is a measurement already running?");
return;
}
//wait for the measurement to finish
do {
delay(100);
} while (!bmx280.hasValue());
if (bmx280.isBME280()) {
double bme280_humid = map(bmx280.getHumidity(), 22.59, 67.99, 40, 75);
Serial.print("--------------------BME280 Humidity: ");
Serial.println(bme280_humid);
}
double bme280_temp = bmx280.getTemperature() + 2.5;
Serial.print("BME280 Temp: ");
Serial.println(bme280_temp);
delay(1000);
//////////////SHT21
double sht21_humid = map(SHT2x.GetHumidity(), 30.67, 81.29, 40, 75);
Serial.print("--------------------SHT21 Humidity: ");
Serial.println(sht21_humid);
double sht21_temp = SHT2x.GetTemperature() + 2.3;
Serial.print("SHT21 Temp: ");
Serial.println(sht21_temp);
delay(1000);
//////////////DHT22
hum = dht.readHumidity();
//hum = hum + 4.9;
hum = map(hum, 20.6, 69.5, 40, 75);
temp = dht.readTemperature();
temp = temp + 2.8;
Serial.print("--------------------DHT22 Humidity: ");
Serial.println(hum);
Serial.print("DHT22 Temp: ");
Serial.println(temp);
Serial.println("***");
Serial.println("***");
Serial.println("***");
delay(10000);
}
double map(double x, double in_min, double in_max, double out_min, double out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}