const int inputPin = 41; // Chân nối cảm biến MC-38
const int AlarmPin = 39; // Chân nối LED trên mạch Arduino
unsigned long startTime = 0; // Biến lưu thời điểm bắt đầu đếm
const unsigned long countDuration = 2000; // Thời gian đếm (3 giây)
void setup() {
pinMode(inputPin, INPUT_PULLUP);
pinMode(AlarmPin, OUTPUT);
digitalWrite(AlarmPin, HIGH);
Serial.begin(9600); // Bắt đầu giao tiếp serial
}
void Alarm()
{
int inputState = digitalRead(inputPin); // Đọc trạng thái ngõ vào
// Nếu ngõ vào mức 0, bắt đầu đếm thời gian
if (inputState != LOW)
{
if (startTime == 0)
{
startTime = millis(); // Bắt đầu đếm thời gian
}
// Kiểm tra nếu đã đủ thời gian đếm
if (millis() - startTime >= countDuration)
{
// Kiểm tra lại trạng thái ngõ vào
if (digitalRead(inputPin) != LOW)
{
// Nếu ngõ vào vẫn là mức 1, bật LED
digitalWrite(AlarmPin, LOW);
}
else
{
// Nếu ngõ vào đã thay đổi thành mức 0, tắt LED
digitalWrite(AlarmPin, HIGH);
}
// Đặt lại startTime để bắt đầu đếm lại
startTime = 0;
}
} else {
// Nếu ngõ vào không phải là mức 0, đặt lại startTime
startTime = 0;
digitalWrite(AlarmPin, HIGH); // Tắt Alarm
}
}
void loop()
{
Alarm();
}