#include <Wire.h>#include <LiquidCrystal_I2C.h>
// Konfigurasi LCD I2C 16x2LiquidCrystal_I2C lcd(0x27, 16, 2);
// Konfigurasi pinconst int trigPin = 8; // Ultrasonic TRIGconst int echoPin = 9; // Ultrasonic ECHOconst int fanPin = A0; // Kipas / relayconst int potPin = A2; // Potensiometer
// Variabel sensorlong duration;int distance;int setPoint;
void setup() { // Inisialisasi pin pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(fanPin, OUTPUT);
// Inisialisasi LCD lcd.init(); lcd.backlight();
// Tampilan awal lcd.setCursor(0,0); lcd.print("Kipas Otomatis"); lcd.setCursor(0,1); lcd.print("Siap Mengukur..."); delay(2000); lcd.clear();}
void loop() { // Membaca set point dari potensiometer int potValue = analogRead(potPin); setPoint = map(potValue, 0, 1023, 0, 200); // Maks jarak 200 cm
// Mengirim pulsa ultrasonik digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
// Membaca durasi pulsa duration = pulseIn(echoPin, HIGH);
// Menghitung jarak dalam cm distance = duration * 0.034 / 2;
// Menampilkan data di LCD lcd.setCursor(0,0); lcd.print("Jarak: "); lcd.print(distance); lcd.print(" cm ");
lcd.setCursor(0,1); lcd.print("Set Pt: "); lcd.print(setPoint); lcd.print(" cm ");
// Logika kipas: ON jika jarak < set point, OFF jika jarak >= set point if(distance < setPoint && distance > 0){ digitalWrite(fanPin, HIGH); // Kipas ON } else { digitalWrite(fanPin, LOW); // Kipas OFF }
delay(200); // Refresh data setiap 200 ms}