// Aerobic System Alarm Pin
#define ALARM D0
#define LED D7
#define INTERVAL 1000
unsigned long current = 0;
bool isAlarmState = false;
SYSTEM_MODE(AUTOMATIC);
void setup() {
pinMode(ALARM, INPUT_PULLUP);
pinMode(LED, OUTPUT);
isAlarmState = digitalRead(ALARM) == LOW;
Particle.variable("isAlarmState", isAlarmState);
}
void loop() {
if ((millis() - current) >= INTERVAL) {
current = millis();
checkForAlarm();
}
}
void checkForAlarm() {
bool isAlarm = digitalRead(ALARM) == LOW;
// Alarm is currently active, but was previously not active
if (isAlarm && !isAlarmState) {
isAlarmState = true;
Particle.publish("ALARM_ON", PUBLIC);
digitalWrite(LED, HIGH);
// Delay 5 seconds
//delay(5000);
}
// Alarm is not currently active, but is now active
if (!isAlarm && isAlarmState) {
isAlarmState = false;
Particle.publish("ALARM_OFF", PUBLIC);
digitalWrite(LED, LOW);
// Delay 5 seconds
//delay(5000);
}
}
Comments