53 lines
880 B
C++
53 lines
880 B
C++
#include <TinyPower.h>
|
|
#include <TinySensor.h>
|
|
|
|
// Pins
|
|
#define SWITCH 0
|
|
#define SENDER 2
|
|
#define CONTROLLER 4
|
|
|
|
#define SENSOR_ID 3
|
|
|
|
TinySensor sensor = TinySensor(SENSOR_ID, SENDER);
|
|
|
|
int counter = 0;
|
|
|
|
void setup() {
|
|
|
|
pinMode(SWITCH, INPUT_PULLUP);
|
|
pinMode(CONTROLLER, OUTPUT);
|
|
digitalWrite(CONTROLLER, HIGH);
|
|
|
|
sensor.setup();
|
|
sensor.sendWindowState(readState());
|
|
|
|
TinyPower::setup();
|
|
}
|
|
|
|
void loop() {
|
|
TinyPower::sleep();
|
|
}
|
|
|
|
bool readState() {
|
|
digitalWrite(CONTROLLER, LOW);
|
|
bool state = digitalRead(SWITCH);
|
|
digitalWrite(CONTROLLER, HIGH);
|
|
return state;
|
|
}
|
|
|
|
ISR(PCINT0_vect) {
|
|
sensor.sendWindowState(readState());
|
|
delay(5000);
|
|
sensor.sendWindowState(readState());
|
|
}
|
|
|
|
ISR(WDT_vect) {
|
|
counter++;
|
|
if (counter % 220 == 0) {
|
|
counter = 0;
|
|
sensor.sendWindowState(readState());
|
|
delay(10000);
|
|
sensor.sendWindowState(readState());
|
|
}
|
|
}
|