#include <LCD_I2C.h>
#define PB 2
#define buzz 9
#define trigpin 7
#define echopin 5
int tombol;
int distance, duration;
LCD_I2C lcd(0x27, 16, 2);
void setup() {
lcd.begin();
lcd.backlight();
pinMode(PB, INPUT);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
pinMode(buzz, OUTPUT);
lcd.setCursor(2, 0);
lcd.print("KELAS TEKNIK");
lcd.setCursor(4, 1);
lcd.print("OTOMASI");
tone(buzz, 1000);
delay(1000);
noTone(buzz);
lcd.clear();
}
void loop() {
monitor();
button();
sensor();
}
//VOID BUTTON
void button() {
if (digitalRead(PB) == 1) {
while (digitalRead(PB) == 1){}
tone(buzz, 1000);
tombol++;
noTone(buzz);
}
if (tombol > 1) {
tombol = 0;
}
if (tombol == 1) {
if (distance <= 30) {
alarm(duration);
}
else {
noTone(buzz);
lcd.setCursor(10,1);
lcd.print("MATI ");
}
}
if (tombol == 0) {
noTone(buzz);
lcd.setCursor(10,1);
lcd.print("MATI ");
}
}
//VOID SENSOR
void sensor(){
distance = distanceCM(trigpin, echopin);
duration = distance * 5;
}
float distanceCM(int TRIG, int ECHO) {
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
float duration_us = pulseIn(ECHO, HIGH);
float distance_cm = 0.0343 * duration_us / 2;
return distance_cm;
}
//VOID BUNYI
void alarm(int time) {
lcd.setCursor(10,1);
lcd.print("HIDUP");
tone(buzz, 1000);
delay(time);
noTone(buzz);
delay(time);
}
//VOID MONITOR
void monitor(){
lcd.setCursor(0,0);
lcd.print("jarak: ");
lcd.print(distance);
lcd.print(" cm");
lcd.setCursor(0,1);
lcd.print("En:");
lcd.setCursor(8,1);
lcd.print("B:");
if (tombol == 1) {
lcd.setCursor(4, 1);
lcd.print("ON ");
}
else {
lcd.setCursor(4, 1);
lcd.print("OFF");
}
}