Selasa, 30 September 2025

💾 Kode Arduino: Sensor Hujan dan Servo

 


💾
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

  1. #include <Servo.h>: Mengimpor library yang memudahkan kontrol motor servo.
  2. 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.
  3. myservo.attach(PIN_SERVO);: Mengatur pin 9 sebagai pin kontrol untuk servo.
  4. 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).
  5. 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