diff --git a/Lock/lock_main_202407.ino b/Lock/lock_main_202407.ino new file mode 100644 index 0000000..6de4481 --- /dev/null +++ b/Lock/lock_main_202407.ino @@ -0,0 +1,90 @@ + +const int ledPin1 = 5; // Chân kết nối LED 1 +const int ledPin2 = 6; // Chân kết nối LED 2 +const int buttonPin1 = 7; // Chân kết nối nút nhấn 1 +const int buttonPin2 = 8; // Chân kết nối nút nhấn 2 +bool ledState1 = false; // Trạng thái của LED 1 +bool ledState2 = false; // Trạng thái của LED 2 +#define Light A1 // Led tro sang camera +unsigned long previousMillis1 = 0; // Thời điểm lưu trữ cho LED 1 +unsigned long previousMillis2 = 0; // Thời điểm lưu trữ cho LED 2 +int timedelay= 5000; +void setup() { + pinMode(ledPin1, OUTPUT); // Thiết lập chân là OUTPUT cho LED 1 + pinMode(ledPin2, OUTPUT); // Thiết lập chân là OUTPUT cho LED 2 + pinMode(buttonPin1, INPUT_PULLUP); // Thiết lập chân là INPUT_PULLUP cho nút nhấn 1 + pinMode(buttonPin2, INPUT_PULLUP); // Thiết lập chân là INPUT_PULLUP cho nút nhấn 2 + digitalWrite(ledPin1, HIGH); // Make sure door is locked + digitalWrite(ledPin2, HIGH); // Make sure door is locked + digitalWrite(Light, LOW); + Serial.begin(9600); // Bắt đầu kết nối Serial +} + +void loop() { + checkserial(); + readbutton(); + checkrelay(); + +} +void readbutton(){ + // Kiểm tra nếu nút nhấn 1 được nhấn + if (digitalRead(buttonPin1) == LOW) { + // Bật LED 1 và ghi lại thời điểm hiện tại + digitalWrite(ledPin1, LOW); + ledState1 = true; + previousMillis1 = millis(); + } + + // Kiểm tra nếu nút nhấn 2 được nhấn + if (digitalRead(buttonPin2) == LOW) { + // Bật LED 2 và ghi lại thời điểm hiện tại + digitalWrite(ledPin2, LOW); + ledState2 = true; + previousMillis2 = millis(); + } +} +void checkserial(){ + if (Serial.available() > 0) { + String input = Serial.readStringUntil('\n'); // Đọc từ Serial cho đến khi gặp ký tự xuống dòng + input.trim(); // Loại bỏ các khoảng trắng và ký tự xuống dòng từ đầu và cuối chuỗi + + if (input == "1") { + // Bật LED 1 và ghi lại thời điểm hiện tại + digitalWrite(ledPin1, LOW); + Serial.println("open_1"); + ledState1 = true; + previousMillis1 = millis(); + } else if (input == "2") { + // Bật LED 2 và ghi lại thời điểm hiện tại + digitalWrite(ledPin2, LOW); + Serial.println("open_2"); + ledState2 = true; + previousMillis2 = millis(); + }else if (input == "3"){ + digitalWrite(Light, HIGH); + Serial.println("open_3"); + }else if (input == "4"){ + digitalWrite(Light, LOW); + Serial.println("open_4"); + }else if (input.indexOf("tdoor")!= -1){ + int t = input.substring(5,7).toInt(); + Serial.println(t); + if (t !=0 && t <=30){ + timedelay = t*1000; + } + } + + } +} +void checkrelay(){ + // Kiểm tra nếu LED 1 đã được bật và thời gian đã trôi qua 1000 ms (1 giây) + if (ledState1 && (millis() - previousMillis1 >= timedelay)) { + digitalWrite(ledPin1, HIGH); // Tắt LED 1 + ledState1 = false; // Đặt trạng thái LED 1 về false + } + // Kiểm tra nếu LED 2 đã được bật và thời gian đã trôi qua 1000 ms (1 giây) + if (ledState2 && (millis() - previousMillis2 >= timedelay)) { + digitalWrite(ledPin2, HIGH); // Tắt LED 2 + ledState2 = false; // Đặt trạng thái LED 2 về false + } +} \ No newline at end of file