Advertisement
AnshorFalahi

DHT11 Relay Arduino Uno

Sep 21st, 2024
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <DHT.h>
  4.  
  5. #define DHTPIN 2      // Pin sensor DHT11
  6. #define DHTTYPE DHT11 // Tipe sensor DHT11
  7.  
  8. #define relayKipas 7  // Pin relay untuk kipas
  9. #define relayLampu 6  // Pin relay untuk lampu
  10.  
  11. DHT dht(DHTPIN, DHTTYPE);
  12.  
  13. // Inisialisasi LCD I2C dengan alamat 0x27 dan ukuran 16x2
  14. LiquidCrystal_I2C lcd(0x27, 16, 2);
  15.  
  16. void setup() {
  17.   Serial.begin(9600);
  18.   dht.begin();
  19.  
  20.   // Set pin relay sebagai output
  21.   pinMode(relayKipas, OUTPUT);
  22.   pinMode(relayLampu, OUTPUT);
  23.  
  24.   // Matikan kipas dan lampu di awal
  25.   digitalWrite(relayKipas, HIGH);  // HIGH = relay tidak aktif
  26.   digitalWrite(relayLampu, HIGH);
  27.  
  28.   // Inisialisasi LCD
  29.   lcd.init();
  30.   lcd.backlight();  // Nyalakan backlight LCD
  31.  
  32.   // Tampilkan pesan awal di LCD
  33.   lcd.setCursor(0, 0);
  34.   lcd.print("Sistem mulai");
  35.   lcd.setCursor(0, 1);
  36.   lcd.print("Kipas Lampu OFF");
  37.  
  38.   delay(2000);  // Tunda 2 detik sebelum memulai loop
  39. }
  40.  
  41. void loop() {
  42.   float suhu = dht.readTemperature();  // Baca suhu
  43.   float kelembaban = dht.readHumidity();  // Baca kelembaban
  44.  
  45.   // Cek apakah pembacaan valid
  46.   if (isnan(suhu) || isnan(kelembaban)) {
  47.     Serial.println("Gagal membaca dari sensor DHT!");
  48.     lcd.clear();
  49.     lcd.setCursor(0, 0);
  50.     lcd.print("Error baca DHT");
  51.     return;
  52.   }
  53.  
  54.   // Tampilkan data suhu dan kelembaban di Serial Monitor
  55.   Serial.print("Suhu: ");
  56.   Serial.print(suhu);
  57.   Serial.print(" *C, Kelembaban: ");
  58.   Serial.print(kelembaban);
  59.   Serial.println(" %");
  60.  
  61.   // Tampilkan suhu dan kelembaban di LCD
  62.   lcd.clear();  // Bersihkan layar sebelum menampilkan data baru
  63.   lcd.setCursor(0, 0);
  64.   lcd.print("S:");
  65.   lcd.print(suhu);
  66.   lcd.print("C ");
  67.   lcd.setCursor(9, 0);
  68.   lcd.print("K:");
  69.   lcd.print(kelembaban);
  70.   lcd.print("%");
  71.  
  72.   // Logika kontrol kipas
  73.   if (suhu > 31) {  // Suhu lebih dari 30°C, nyalakan kipas
  74.     digitalWrite(relayKipas, LOW);  // LOW = relay aktif
  75.     Serial.println("Kps:ON");    // Tampilkan status kipas
  76.     lcd.setCursor(0, 1);
  77.     lcd.print("Kps:ON  ");       // Tampilkan di LCD
  78.   } else {
  79.     digitalWrite(relayKipas, HIGH);  // Matikan kipas
  80.     Serial.println("Kps:OFF");   // Tampilkan status kipas
  81.     lcd.setCursor(0, 1);
  82.     lcd.print("Kps:OFF");       // Tampilkan di LCD
  83.   }
  84.  
  85.   // Logika kontrol lampu
  86.   if (kelembaban < 40) {  // Kelembaban kurang dari 40%, nyalakan lampu
  87.     digitalWrite(relayLampu, LOW);  // Nyalakan lampu
  88.     Serial.println("Lmp:ON");    // Tampilkan status lampu
  89.     lcd.setCursor(9, 1);            // Tampilkan di LCD pada posisi yang berbeda
  90.     lcd.print("Lmp:ON");
  91.   } else {
  92.     digitalWrite(relayLampu, HIGH);  // Matikan lampu
  93.     Serial.println("Lmp:OFF");   // Tampilkan status lampu
  94.     lcd.setCursor(9, 1);
  95.     lcd.print("Lmp:OFF");
  96.   }
  97.  
  98.   delay(2000);  // Tunggu 2 detik sebelum membaca lagi
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement