#include <DHT.h>
#define DHTPIN 5 // Pin yang terhubung ke DHT22
#define DHTTYPE DHT22 // Jenis sensor DHT (DHT22)
DHT dht(DHTPIN, DHTTYPE);
const int trigPin = 7; // Pin trigger HC-SR04
const int echoPin = 8; // Pin echo HC-SR04
static unsigned long timer1 = 0;
static unsigned long timer2 = 0;
const long SensorInterval = 1000;
const long ShowInterval = 2000;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <Wire.h>
int showMode = 0;
int h, t;
float duration, distance1, distance2;
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
if (millis() - timer1 >= SensorInterval) {
timer1 = millis();
sensor_dht22();
sensor_hcsr();
//Serial.println("data sensor tiap detik");
}
if (millis() - timer2 >= ShowInterval) {
if (showMode == 0) {
lcd.clear();
tampil_dht22();
}
else if (showMode = 1) {
lcd.clear();
tampil_hcsr();
}
showMode += 1;
if (showMode > 1) {
showMode = 0;
}
timer2 = millis();
}
}
void sensor_dht22() {
h = dht.readHumidity();
t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
}
void sensor_hcsr() {
digitalWrite(trigPin, LOW); delayMicroseconds (2);
digitalWrite(trigPin, HIGH); delayMicroseconds (10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance1 = duration * 0.034 / 2;
distance2 = (distance1 * 1.041) - 0.7605;
}
void tampil_dht22() {
lcd.setCursor(0, 0);
lcd.print("T: ");
lcd.print(t);
lcd.print(" *C");
lcd.setCursor(0, 1);
lcd.print("H: ");
lcd.print(h);
lcd.print(" %");
Serial.print("DHT22 - Temperature: ");
Serial.print(t);
Serial.print("°C, Humidity: ");
Serial.print(h);
Serial.println("%");
}
void tampil_hcsr() {
lcd.setCursor(0, 1);
lcd.print("Tandon: ");
lcd.print(" PENUH");
Serial.print("HC-SR04 - Distance: ");
Serial.print(distance1);
Serial.println(" cm");
}