Untitled

 avatar
unknown
plain_text
9 months ago
2.2 kB
11
Indexable
#include "DHT.h"  // Library untuk sensor DHT11

// --- Deklarasi pin dan tipe sensor ---
#define DHTPIN 2          // Pin data DHT11 terhubung ke pin digital 2
#define DHTTYPE DHT11     // Jenis sensor DHT yang digunakan
DHT dht(DHTPIN, DHTTYPE);

#define BUZZER_PIN 8      // Pin buzzer
#define SOIL_PIN A0        // Sensor kelembapan tanah (analog)
#define RAIN_PIN A1        // Sensor hujan (analog) → gunakan pin analog agar threshold bisa diterapkan

// --- Nilai ambang batas (threshold) ---
int soilThreshold = 700;     // Nilai batas kelembapan tanah (semakin besar = semakin kering)
float tempThreshold = 30.0;  // Suhu maksimum (°C)
int rainThreshold = 500;     // Nilai batas sensor hujan (semakin kecil = hujan)

void setup() {
  Serial.begin(9600);
  pinMode(BUZZER_PIN, OUTPUT);
  dht.begin();
  
  // Tambahan untuk kejelasan
  Serial.println("=== Sistem Sensor Otomatis: Kelembapan, Suhu, dan Hujan ===");
}

void loop() {
  // --- Pembacaan sensor kelembapan tanah ---
  int soilMoisture = analogRead(SOIL_PIN);
  Serial.print("Kelembapan Tanah (0-1023): ");
  Serial.println(soilMoisture);

  if (soilMoisture > soilThreshold) {
    Serial.println("⚠️ Tanah kering! Alarm menyala.");
    buzz();
  }

  // --- Pembacaan suhu dari DHT11 ---
  float temperature = dht.readTemperature();
  if (isnan(temperature)) {
    Serial.println("Gagal membaca data suhu!");
  } else {
    Serial.print("Suhu: ");
    Serial.print(temperature);
    Serial.println(" °C");
    if (temperature > tempThreshold) {
      Serial.println("⚠️ Suhu tinggi! Alarm menyala.");
      buzz();
    }
  }

  // --- Pembacaan sensor hujan ---
  int rainValue = analogRead(RAIN_PIN);
  Serial.print("Nilai Sensor Hujan (0-1023): ");
  Serial.println(rainValue);

  if (rainValue < rainThreshold) {
    Serial.println("🌧️ Hujan terdeteksi! Alarm menyala.");
    buzz();
  }

  Serial.println("--------------------------------");
  delay(2000); // jeda antar pembacaan
}

// --- Fungsi Buzzer ---
void buzz() {
  tone(BUZZER_PIN, 1000);  // Bunyi buzzer 1000 Hz
  delay(500);              // Durasi bunyi 0.5 detik
  noTone(BUZZER_PIN);      // Matikan buzzer
}
Editor is loading...
Leave a Comment