diff --git a/main/main.ino b/main/main.ino index 79e3c21..5c861ab 100644 --- a/main/main.ino +++ b/main/main.ino @@ -21,6 +21,8 @@ const int warnIncrement = 7; // increment maxLevel by this number // Program booleans bool isArmed = 1; // armed status. set to initialize as armed or unarmed bool soundAlarm = 0; // should the program sound the alarm? +bool unarmButtonDown = 0; // boolean that prevents unarm right after rearm + // until unarm button is depressed // Program variables int warnLevel = 0; @@ -120,7 +122,8 @@ void loop() { // - Arm/Unarm - - if (digitalRead(armUnarm) == LOW || waitingForPass == 1) { + if ((digitalRead(armUnarm) == LOW || waitingForPass == 1) && + unarmButtonDown == 0) { if (isArmed == 1 || waitingForPass == 1) { if (waitingForPass == 0) { waitingForPass = 1; @@ -130,10 +133,10 @@ void loop() { if (Serial.available()) { char c = Serial.read(); - - readString += c; - if (c == '\n') { + if (c != '\n') { + readString += c; + } else { Serial.println(readString); if (readString == pass) { @@ -158,14 +161,20 @@ void loop() { flipLed(unarmedLed, flipflopUnarmState); } } else { - isArmed = 1; - waitingForPass = 0; + isArmed = 1; + waitingForPass = 0; + unarmButtonDown = 1; playMelody(2, armMelody, armDurations, noteDelay); Serial.println("Successfully ARMED."); } } + // - Button safety - + if (digitalRead(armUnarm) == HIGH && unarmButtonDown == 1) { + unarmButtonDown = 0; + } + // - Activate unarmed/armed LEDs - if (isArmed == 1 && waitingForPass == 0 && soundAlarm == 0) {