#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define BUTTON_PIN 3
#define LDR_PIN A0
#define NTC_PIN A1
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(DHTPIN, DHTTYPE);
int displayMode = 0;
bool lastButtonState = LOW;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
lcd.init();
lcd.backlight();
dht.begin();
}
void loop() {
bool buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW && lastButtonState == HIGH) {
displayMode = (displayMode + 1) % 4;
delay(200);
}
lastButtonState = buttonState;
// Получение данных с датчиков
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
int ldrValue = analogRead(LDR_PIN);
int ntcValue = analogRead(NTC_PIN);
// Обработка режима отображения
lcd.clear();
switch (displayMode) {
case 0: // Все датчики
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.print(temperature, 1);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Hum:");
lcd.print(humidity, 1);
lcd.print("%");
lcd.setCursor(0, 2);
lcd.print("Light:");
lcd.print(ldrValue);
lcd.setCursor(0, 3);
lcd.print("NTC:");
lcd.print(ntcValue);
break;
case 1: // DHT22
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.print(temperature, 1);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Hum:");
lcd.print(humidity, 1);
lcd.print("%");
break;
case 2: // LDR
lcd.setCursor(0, 0);
lcd.print("Light Sensor:");
lcd.setCursor(0, 1);
lcd.print(ldrValue);
break;
case 3: // NTC
lcd.setCursor(0, 0);
lcd.print("NTC Sensor:");
lcd.setCursor(0, 1);
lcd.print(ntcValue);
break;
}
delay(500); // Обновление каждые 500 мс
}