При влажности воздуха меньше 30 должно выводиться "Low humidity", при влажности больше 50 "High humidity", ну а больше 30 и меньше 50 - "Normal Humidity". Но вот не задача. Когда на дисплее должна быть надпись "Low humidity", мерцает "Normal Humidity", а под ней очень тускло видно "Low humidity". Код (C++): #include <Adafruit_Sensor.h> #include <LiquidCrystal_I2C.h> #include <DHT.h> #include <DHT_U.h> LiquidCrystal_I2C lcd(0x27, 20, 4); #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { lcd.init(); lcd.backlight(); dht.begin(); } void loop() { // Ожидание 2 секунды перед началом цикла if(millis() > 2000) { // Считываем влажность float h = dht.readHumidity(); // Считываем температуру float t = dht.readTemperature(); // Проверяем измерения. if (isnan(h) || isnan(t)) { lcd.print(F("UNKNOWN ERROR")); return; } // ТЕМПЕРАТУРА ВОЗДУХА // Если меньше 20 - Cold. Если больше 28 - Hot. Если больше 20 и меньше 28 - Normal. if (t < 20) { lcd.setCursor(0, 2); lcd.print("Cold"); } if (t > 28) { lcd.setCursor(0, 2); lcd.print("Hot"); } if (t > 20 || t < 28) { lcd.setCursor(0, 2); lcd.print("Normal Temperature"); } // ВЛАЖНОСТЬ ВОЗДУХА //Если меньше 30 - Low humidity. Если больше 50 - High humidity. Если меньше 50 и больше 30 - Normal humidity if (h < 30) { lcd.setCursor(0, 3); lcd.print("Low humidity"); } if (h > 50) { lcd.setCursor(0, 3); lcd.print("High humidity"); } if (h > 30 || h < 50) { lcd.setCursor(0, 3); lcd.print("Normal humidity"); } lcd.setCursor(0,0); lcd.print(t); lcd.setCursor(0,1); lcd.print(h); } }
Условия лучше привести к виду: Код (C++): if (h < 30) { ..................... } else if (h > 50) { ...................... } else { ...................... } Это касается и температуры и влажности.