#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 сек
}
mq2Breakout
bmp180Breakout