int shockPin = 3; // Cảm biến rung nối vào chân số 3
int ledPin = 13; // LED nối vào chân số 13
int buttonPin = 2; // Nút nhấn nối vào chân số 2
float previousLat = 10.762622; // Tọa độ vĩ độ ban đầu (giả lập)
float previousLon = 106.660172; // Tọa độ kinh độ ban đầu (giả lập)
bool systemArmed = false; // Biến để kiểm tra trạng thái hệ thống
void setup() {
pinMode(shockPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Nút nhấn với pull-up nội bộ
Serial.begin(9600);
}
void loop() {
// Đọc trạng thái nút nhấn để bật/tắt hệ thống
if (digitalRead(buttonPin) == LOW) {
systemArmed = !systemArmed;
Serial.print("systemArmed: ");
Serial.println(systemArmed);
delay(500); // Debounce
}
// Giả lập thay đổi tọa độ GPS ngẫu nhiên
float currentLat = previousLat + random(-100, 100) / 100000.0; // Tạo sự thay đổi nhỏ ở tọa độ vĩ độ
float currentLon = previousLon + random(-100, 100) / 100000.0; // Tạo sự thay đổi nhỏ ở tọa độ kinh độ
// Kiểm tra nếu hệ thống đã bật
if (systemArmed) {
// Kiểm tra cảm biến rung
int vibrationStatus = digitalRead(shockPin);
Serial.print("Vibration status: ");
Serial.println(vibrationStatus);
// Kiểm tra nếu GPS đã thay đổi
if (currentLat != previousLat || currentLon != previousLon) {
digitalWrite(ledPin, HIGH); // Bật LED nếu tọa độ GPS thay đổi
Serial.println("GPS has changed!");
// Cập nhật tọa độ trước đó
previousLat = currentLat;
previousLon = currentLon;
} else if (vibrationStatus == HIGH) {
digitalWrite(ledPin, HIGH); // Bật LED nếu có rung động
Serial.println("Vibration detected!");
} else {
digitalWrite(ledPin, LOW); // Tắt LED nếu không có rung động và GPS không thay đổi
}
} else {
digitalWrite(ledPin, LOW); // Tắt LED khi hệ thống tắt
Serial.println("System is disarmed.");
}
delay(1000); // Kiểm tra mỗi giây
}