Lock_Arduino/Lock/lock_main_202407.ino
2024-08-15 11:10:26 +07:00

90 lines
3.3 KiB
C++

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
}
}