#include <DHT.h>
#include <Servo.h>
#define LED1_PIN 12 // Pin untuk lampu LED
#define DHTPIN 2 // Pin data DHT22 terhubung ke pin 2 Arduino
#define DHTTYPE DHT22 // Tipe sensor DHT yang digunakan
#define LED2_PIN 13 // Pin untuk lampu LED
#define TRIGGER_PIN 10 // Pin trigger untuk sensor ultrasonik
#define ECHO_PIN 11 // Pin echo untuk sensor ultrasonik
#define servoPin 6 //Pin untuk servo
DHT dht(DHTPIN, DHTTYPE);
Servo myservo;
void setup() {
Serial.begin(9600);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
myservo.attach(servoPin);
Serial.println(F("DHTxx test!"));
dht.begin();
}
void loop() {
// Baca suhu dan kelembaban dari sensor DHT22
float temperature = dht.readTemperature();
// Baca jarak detak dengan tembok menggunakan sensor ultrasonik
long duration, jarak;
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
jarak = (duration / 2) / 29.1; // Kalkulasi jarak dalam centimeter
// Cek jarak mundur mobil dengan sensor ultrasonik
if (jarak < 100) { // Kurang dari 100 cm (1 meter)
// Jika jarak kurang dari 1 meter, aktifkan lampu LED
digitalWrite(LED2_PIN, HIGH);
delay(1000); // LED aktif selama 1 detik
digitalWrite(LED2_PIN, LOW);
}
// Cek suhu dalam kabin mobil
if (temperature > 35) {
// Jika suhu lebih dari 35 derajat Celsius, buka servo motor (90 derajat)
myservo.write(90);
delay(20);
digitalWrite(LED1_PIN, HIGH);
delay(1000);
} else {
myservo.write(0); // Tutup servo motor (0 derajat)
delay(20);
digitalWrite(LED1_PIN, LOW);
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hic = dht.computeHeatIndex(t, false);
Serial.print(F("Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.println(" cm");
delay(1000);
}
}