// 2509106102
#include <Servo.h>
Servo ServoR;
Servo ServoL;
int segA = 4, segB = 5, segC = 6, segD = 7, segE = 8, segF = 9, segG = 10;
int button = 2;
int red = 12, green = 13;
int state = 0;
int digits[10][7] = {
{1,1,1,1,1,1,0},
{0,1,1,0,0,0,0},
{1,1,0,1,1,0,1},
{1,1,1,1,0,0,1},
{0,1,1,0,0,1,1},
{1,0,1,1,0,1,1},
{1,0,1,1,1,1,1},
{1,1,1,0,0,0,0},
{1,1,1,1,1,1,1},
{1,1,1,1,0,1,1}
};
unsigned long waktuberakhir = 0;
int durasiinputpw = 5;
int waktuautolock = 9;
String password = "102";
void resetsmartlock() {
state = 0;
ServoR.write(90);
ServoL.write(90);
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
clearDisplay();
Serial.println("");
Serial.println("smart lock siap( •◡-) tekan tombol untuk memulai");
}
void clearDisplay() {
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void setup() {
Serial.begin(9600);
ServoR.attach(3);
ServoL.attach(11);
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(button, INPUT_PULLUP);
resetsmartlock();
}
void loop() {
if (state == 0) {
if (digitalRead(button) == LOW) {
state = 1;
durasiinputpw = 5;
displayDigit(durasiinputpw);
waktuberakhir = millis();
Serial.println("⇢ masukkan password࿐ྂ");
}
}
else if (state == 1) {
if (millis() - waktuberakhir >= 1000) {
waktuberakhir = millis();
durasiinputpw--;
displayDigit(durasiinputpw);
if (durasiinputpw == 0) {
Serial.println("");
Serial.println("waktu habis ,,Ծ‸Ծ,,");
resetsmartlock();
return;
}
}
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
input.trim();
if (input == password) {
state = 2;
ServoR.write(180);
ServoL.write(0);
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
waktuautolock = 9;
displayDigit(waktuautolock);
waktuberakhir = millis();
Serial.println("password benar! pintu akan terkunci dalam 9 detik =^._.^=");
} else {
Serial.println("password salah ໒꒰ྀི ๑˙―˙๑ ꒱ྀིა coba lagi");
resetsmartlock();
}
}
}
else if (state == 2) {
if (millis() - waktuberakhir >= 1000) {
waktuberakhir = millis();
waktuautolock--;
displayDigit(waktuautolock);
if (waktuautolock == 0) {
resetsmartlock();
return;
}
}
}
}
void displayDigit(int digit) {
if (digit < 1 || digit > 9) return;
digitalWrite(segA, digits[digit][0]);
digitalWrite(segB, digits[digit][1]);
digitalWrite(segC, digits[digit][2]);
digitalWrite(segD, digits[digit][3]);
digitalWrite(segE, digits[digit][4]);
digitalWrite(segF, digits[digit][5]);
digitalWrite(segG, digits[digit][6]);
}