#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "display.h" // include the display header file
LiquidCrystal_I2C lcd(0x27, 16, 2); // การประกาศตัวแปร lcd
unsigned long previousMillis = 0;
const long interval = 100; // ระยะเวลาระหว่างการรันตัวเลข
String correctPasscode = "2704"; // รหัสผ่านที่ถูกต้อง
String inputCode = "";
int digitPosition = 0;
bool accessGranted = false;
void setup() {
Wire.begin(8, 9); // ตั้งค่า SDA ที่ GPIO08 และ SCL ที่ GPIO09
lcd.begin(16, 2);
lcd.backlight();
displayInitialMessage(); // ฟังก์ชันการแสดงข้อความเริ่มต้น
Serial.begin(115200); // เปิดใช้งาน Serial Communication ที่ Baud Rate 115200
}
void loop() {
if (accessGranted) {
Serial.println(inputCode); // ส่งข้อความเมื่อปลดล็อคสำเร็จ
return; // หยุดการรันเมื่อเจอรหัสที่ถูกต้อง
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// รันตัวเลขจาก 0 ถึง 9
for (int currentDigit = 0; currentDigit <= 9; currentDigit++) {
inputCode += String(currentDigit);
displayCurrentDigit(currentDigit, digitPosition); // ฟังก์ชันการแสดงตัวเลขปัจจุบัน
delay(interval);
// ตรวจสอบว่าตัวเลขในตำแหน่งนี้ถูกต้องหรือไม่
if (inputCode == correctPasscode.substring(0, digitPosition + 1)) {
digitPosition++;
if (digitPosition >= correctPasscode.length()) {
displayAccessGranted(inputCode); // ฟังก์ชันการแสดงข้อความปลดล็อคสำเร็จ
accessGranted = true;
return; // หยุดการรันเมื่อเจอรหัสที่ถูกต้อง
}
break; // ข้ามไปยังตำแหน่งถัดไป
} else {
inputCode.remove(digitPosition); // ลบตัวเลขที่ไม่ถูกต้องออก
}
}
}
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1