#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#define ledm 27
#define ledk 25
#define ledh 23
#define tombolh 31
#define tombolb 37
#define tombolp 38
#define buzzer 29
#define TRIG 22
#define ECHO 24
int kondisi = 0;
int duration;
int nilai = 0;
LiquidCrystal_I2C lcd(0x27,20,0);
Servo servo;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
servo.attach(2);
pinMode(ledm, OUTPUT);
pinMode(ledk, OUTPUT);
pinMode(ledh, OUTPUT);
pinMode(tombolh, INPUT_PULLUP);
pinMode(tombolb, INPUT_PULLUP);
pinMode(tombolp, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
lcd.init();
lcd.backlight();
}
void loop() {
// put your main code here, to run repeatedly:
ultrasonic();
if(duration < 100 && kondisi == 1){
lampu();
kondisi =0;
}
else if (duration > 100)
kondisi = 1;
layar();
Serial.println(kondisi);
}
void lampu(){
digitalWrite(ledm, HIGH);
delay(1000);
digitalWrite(ledm, LOW);
digitalWrite(ledk, HIGH);
delay(500);
digitalWrite(ledk, LOW);
tone(buzzer, 1000);
digitalWrite(ledh, HIGH);
servo.write(180);
delay(1000);
noTone(buzzer);
digitalWrite(ledh, LOW);
servo.write(0);
}
void ultrasonic(){
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duration = pulseIn(ECHO, HIGH);
duration = duration/58;
}
void layar(){
int pencet = digitalRead(tombolb);
int pencet2 = digitalRead(tombolp);
int hasil = 0;
if(pencet == 0){
nilai = nilai+1;
delay(10);
}
if(pencet2 == 0){
nilai = nilai-1;
delay(10);
}
lcd.print(" ");
lcd.setCursor(4,0);
lcd.print("Nilai:");
lcd.print(" ");
lcd.print(nilai);
delay(10);
Serial.println(pencet, pencet2);
}