rc-gateway/oil_sensor/src/oil_sensor.cpp

56 lines
1.0 KiB
C++

#include <Arduino.h>
#include <TinyPower.h>
#define SENDER_PIN PIN_B2
#define TRIGGER_PIN PIN_B3
#define ECHO_PIN PIN_B4
#define VCC_PIN PIN_B1
#define MAX_DISTANCE 200 // 2 meters
#include "SonarSensor.h"
#define SEND_INTERVAL 450 // 450*8s = ~1 hour
#define SEND_VCC_INTERVAL (SEND_INTERVAL*12) // ~12 hours
SonarSensor oilSensor(OIL_SENSOR);
volatile int counter = 0;
volatile bool shouldSend = true;
void setup() {
oilSensor.setup();
TinySwitch::setup(SENDER_PIN);
TinyPower::setup();
TinyPower::enableWdt(WDTO_8S);
}
void loop() {
if (shouldSend) {
shouldSend = false;
oilSensor.turnOn();
delay(500);
unsigned int distance = oilSensor.scan();
oilSensor.turnOff();
if (distance) {
if (counter) {
oilSensor.sendValue(distance);
} else {
oilSensor.sendValueAndVoltage(distance);
}
}
}
TinyPower::sleep();
}
ISR(WDT_vect) {
counter++;
if ((counter % SEND_INTERVAL == 0)) {
shouldSend = true;
if ((counter % SEND_VCC_INTERVAL == 0)) {
counter = 0;
}
}
}