#include <Servo.h>
#include <Keypad.h>
int echo = 12,trig = 13, lr = 2, lg = 3, lb = 4,waktu,jarak,buz = 8;
bool buny = false,peringatan = true;
String kodeAsli = "12123";
String kodeinput;
Servo myservo;
void setup() {
pinMode(lr, OUTPUT);
pinMode(lg, OUTPUT);
pinMode(lb, OUTPUT);
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
pinMode(buz, OUTPUT);
myservo.attach(7);
Serial.begin(9600);
}
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 25, 24, 23, 22 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 29, 28, 27, 26 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void loop() {
if (!(kodeAsli==kodeinput)){
myservo.write(0);
}else{
myservo.write(100);
}
digitalWrite(trig, HIGH);
delayMicroseconds(50);
digitalWrite(trig, LOW);
waktu = pulseIn(echo,HIGH);
jarak = waktu*(0.0343/2);
// Serial.println(jarak);
if (jarak<=100) {
if (peringatan){
digitalWrite(lr, HIGH);
tone(buz,900);
digitalWrite(lg, LOW);
digitalWrite(lb, LOW);
}
buny = false;
char key = keypad.getKey();
// Serial.println(key);
if (key != NO_KEY) {
kodeinput = kodeinput+key;
tone(buz,200);
delay(100);
noTone(buz);
peringatan = false;
if (!kodeAsli.startsWith(kodeinput)){
peringatan = true;
kodeinput='\0';
} else if (kodeinput==kodeAsli){
peringatan = false;
Serial.println("welcome");
}
Serial.println("kode input :"+kodeinput);
}
}
else if (jarak<=200){
digitalWrite(lr, LOW);
tone(buz,600);
digitalWrite(lg, HIGH);
delay(300);
noTone(buz);
digitalWrite(lg, LOW);
delay(300);
digitalWrite(lg, LOW);
digitalWrite(lb, LOW);
buny = false;
}
else if (jarak<=300) {
digitalWrite(lr, LOW);
digitalWrite(lg, LOW);
if (!buny) {
tone(buz,500);
digitalWrite(lb, HIGH);
delay(100);
noTone(buz);
digitalWrite(lb, LOW);
delay(100);
tone(buz,500);
digitalWrite(lb, HIGH);
delay(100);
noTone(buz);
digitalWrite(lb, LOW);
buny = true;
}
} else{
digitalWrite(lr, LOW);
digitalWrite(lg, LOW);
digitalWrite(lb, LOW);
buny = false;
}
}