Advertisement
iArcsinE

Untitled

Nov 26th, 2020
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.22 KB | None | 0 0
  1. /////////////////////////////////////////////
  2. // NOTE: BLINKING RED MEANS IN ARMING MODE //
  3. /////////////////////////////////////////////
  4.  
  5. int armTimeDelay = 100;  // arming sound delay
  6. int alarmTimeDelay = 500; // alarm sound delay
  7. int buttonState = 0;  // declare state of button
  8. int currentTime;  // declare current tick for arming sound effect
  9. int lastState = LOW;    // toggle state
  10. unsigned long time; // declare time var (tick)
  11. bool armMode; // safe = 0, armed = 1
  12. bool isExecuted = false;  // init current time once for the time diff
  13. bool isAlarm = false; // alarm switch
  14.  
  15. // component vars
  16. int buzzer = 6;
  17.  
  18. void setup()
  19. {
  20.   pinMode(13, OUTPUT);  // red led
  21.   pinMode(12, OUTPUT);  // green led
  22.   pinMode(7, INPUT_PULLUP); // button
  23.   pinMode(buzzer, OUTPUT);  // if the buzzer has 3 legs, connect signal to 6 instead
  24.   pinMode(2, INPUT);  // motion sensor
  25.   Serial.begin(9600);
  26. }
  27.  
  28. void loop()
  29. {
  30.   time = millis();
  31.  
  32.   // switch modes from safe to armed [cannot be repeated for now, idk how to fix it]
  33.   buttonState = digitalRead(7);
  34.   if (lastState == LOW && buttonState == HIGH) {
  35.     Serial.println(armMode);
  36.       armMode = !armMode;
  37.   }
  38.   lastState = buttonState;
  39.  
  40.   // check mode and reset all state
  41.   if (armMode == false) {
  42.     digitalWrite(13, LOW);
  43.     digitalWrite(12, HIGH);
  44.     noTone(buzzer);
  45.     isExecuted = false;
  46.     isAlarm = false;
  47.   } else {
  48.     digitalWrite(12, LOW);
  49.    
  50.     // arming beep and light loop
  51.     if (isExecuted == false) {
  52.       isExecuted = true;
  53.       currentTime = time;
  54.     }
  55.    
  56.   // limit loop to 2 seconds
  57.     int timeDiff = time - currentTime;
  58.     if (timeDiff >= 2000 && timeDiff <= 2100) {
  59.         digitalWrite(13, LOW);
  60.        
  61.     } else if (timeDiff < 2000) {
  62.       digitalWrite(13, HIGH);
  63.       tone(buzzer, 220);
  64.       delay(armTimeDelay);
  65.       digitalWrite(13, LOW);
  66.       noTone(buzzer);
  67.       delay(armTimeDelay);
  68.     }
  69.    
  70.     // enable alarm
  71.     if (digitalRead(2) == HIGH) { isAlarm = true; }
  72.     else { noTone(buzzer); }
  73.     if (isAlarm == true) {
  74.       tone(buzzer, 1760);
  75.         delay(alarmTimeDelay);
  76.         tone(buzzer, 1397);
  77.         delay(alarmTimeDelay);
  78.     } else { noTone(buzzer); }  
  79.   }
  80.  
  81.   delay(10);
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement