Minggu, 31 Agustus 2025

Tutorial Arduino Indonesia : Penggaris dengan Arduino dan HCSR04

Berikut adalah program Arduino untuk mengukur jarak menggunakan sensor ultrasonik HC-SR04 dan menampilkan hasilnya di LCD I2C.




1. Alat dan Bahan

  • Arduino Uno (atau mikrokontroler lain yang kompatibel)

  • Sensor Ultrasonik HC-SR04

  • LCD I2C 16x2

  • Kabel Jumper

  • Breadboard (opsional)

2. Diagram Pengkabelan

Hubungkan komponen-komponen berikut:

  • HC-SR04 ke Arduino:

    • VCC ke 5V

    • GND ke GND

    • Trig ke pin digital 9

    • Echo ke pin digital 10

  • LCD I2C ke Arduino:

    • GND ke GND

    • VCC ke 5V

    • SDA ke pin analog A4

    • SCL ke pin analog A5

3. Program Arduino

Pastikan Anda telah menginstal pustaka yang diperlukan: "LiquidCrystal_I2C" untuk LCD dan "NewPing" (sangat disarankan untuk HC-SR04 karena lebih stabil) melalui Library Manager di Arduino IDE.

C++
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <NewPing.h>

// Definisikan pin untuk sensor HC-SR04
#define TRIG_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 200 // Jarak maksimum yang bisa diukur (dalam cm)

// Buat objek NewPing
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

// Buat objek LCD I2C (alamat, kolom, baris)
// Alamat I2C bisa berbeda. Alamat yang umum adalah 0x27 atau 0x3F.
// Jika tidak bekerja, gunakan pemindai alamat I2C untuk menemukan alamat yang benar.
LiquidCrystal_I2C lcd(0x27, 16, 2); 

void setup() {
  // Inisialisasi LCD
  lcd.init();
  lcd.backlight(); // Nyalakan lampu latar LCD

  // Tampilkan pesan awal
  lcd.setCursor(0, 0); // Atur kursor di kolom 0, baris 0
  lcd.print("Mengukur Jarak");
  
  Serial.begin(9600); // Mulai komunikasi serial untuk debugging
}

void loop() {
  // Tunggu 50 ms antara setiap ping (rekomendasi NewPing)
  delay(50); 
  
  // Kirim pulsa dan hitung durasi pantulan dalam mikrodetik
  unsigned int duration = sonar.ping_median(5); // Ambil nilai median dari 5 pengukuran untuk akurasi

  // Hitung jarak dalam cm dari durasi
  // Jika durasi 0, artinya objek berada di luar jangkauan
  float distanceCm = sonar.convert_cm(duration);
  
  // Tampilkan jarak di LCD
  lcd.clear(); // Hapus tampilan LCD
  lcd.setCursor(0, 0);
  lcd.print("Jarak:");
  lcd.setCursor(0, 1);
  
  // Periksa jika objek terdeteksi atau tidak
  if (distanceCm == 0) {
    lcd.print("Tidak Terdeteksi");
    Serial.println("Jarak: Tidak Terdeteksi");
  } else {
    // Tampilkan jarak dalam cm
    lcd.print(distanceCm);
    lcd.print(" cm");
    Serial.print("Jarak: ");
    Serial.print(distanceCm);
    Serial.println(" cm");
  }

  // Tunggu sejenak sebelum pengukuran berikutnya
  delay(500);
}

4. Penjelasan Kode

  • Pustaka:

    • Wire.h: Digunakan untuk komunikasi I2C.

    • LiquidCrystal_I2C.h: Pustaka untuk mengendalikan LCD I2C.

    • NewPing.h: Pustaka yang lebih handal untuk sensor HC-SR04. Pustaka ini secara otomatis mengelola pin TRIG dan ECHO, serta memiliki fungsi bawaan untuk menghitung jarak dan mengatasi kesalahan.

  • setup():

    • Inisialisasi LCD dan lampu latar.

    • Mencetak pesan awal ke layar LCD.

    • Mulai komunikasi serial untuk melihat output di Serial Monitor (berguna untuk debugging).

  • loop():

    • sonar.ping_median(5): Mengambil 5 pengukuran dan mengembalikan nilai median. Ini membantu meningkatkan akurasi dengan mengabaikan pembacaan yang tidak wajar.

    • sonar.convert_cm(duration): Fungsi dari pustaka NewPing yang secara otomatis mengonversi durasi pantulan suara menjadi jarak dalam sentimeter.

    • Kondisi if: Memeriksa apakah jarak terukur adalah 0. Ini biasanya terjadi ketika sensor tidak mendeteksi objek dalam jangkauan MAX_DISTANCE.

    • Tampilan jarak: Menampilkan jarak yang diukur ke baris kedua LCD.

Program ini adalah kerangka dasar yang dapat Anda kembangkan lebih lanjut, seperti menambahkan kalibrasi, batas peringatan, atau interaksi lain. Pastikan pengkabelan Anda sudah benar sebelum mengunggah kode ke Arduino.

Tidak ada komentar:

Posting Komentar