TKK_E32230540/kode program alat/VL53L0X.ino

48 lines
1.9 KiB
C++

// Fungsi untuk memulai dan menyetel sensor ke Long Range
void initVL53L0X() {
Serial.println("Menginisialisasi sensor VL53L0X (Mode Long Range)...");
// Proses mengenalkan dan membangunkan sensor
if (!lox.begin()) {
Serial.println(F("VL53L0X Error / Tidak Terdeteksi!"));
while (1);
}
// Mengaktifkan mode Long Range dengan memperlama budget waktu baca (50ms)
lox.setMeasurementTimingBudgetMicroSeconds(50000);
Serial.println("Sensor VL53L0X Berhasil Dikonfigurasi ke Long Range.");
}
// Fungsi pembacaan data (SUDAH DIKALIBRASI KE 90 CM)
void bacaSensorJarak() {
VL53L0X_RangingMeasurementData_t measure;
lox.rangingTest(&measure, false);
if (measure.RangeStatus != 4) {
// 1. Ambil data asli dari sensor lalu ubah ke centimeter
int jarak_pantul_asli = measure.RangeMilliMeter / 10;
// 2. Prosedur Kalibrasi (Offset): Dikurangi 2 cm karena sensor membaca kelebihan 2 cm
int jarak_pantul_terkalibrasi = jarak_pantul_asli - 2;
// Antisipasi jika jarak sangat dekat agar nilai kalibrasi tidak minus
if (jarak_pantul_terkalibrasi < 0) jarak_pantul_terkalibrasi = 0;
// 3. Hitung Ketinggian Air Real menggunakan panjang pipa 90 cm
ketinggian_air = 90 - jarak_pantul_terkalibrasi;
// Pembatasan nilai atas dan bawah sesuai panjang pipa 90 cm
if (ketinggian_air < 0) ketinggian_air = 0;
if (ketinggian_air > 90) ketinggian_air = 90;
// Tampilkan di Serial Monitor
Serial.print("Jarak Sensor (Sebelum Kalibrasi): "); Serial.print(jarak_pantul_asli); Serial.println(" cm");
Serial.print("Jarak Sensor (Setelah Kalibrasi): "); Serial.print(jarak_pantul_terkalibrasi); Serial.println(" cm");
Serial.print("Tinggi Air Real: "); Serial.print(ketinggian_air); Serial.println(" cm");
Serial.println("----------------------------------------");
} else {
Serial.println("Sensor: Out of Range / Terhalang");
}
}