//library LCD I2C
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27,16,2);
//mendefinisikan dari sensor jarak
const int TRIG_PIN = 2;
const int ECHO_PIN = 3;
long echotime;
//mendefinisikan led merah
int led = 4;
//mendefinisikan switch
int saklar = 5;
//menyimpan data jarak
float jarak = 0;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
digitalWrite(TRIG_PIN, LOW);
pinMode(led, OUTPUT);
pinMode(saklar, INPUT);
lcd.init();
lcd.backlight();
}
void loop()
{
//jika saklar keadaan hidup
if (digitalRead(saklar) == HIGH) {
Aktif();
}
//jika saklar keadaan mati
else {
NonAktif();
}
}
void NonAktif()
{
//keadaan saklar mati/belum nyala
digitalWrite(led, LOW);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Meteran");
lcd.setCursor(3, 1);
lcd.print("Laser");
delay(1000);
}
void Aktif()
{
//keadaan saklar hidup/nyala
//led merah hidup
digitalWrite(led, HIGH);
//sensor ultrasonic menyala
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
echotime = pulseIn(ECHO_PIN, HIGH);
jarak = 0.0001 * ((float)echotime * 340.0 / 2.0); // perbaikan pada rumus jarak
//menampilkan jarak di serial monitor
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.println(" cm");
//menyalakan lcd I2C
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak: ");
lcd.print(jarak);
lcd.print(" cm");
delay(1000);
}