#include <U8g2lib.h>
#include <Wire.h>
#include <DHT.h>
// OLED через I2C
U8G2_SSD1306_128X64_NONAME_F_HW_I2C display(U8G2_R0);
// DHT22
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Сенсори
#define MQ2_PIN A0
#define PHOTO_PIN A1
void setup() {
dht.begin();
display.begin();
}
void loop() {
float temperature = dht.readTemperature();
int smokeValue = analogRead(MQ2_PIN);
int lightValue = analogRead(PHOTO_PIN);
bool smoke = smokeValue > 400;
bool temp = !isnan(temperature) && temperature > 30;
bool light = lightValue < 300;
bool normal = !(smoke || temp || light);
display.firstPage();
do {
int y = 10;
if (normal) {
display.setFont(u8g2_font_ncenB08_tr);
display.drawStr(0, y, "Стан нормальний");
} else {
if (smoke) {
display.drawStr(0, y, "ДИМ! ТРИВОГА!"); y += 10;
}
if (temp) {
display.drawStr(0, y, "ВИСОКА ТЕМП!"); y += 10;
}
if (light) {
display.drawStr(0, y, "ЗАТЕМНЕННЯ!"); y += 10;
}
}
char buffer[20];
snprintf(buffer, sizeof(buffer), "Темп: %.1f C", temperature);
display.drawStr(0, 45, buffer);
snprintf(buffer, sizeof(buffer), "Дим: %d", smokeValue);
display.drawStr(0, 55, buffer);
snprintf(buffer, sizeof(buffer), "Світло: %d", lightValue);
display.drawStr(0, 63, buffer);
} while (display.nextPage());
delay(1000);
}