#include <Arduino.h>
#include <Servo.h>
#include "DHT.h"
// Pin konfigurasi
#define TRIG_PIN PA0
#define ECHO1_PIN PA1
#define ECHO2_PIN PA2
#define ECHO3_PIN PA3
#define ECHO4_PIN PB5
#define ECHO5_PIN PB4
#define ECHO6_PIN PB3
#define SOIL1_PIN PA7
#define SOIL2_PIN PB0
#define SOIL3_PIN PB1
#define SOIL4_PIN PA5
#define SOIL5_PIN PA4
#define SOIL6_PIN PA6
#define SERVO1_PIN PB6
#define SERVO2_PIN PB7
#define SERVO3_PIN PB8
#define SERVO4_PIN PB9
#define SERVO5_PIN PA11
#define SERVO6_PIN PA15
#define DHTPIN PB10
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int threshold_moisture = 500;
int threshold_level = 8;
Servo servos[6];
int soilPins[6] = {SOIL1_PIN, SOIL2_PIN, SOIL3_PIN, SOIL4_PIN, SOIL5_PIN, SOIL6_PIN};
int echoPins[6] = {ECHO1_PIN, ECHO2_PIN, ECHO3_PIN, ECHO4_PIN, ECHO5_PIN, ECHO6_PIN};
int servoPins[6] = {SERVO1_PIN, SERVO2_PIN, SERVO3_PIN, SERVO4_PIN, SERVO5_PIN, SERVO6_PIN};
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
for (int i = 0; i < 6; i++) {
pinMode(echoPins[i], INPUT);
servos[i].attach(servoPins[i]);
}
dht.begin(); // Inisialisasi DHT22
digitalWrite(TRIG_PIN, LOW);
delay(500);
}
long measureDistance(int echoPin) {
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(echoPin, HIGH, 40000);
return duration * 0.034 / 2;
}
void loop() {
for (int i = 0; i < 6; i++) {
int soilValue = analogRead(soilPins[i]);
float distance = measureDistance(echoPins[i]);
Serial.print("Sensor ");
Serial.print(i + 1);
Serial.print(" - Soil: ");
Serial.print(soilValue);
Serial.print(" | Distance: ");
Serial.print(distance);
Serial.print(" cm | Servo: ");
if (distance > threshold_level) {
servos[i].write(0);
Serial.println("Tutup (Ultrasonic)");
} else {
if (soilValue < threshold_moisture) {
servos[i].write(90);
Serial.println("Buka (Kering)");
} else {
servos[i].write(0);
Serial.println("Tutup (Lembap)");
}
}
delay(300);
}
// Baca DHT22 setelah loop sensor ke-6
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.print(" °C | Kelembaban: ");
Serial.print(kelembaban);
Serial.println(" %");
Serial.println("-------------");
delay(1000); // Delay antar siklus
}
Ultrasonic sensor 5
Ultrasonic sensor 3
Ultrasonic sensor 4
Ultrasonic sensor 1
Ultrasonic sensor 2
Ultrasonic sensor 6
Servo 6
Servo 5
Servo 4
Servo 3
Servo 2
Servo 1
Soil Moisture 1
Soil Moisture 2
Soil Moisture 3
Soil Moisture 4
Soil Moisture 5
Soil Moisture 6
DHT22