constexpr int buzzerPin = 3;
constexpr int lightPin = 6;
constexpr int seatbeltPin = 2;
constexpr int ignitionPin = 4;
constexpr unsigned long waitBeforAlarm = 2000;
unsigned long lastTimeBlinked = 0;
unsigned long alarmTime = 0;
unsigned long blinkInterval = 500;
boolean alarmActive = false;
boolean doAlarm = false;
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(lightPin, OUTPUT);
pinMode(seatbeltPin, INPUT_PULLUP);
pinMode(ignitionPin, INPUT_PULLUP);
digitalWrite(buzzerPin, LOW);
digitalWrite(lightPin, LOW);
}
void loop() {
// Check if the seatbelt is fastened and ignition is off
boolean giveAlarm = (digitalRead(seatbeltPin) == LOW && digitalRead(ignitionPin) == HIGH);
if (!alarmActive && giveAlarm) {
alarmActive = true;
alarmTime = millis();
}
if (alarmActive && !giveAlarm) {
digitalWrite(buzzerPin, LOW);
digitalWrite(lightPin, LOW);
alarmActive = false;
doAlarm = false;
}
if (alarmActive && millis()-alarmTime > waitBeforAlarm) {
doAlarm = true;
}
if (doAlarm) {
if (millis() - lastTimeBlinked > blinkInterval){
lastTimeBlinked = millis();
int buzz = !digitalRead(buzzerPin);
int light = !digitalRead(lightPin);
digitalWrite(buzzerPin, buzz);
digitalWrite(lightPin, light);
}
}
}