Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #define MOISTURE_SENSOR_PIN A0
- #define RELAY_PIN 2
- LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C untuk LCD (pastikan alamat I2C benar) 0x3F/0x27
- unsigned long previousMillis = 0; // Untuk melacak waktu sebelumnya
- const long relayOnDuration = 5000; // Durasi relay ON dalam milidetik
- const int thresholdLow = 700; // Nilai threshold pertama untuk kelembaban tanah
- const int thresholdHigh = 900; // Nilai threshold kedua untuk kelembaban tanah
- void setup() {
- Serial.begin(9600); // Memulai komunikasi Serial dengan baud rate 9600
- pinMode(RELAY_PIN, OUTPUT);
- digitalWrite(RELAY_PIN, HIGH); // Pastikan relay mati pada awalnya
- // Inisialisasi LCD
- lcd.begin(16, 12);
- lcd.backlight(); // Aktifkan backlight LCD
- lcd.setCursor(0, 0); // Mengatur kursor di baris pertama kolom pertama
- lcd.print("Bismillah"); // Menampilkan pesan awal di baris pertama
- delay(10000); // Menunda untuk menampilkan pesan awal
- lcd.clear(); // Membersihkan layar LCD setelah pesan awal
- Serial.println("Bismillah");
- }
- void loop() {
- unsigned long currentMillis = millis(); // Mendapatkan waktu saat ini
- int moistureLevel = analogRead(MOISTURE_SENSOR_PIN);
- // Cetak nilai kelembaban tanah ke Serial Monitor
- Serial.print("Moisture Level: ");
- Serial.println(moistureLevel);
- // Tampilkan nilai sensor kelembaban tanah di baris kedua LCD
- lcd.setCursor(0, 1); // Atur kursor di baris kedua
- lcd.print("Moisture: "); // Tampilkan label
- lcd.print(moistureLevel); // Tampilkan nilai kelembaban tanah
- if (moistureLevel > thresholdHigh) {
- // Tanah sangat kering, aktifkan penyiraman
- lcd.setCursor(0, 0); // Atur kursor di baris pertama
- lcd.print("Tanah Kering"); // Tampilkan pesan
- digitalWrite(RELAY_PIN, LOW); // Hidupkan relay (penyiraman ON)
- Serial.println("Status: Tanah Sangat Kering, Penyiraman ON");
- previousMillis = currentMillis; // Setel waktu saat relay dinyalakan
- } else if (moistureLevel > thresholdLow) {
- // Tanah agak kering, tampilkan pesan
- lcd.setCursor(0, 0); // Atur kursor di baris pertama
- lcd.print("Tanah Sedang"); // Tampilkan pesan
- Serial.println("Status: Tanah Agak Kering, Penyiraman OFF");
- // Matikan relay jika relay sudah menyala sebelumnya
- if (digitalRead(RELAY_PIN) == LOW) {
- digitalWrite(RELAY_PIN, HIGH); // Matikan penyiraman
- Serial.println("Relay dimatikan, Penyiraman OFF");
- }
- } else {
- // Tanah lembab, matikan penyiraman
- lcd.setCursor(0, 0); // Atur kursor di baris pertama
- lcd.print("Tanah Lembab"); // Tampilkan pesan
- Serial.println("Status: Tanah Lembab, Penyiraman OFF");
- // Matikan relay jika relay sudah menyala sebelumnya
- if (digitalRead(RELAY_PIN) == LOW) {
- digitalWrite(RELAY_PIN, HIGH); // Matikan penyiraman
- Serial.println("Relay dimatikan, Penyiraman OFF");
- }
- }
- Serial.println("=====================================");
- delay(2000); // Tambahkan sedikit jeda untuk menghindari pengulangan terlalu cepat
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement