#define echoPin 2
#define trigPin 3
#include <LiquidCrystal_I2C.h>
int maximumRange = 50;
int minimumRange = 00;
long duration, distance;
int LED_merah = 7;
int LED_hijau = 8;
int buzzer = 4;
LiquidCrystal_I2C lcd(0x27, 16, 2 );
void setup()
{
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode (echoPin, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("batas jarak ");
lcd.setCursor(0, 1);
lcd.print("pengunjung");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("batas jarak:");
lcd.setCursor(0, 1);
lcd.print("50 cm");
delay(3000);
lcd.clear();
pinMode(LED_hijau, OUTPUT);
pinMode(LED_merah, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop()
{
/* Penentuan jarak. */
digitalWrite(trigPin, LOW);
delay(50);
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
duration= pulseIn(echoPin, HIGH);
//perhitungan untuk dijadikan jarak
distance = duration/58.2;
//perhitungan untuk dijadikan jarak distance = duration/58.2;
/* Jika jarak melebihi 300 cm, kirim keterangan "Di luar jangkauan" */
if (distance >= maximumRange || distance <= minimumRange)
{
lcd.setCursor(0, 1);
lcd.print("JARAK AMAN");
lcd.setCursor(0, 0);
lcd.print("jarak:");
lcd.print(distance);
lcd.print(" cm ");
digitalWrite(LED_hijau, HIGH);
digitalWrite(LED_merah, LOW);
delay(500);
}
else
{
/*
Kirim hasil pembacaan jarak melalui serial monitor
*/
lcd.setCursor(0, 0);
lcd.print("jarak:");
lcd.print(distance);
lcd.print(" cm ");
lcd.setCursor(0, 1);
lcd.print("MENJAUH");
tone(buzzer, 384);
delay(500);
noTone(buzzer);
digitalWrite(LED_merah, HIGH);
digitalWrite(LED_hijau, LOW);
}
}