#include <Wire.h> // I2C haberleşme
#include <LiquidCrystal_I2C.h> // LCD
#include "DHT.h" // DHT kütüphanesi
#define DHTPIN 15 // DHT DATA pini
#define DHTTYPE DHT22 // Sensör tipi
#define LDR_PIN 34 // LDR pini
#define RED_PIN 25 // RGB LED R
#define GREEN_PIN 26 // RGB LED G
#define BLUE_PIN 27 // RGB LED B
#define BUTTON_PIN 18 // Buton
DHT dht(DHTPIN, DHTTYPE); // DHT nesnesi
LiquidCrystal_I2C lcd(0x27, 16, 2);
float sicaklik = 0;
float nem = 0;
float lux = 0;
unsigned long lcdSure = 2000;
unsigned long lastLCD = 0;
unsigned long lastSerial = 0;
int ekran = 0;
int buttonState = HIGH;
int lastButton = HIGH;
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
// BUTON
buttonState = digitalRead(BUTTON_PIN);
if (lastButton == HIGH && buttonState == LOW) {
if (lcdSure == 2000) lcdSure = 4000;
else lcdSure = 2000;
Serial.print("LCD suresi degistirildi: ");
Serial.print(lcdSure / 1000);
Serial.println(" sn");
}
lastButton = buttonState;
// SENSOR OKUMA
sicaklik = dht.readTemperature();
nem = dht.readHumidity();
int raw = analogRead(LDR_PIN);
lux = map(raw, 0, 4095, 0, 1000);
// SERIAL (3 sn)
if (millis() - lastSerial > 3000) {
lastSerial = millis();
Serial.print("Nem: ");
Serial.print(nem);
Serial.print("% || Sicaklik: ");
Serial.print(sicaklik);
Serial.print("°C || Isik: ");
Serial.print(lux);
Serial.println(" lux");
}
// LCD (Round Robin)
if (millis() - lastLCD > lcdSure) {
lastLCD = millis();
lcd.clear();
if (ekran == 0) {
lcd.print("NEM");
lcd.setCursor(0,1);
lcd.print(nem);
lcd.print("-");
lcd.print(nem <= 60 ? "LOW" : "HIGH");
}
else if (ekran == 1) {
lcd.print("SICAKLIK");
lcd.setCursor(0,1);
lcd.print(sicaklik);
lcd.print("-");
if (sicaklik < 0) lcd.print("VERY LOW");
else if (sicaklik <= 30) lcd.print("NORMAL");
else lcd.print("HIGH");
}
else {
lcd.print("ISIK");
lcd.setCursor(0,1);
lcd.print(lux < 10 ? "KARANLIK" : "AYDINLIK");
}
ekran = (ekran + 1) % 3;
}
// RGB LED
if (lux < 10) {
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 255);
} else {
if (sicaklik < 0) {
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 150);
analogWrite(BLUE_PIN, 255);
}
else if (sicaklik <= 30) {
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 255);
analogWrite(BLUE_PIN, 0);
}
else if (sicaklik <= 40) {
analogWrite(RED_PIN, 255);
analogWrite(GREEN_PIN, 165);
analogWrite(BLUE_PIN, 0);
}
else {
analogWrite(RED_PIN, 255);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 0);
}
}
}