#include <Servo.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo servo;
int pinservo = 11;
int pinledm = 12;
int pinledh = 13;
int pinbuzz = 10;
int pinir = 7;
int pintrig = 6;
int pinecho = 5;
long durasi;
int jarak;
void setup() {
Serial.begin(9600);
servo.attach(pinservo);
pinMode(pinledm, OUTPUT);
pinMode(pinledh, OUTPUT);
pinMode(pinbuzz, OUTPUT);
noTone(pinbuzz);
pinMode(pinir, OUTPUT);
pinMode(pintrig, OUTPUT);
pinMode(pinecho, INPUT);
lcd.init();
lcd.backlight();
}
void loop() {
servo.write(180);
digitalWrite(pinledm, HIGH);
digitalWrite(pintrig, LOW);
delayMicroseconds(2);
digitalWrite(pintrig, HIGH);
delayMicroseconds(10);
digitalWrite(pintrig, LOW);
durasi = pulseIn(pinecho, HIGH);
jarak = durasi * 0.017;
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.println(" CM");
delay(100);
if (jarak <= 50) {
lcd.clear();
lcd.println("Silahkan Tap Kartu");
delay(100);
int bacair = digitalRead(pinir);
if (bacair == 0) {
Serial.println("ADA OBJEK TERDETEKSI");
lcd.println("BERHASIL");
digitalWrite(pinledh, HIGH);
digitalWrite(pinledm, LOW);
tone(pinbuzz, 500);
servo.write(90);
if (jarak >= 100) {
servo.write(90);
lcd.clear();
} else {
servo.write(180);
lcd.clear();
}
}
else {
Serial.println("TIDAK ADA OBJEK");
digitalWrite(pinledh, LOW);
digitalWrite(pinledm, HIGH);
servo.write(180);
}
} else {
lcd.clear();
}
}