💾 Kode Arduino: Sensor Hujan dan Servo
Ini adalah
sketsa (sketch) Arduino yang menghubungkan sensor hujan digital dan sebuah
servo motor.
C++
// Sertakan library Servo
#include <Servo.h>
// Definisikan pin
const int PIN_SENSOR_HUJAN = 8; // Pin Digital tempat
sensor hujan dihubungkan (Output D0)
const int PIN_SERVO = 9; // Pin PWM (~) tempat servo dihubungkan
// Buat objek Servo
Servo myservo;
// Definisikan posisi servo
const int POSISI_TERTUTUP = 10; // Sudut servo saat "Tertutup"
(Misalnya, 10 derajat)
const int POSISI_TERBUKA = 170; // Sudut servo saat
"Terbuka" (Misalnya, 170 derajat)
void setup() {
//
Inisialisasi komunikasi serial untuk debugging
Serial.begin(9600);
Serial.println("Sistem Sensor Hujan dan Servo Aktif!");
// Atur pin
sensor hujan sebagai INPUT
pinMode(PIN_SENSOR_HUJAN, INPUT);
// Lampirkan
objek servo ke pin
myservo.attach(PIN_SERVO);
// Set posisi
awal servo ke posisi "Terbuka"
myservo.write(POSISI_TERBUKA);
Serial.println("Posisi awal: Terbuka");
}
void loop() {
// Baca nilai
dari sensor hujan (HIGH = Kering, LOW = Basah)
// Catatan:
Ini berlaku untuk modul sensor hujan yang memiliki output D0 (digital)
int
statusHujan = digitalRead(PIN_SENSOR_HUJAN);
if
(statusHujan == LOW) {
// KONDISI 1: HUJAN TERDETEKSI (Sensor
mengeluarkan LOW)
Serial.println("💧 Hujan Terdeteksi! Servo bergerak ke posisi
TERTUTUP.");
// Gerakkan
servo ke posisi "Tertutup"
myservo.write(POSISI_TERTUTUP);
delay(500);
// Tunda sebentar agar servo punya waktu bergerak
} else {
// KONDISI
2: KERING (Sensor mengeluarkan HIGH)
Serial.println("☀️ Kering. Servo bergerak ke posisi TERBUKA.");
// Gerakkan
servo ke posisi "Terbuka"
myservo.write(POSISI_TERBUKA);
delay(500);
// Tunda sebentar agar servo punya waktu bergerak
}
// Tunda
sebentar sebelum pembacaan berikutnya
delay(2000);
// Cek status hujan setiap 2 detik
}
🛠️ Konfigurasi Perangkat Keras
(Wiring)
Anda perlu
menghubungkan komponen ke papan Arduino (misalnya Arduino Uno) sebagai berikut:
1. Sensor Hujan (Modul Digital Output)
Pin
Sensor |
Pin
Arduino |
Keterangan |
VCC |
5V |
Sumber
daya |
GND |
GND |
Ground |
D0 (Digital Out) |
Digital
Pin 8 |
Input
digital status hujan |
Export to
Sheets
2. Servo Motor (3 Kabel)
Kabel
Servo |
Pin
Arduino |
Keterangan |
Coklat/Hitam |
GND |
Ground |
Merah |
5V |
Sumber
daya |
Oranye/Kuning |
Digital
Pin 9 (PWM ~) |
Sinyal
kontrol servo |
Export to
Sheets
⚠️
Perhatian: Servo
motor, terutama yang berukuran besar, dapat menarik arus yang besar. Untuk
keandalan, sebaiknya servo ditenagai dari sumber daya eksternal yang
terpisah dari 5V Arduino, tetapi pastikan GND Arduino dan sumber daya
eksternal terhubung (common ground).
⚙️ Cara Kerja Kode
- #include <Servo.h>: Mengimpor library yang
memudahkan kontrol motor servo.
- const int PIN_SENSOR_HUJAN = 8;: Sensor hujan dihubungkan ke
pin digital 8. Output digital (D0) sensor hujan akan bernilai LOW
saat basah/hujan dan HIGH saat kering.
- myservo.attach(PIN_SERVO);: Mengatur pin 9 sebagai
pin kontrol untuk servo.
- void loop():
- int statusHujan =
digitalRead(PIN_SENSOR_HUJAN);: Membaca status pin 8.
- if (statusHujan == LOW): Jika sensor basah (hujan),
servo digerakkan ke posisi POSISI_TERTUTUP (10 derajat).
- else: Jika sensor kering, servo
digerakkan ke posisi POSISI_TERBUKA (170 derajat).
- Nilai POSISI_TERTUTUP dan POSISI_TERBUKA dapat Anda sesuaikan antara 0
hingga 180 derajat agar sesuai dengan mekanisme yang Anda buat
(misalnya, penutup jendela).
0 Comments:
Posting Komentar