//Welcome in the project Moch Rijki Supriyatna:("MRS_Iky")
//Smart Greenhouse Otomatis
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
// Pin setup
#define DHTPIN 4
#define DHTTYPE DHT22
#define SOIL_PIN 34 // Potensiometer mewakili kelembaban tanah
#define LDR_PIN 35 // Sensor cahaya (LDR)
#define FAN_RELAY 12
#define PUMP_RELAY 14
#define LIGHT_RELAY 27
#define BUZZER_PIN 26
#define LED_PIN 25
// Thresholds
#define TEMP_THRESHOLD 30
#define SOIL_THRESHOLD 400
#define LIGHT_THRESHOLD 500
// Inisialisasi
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(FAN_RELAY, OUTPUT);
pinMode(PUMP_RELAY, OUTPUT);
pinMode(LIGHT_RELAY, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(FAN_RELAY, LOW);
digitalWrite(PUMP_RELAY, LOW);
digitalWrite(LIGHT_RELAY, LOW);
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
int soil = analogRead(SOIL_PIN);
int light = analogRead(LDR_PIN);
Serial.printf("Temp: %.2f | Hum: %.2f | Soil: %d | Light: %d\n", temp, hum, soil, light);
// LCD Output
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temp);
lcd.print(" H:");
lcd.print(hum);
lcd.setCursor(0, 1);
lcd.print("S:");
lcd.print(soil);
lcd.print(" L:");
lcd.print(light);
// Logic
digitalWrite(FAN_RELAY, temp > TEMP_THRESHOLD ? HIGH : LOW);
digitalWrite(PUMP_RELAY, soil < SOIL_THRESHOLD ? HIGH : LOW);
digitalWrite(LIGHT_RELAY, light < LIGHT_THRESHOLD ? HIGH : LOW);
// Alarm
bool danger = (temp > 35 || soil < 300);
digitalWrite(BUZZER_PIN, danger ? HIGH : LOW);
digitalWrite(LED_PIN, danger ? HIGH : LOW);
delay(2000);
}