Please try this.
#include <LiquidCrystal.h> //pripojíme knižnicu pre LCD 16x2
#include <Wire.h> // pripojíme knižnicu pre prepojovacie káble
#include <Adafruit_Sensor.h> // pripojíme knižnicu pre senzory
#include <Adafruit_BMP085_U.h> // pripojíme knižnicu pre senzor BMP180( BMP085 )
#include <cactus_io_SHT31.h> // pripojíme knižnicu pre senzor SHT31
//Prepojenie BMP180 a SHT31 k Arduinu UNO
//Pripojíme SCL na analógový vstup A5
//Pripojíme SDA na analógový vstup A4
//Pripojáme VDA na 3,3 Volta
//Pripojím GND na GND Arduino
int backLight = 9;
const int buttonPin = 6;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; // priradíme vývody
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // zadáme vývody na LCD monitore
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
cactus_io_SHT31 sht31;
void setup()
{
Serial.begin(9600); //Priradíme Serial Monitor
pinMode(backLight, HIGH);
digitalWrite(backLight, HIGH);
pinMode(buttonPin, INPUT);
lcd.begin(16, 2); // Zapneme obrazovku
lcd.print(" METEOSTANICA ");// Vypíše nám Meteostanica Viktor
lcd.setCursor(0, 1);
lcd.print(" Viktor Joba 4F ");
delay(1500); // oneskorenie v ms
lcd.clear(); // vyčistíme obrazovku
if (!bmp.begin())
{
// cyklus na ten prípad ak by bol nijaky problem so senzorom BMP180
lcd.print("NO BMP180 DETECTED!");
while (1);
}
// cyklus na ten prípad ak by bol nijaky problem so senzorom SHT31
if (!sht31.begin()) {
lcd.println("NO SHT31 DETECTED!"); //
while (1) ;
}
}
void loop()
{
sensors_event_t event; // vytvoríme nove udalosti
bmp.getEvent(&event);
if (event.pressure)
{
float temperature;
bmp.getTemperature(&temperature); // načítame hodnotu teploty zo senzora BMP180
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState)
{
if (buttonState == HIGH)
{
buttonPushCounter++;
}
if (buttonPushCounter == 0)
{
lcd.setCursor(0, 0); // nastvíme kurzor na začiatok prvého riadku
lcd.print("T:");
lcd.print(temperature); // vypíše nám teplotu s nepresnosťou +/- 2
lcd.print(char(178)); // znak
lcd.print("C");
}
else if (buttonPushCounter == 1)
{
lcd.print(" H:");
lcd.print(round(sht31.getHumidity())); // načíta hodnotu vlhkosti zo senzora SHT31 s nepresnostou
lcd.print("%");
}
else if (buttonPushCounter == 2)
{
lcd.setCursor(0, 0); // nastavíme kurzor na začiatok druhého riadku
lcd.print("P:");
lcd.print(event.pressure); // načítame hodnotu tlaku zo senzora BMP180
lcd.print("hPa");
}
else
{
buttonPushCounter = 0;
}
delay(50);
lastButtonState = buttonState;
}
}
else
{
lcd.print("ERROR");
}
delay(250);
}