rc-gateway/window1/window1.ino

60 lines
957 B
C++

#include <TinyPower.h>
#include <Tiny.h>
// Pins
#define SWITCH 0
#define SENDER 2
#define CONTROLLER 4
ContactSensor sensor = ContactSensor(WINDOW1, SENDER);
volatile int counter = 0;
bool currentState;
void setup() {
pinMode(SWITCH, INPUT_PULLUP);
pinMode(CONTROLLER, OUTPUT);
digitalWrite(CONTROLLER, LOW);
sensor.setup();
updateState();
sensor.sendStateAndVoltage(readState());
TinyPower::setup();
TinyPower::enableWdt(WDTO_8S);
}
void loop() {
TinyPower::sleep();
}
void updateState() {
currentState = readState();
}
byte readState() {
return digitalRead(SWITCH);
}
ISR(PCINT0_vect) {
sensor.sendStateAndVoltage(readState());
wdt_reset();
counter = 0;
}
ISR(WDT_vect) {
bool state = readState();
if (state != currentState) {
sensor.sendStateAndVoltage(state);
currentState = state;
return;
}
counter++;
if (counter % 225 == 0) {
sensor.sendStateAndVoltage(readState());
counter = 0;
}
}