#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2 // Pin data DHT22 terhubung ke pin 2 Arduino
#define DHTTYPE DHT22 // Jenis sensor DHT yang digunakan
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat LCD I2C dan ukuran (16x2)
const int trigPin = 7; // Pin trigger sensor ultrasonik terhubung ke pin 7 Arduino
const int echoPin = 6; // Pin echo sensor ultrasonik terhubung ke pin 6 Arduino
const int ldrPin = A0; // Pin sensor LDR terhubung ke pin A0 Arduino
const int ledPin = 13; // Pin LED terhubung ke pin 13 Arduino
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
pinMode(trigPin, OUTPUT); // Atur pin trigger sensor ultrasonik sebagai output
pinMode(echoPin, INPUT); // Atur pin echo sensor ultrasonik sebagai input
pinMode(ldrPin, INPUT); // Atur pin sensor LDR sebagai input
pinMode(ledPin, OUTPUT); // Atur pin LED sebagai output
}
void loop() {
// Baca data dari sensor DHT22
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Baca jarak dari sensor ultrasonik
float distance = getUltrasonicDistance();
// Baca nilai dari sensor LDR
int lightValue = analogRead(ldrPin);
// Tampilkan nilai sensor pada LCD
lcd.clear(); // Bersihkan LCD sebelum menampilkan nilai baru
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print(" %");
delay(2000); // Tampilkan setiap nilai sensor selama 2 detik
lcd.clear(); // Bersihkan LCD sebelum menampilkan nilai baru
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm");
lcd.setCursor(0, 1);
lcd.print("Light: ");
lcd.print(lightValue);
// Menghidupkan LED berdasarkan kondisi sensor LDR
if (lightValue < 500) {
digitalWrite(ledPin, HIGH); // Nyalakan LED jika kondisi cahaya rendah
} else {
digitalWrite(ledPin, LOW); // Matikan LED jika kondisi cahaya cukup tinggi
}
delay(2000); // Tampilkan setiap nilai sensor selama 2 detik
}
float getUltrasonicDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float duration = pulseIn(echoPin, HIGH);
float distance = (duration * 0.0343) / 2;
return distance;
}