#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define echoPin 2
#define trigPin 3
long duration, distance;
LiquidCrystal_I2C lcd(0x27, 20, 4);
Servo myservo;
int potpin=0;
int val=0;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myservo.attach(9);
lcd.init();
lcd.backlight();
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2)/29.1;
if(distance<=200){
val = analogRead(potpin);
val = map(val, 45, 45, 45, 45);
myservo.write(val);
delay(15);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Jarak: ");
lcd.setCursor(7,0);
lcd.print(distance);
lcd.setCursor(11,0);
lcd.print("cm");
lcd.setCursor(1,1);
lcd.print("Sudut: ");
lcd.setCursor(7,1);
lcd.print(val);
lcd.setCursor(11,1);
lcd.print("derajat");
}
else{
val = analogRead(potpin);
val = map(val, 180, 180, 180, 180);
myservo.write(val);
delay(15);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Jarak: ");
lcd.setCursor(7,0);
lcd.print(distance);
lcd.setCursor(11,0);
lcd.print("cm");
lcd.setCursor(1,1);
lcd.print("Sudut: ");
lcd.setCursor(7,1);
lcd.print(val);
lcd.setCursor(11,1);
lcd.print("derajat");
}
Serial.print(distance);
Serial.println(" cm");
Serial.print(val);
Serial.println(" derajat");
delay(900);
}