const int LampuMerah = 1;
const int LampuKuning = 2;
const int LampuHijau = 3;
#include <LiquidCrystal.h>
#include "DHT.h"
#define DHTPIN 4
LiquidCrystal lcd(7,8,9,10,11,12);
#define DHTTYPE DHT22
DHT dht(DHTPIN,DHTTYPE);
void setup() {
dht.begin();
pinMode(LampuMerah, OUTPUT);
pinMode(LampuKuning, OUTPUT);
pinMode(LampuHijau, OUTPUT);
lcd.begin(16,2);
lcd.print("Lampu LaluLintas");
delay(2000);
lcd.clear();
}
void loop() {
float t = dht.readTemperature();
if(isnan(t)){
lcd.setCursor(0,0);
lcd.print("DHT22 Error");
} else {
// ----- Lampu Merah -----
digitalWrite(LampuMerah, HIGH);
ShowMessage("Tolong Berhenti", t, 715);
digitalWrite(LampuMerah, LOW);
// ----- Lampu Kuning -----
digitalWrite(LampuKuning, HIGH);
ShowMessage("Hati Hati", t, 150);
digitalWrite(LampuKuning, LOW);
// ----- Lampu Hijau -----
digitalWrite(LampuHijau, HIGH);
ShowMessage("Selamat Jalan", t, 715);
digitalWrite(LampuHijau, LOW);
}
}
void DisplayTemp(float t) {
lcd.print("Temp: ");
lcd.print(t);
lcd.print("C ");
// Menentukan cuaca berdasarkan suhu
if(t < 20) {
lcd.print("Dingin");
} else if(t >= 20 && t <= 30) {
lcd.print("Normal");
} else {
lcd.print("Panas");
}
}
void ShowMessage(String text, float t, int delayScroll) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(text);
lcd.setCursor(0,1);
DisplayTemp(t);
for(int PositionCounter = 1; PositionCounter < 15; PositionCounter++){
lcd.scrollDisplayLeft();
delay(delayScroll);
}
}