#include <dht.h> // sensor library using lib from https://www.ardumotive.com/how-to-use-dht-22-sensor-en.html
#include <LiquidCrystal_I2C.h> // LCD library using from https://www.ardumotive.com/i2clcden.html for the i2c LCD library
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp180;
dht DHT;
#define MQ2_ANA A1
#define MQ2_DIG 2
#define DHT22_PIN 5
LiquidCrystal_I2C lcd(0x27,20,4);
float hum; // Влажность
float temp; // Температура
float pressure; // Давление
float altitude; // Высота
void setup() {
Serial.begin(9600);
pinMode(MQ2_ANA, INPUT);
pinMode(MQ2_DIG, INPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
lcd.init();
lcd.backlight();
if (!bmp180.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}
void loop() {
int chk = DHT.read22(DHT22_PIN);
int val = analogRead(MQ2_ANA);
int state = digitalRead(MQ2_DIG);
Serial.print("Pressure = ");
Serial.print(bmp180.readPressure());
Serial.println(" Pa");
Serial.print("Altitude = ");
Serial.print(bmp180.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp180.readSealevelPressure());
Serial.println(" Pa");
Serial.print("Real altitude = ");
Serial.print(bmp180.readAltitude(120000));
Serial.println(" meters");
Serial.println();
Serial.print("Gas: ");
Serial.println(analogRead(MQ2_ANA));
if (state == HIGH){
for(int i=600;i<1500;i+=3){
tone(7,i);
digitalWrite(8,i);
delay(1);
}
for(int i=1500;i>600;i-=3){
tone(7,i);
digitalWrite(8,i);
delay(1);
}
}
else {
tone(7,0);
digitalWrite(8, LOW);
}
// Чтение данных с BMP180 и DHT22
pressure = bmp180.readPressure();
altitude = bmp180.readAltitude();
hum = DHT.humidity;
temp= DHT.temperature;
// Вывод на LCD
lcd.setCursor(0,0);
lcd.print("Vlaznost: ");
lcd.print(hum);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("temp: ");
lcd.print(temp);
lcd.println(" C");
lcd.setCursor(0,2);
lcd.print("Davlenie: ");
lcd.print(pressure / 100); // Перевод в hPa
lcd.print(" hPa");
lcd.setCursor(0,3);
lcd.print("Visota: ");
lcd.print(altitude);
lcd.print(" m");
delay(2000); //задержка 2 сек
}