#include #include // Pins #define SWITCH 0 #define SENDER 2 #define CONTROLLER 4 ContactSensor sensor = ContactSensor(WINDOW1, SENDER); 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()); } ISR(WDT_vect) { bool state = readState(); if (state != currentState) { sensor.sendStateAndVoltage(readState()); updateState(); return; } counter++; if (counter % 76 == 0) { sensor.sendStateAndVoltage(readState()); counter = 0; } }