#include <Servo.h>
#include <LiquidCrystal_I2C.h>
int servo = 12;
int buzzer = 13;
//int servo_value;
float jarak;
int derajat;
//HC-SR04
int echo = 7;
int trigger = 8;
Servo myservo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte degr[] = {
B00110,
B01001,
B01001,
B00110,
B00000,
B00000,
B00000,
B00000
};
void setup() {
pinMode(buzzer, OUTPUT);
myservo.attach(12);
lcd.init();
lcd.backlight();
lcd.createChar(0, degr);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
}
void loop() {
//servo_value = map(servo, 0, 1023, 0, 180);
lcd.setCursor(0,0);
lcd.print("Jarak: " + String(readDistance()));
delay(1000);
lcd.setCursor(0,1);
lcd.print("Derajat: ");
if(derajat == 180){
lcd.print(String(derajat));
lcd.setCursor(12,1);
lcd.write(0);
}else if(derajat == 0){
lcd.print(String(derajat));
lcd.setCursor(10,1);
lcd.write(0);
lcd.print(" ");
}
buka_palang();
}
float readDistance() {
//HC-SR04
digitalWrite(trigger, LOW);
delayMicroseconds(2);
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
int duration = pulseIn(echo, HIGH);
// distance = time * speed_of_sound / 2
jarak = duration * 0.034 / 2;
return jarak;
}
void buka_palang() {
if(jarak < 200){
tone(buzzer, 100, 150);
delay(1000);
myservo.write(180);
delay(15);
derajat = 180;
}else {
noTone(buzzer);
myservo.write(0);
delay(15);
derajat = 0;
}
}