From 7dcbbfa57fbc7a67afd02236afccdd87bda7c0f4 Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Thu, 6 Oct 2022 15:29:03 +0200 Subject: [PATCH] optimize sending logic --- oil_sensor/include/SonarSensor.h | 4 ++-- oil_sensor/src/oil_sensor.cpp | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/oil_sensor/include/SonarSensor.h b/oil_sensor/include/SonarSensor.h index 4e12a94..e7ce3ba 100644 --- a/oil_sensor/include/SonarSensor.h +++ b/oil_sensor/include/SonarSensor.h @@ -13,7 +13,7 @@ class SonarSensor : public GenericSensor { public: SonarSensor(short id) : GenericSensor(id) {} - unsigned long scan() { - return sonar.ping_median(); + unsigned int scan() { + return sonar.convert_cm(sonar.ping_median()); } }; diff --git a/oil_sensor/src/oil_sensor.cpp b/oil_sensor/src/oil_sensor.cpp index 1992b6c..1e30a50 100644 --- a/oil_sensor/src/oil_sensor.cpp +++ b/oil_sensor/src/oil_sensor.cpp @@ -15,6 +15,7 @@ volatile bool shouldSend = true; void setup() { TinySwitch::setup(SENDER); + delay(10000); TinyPower::setup(); TinyPower::enableWdt(WDTO_8S); } @@ -22,13 +23,12 @@ void setup() { void loop() { if (shouldSend) { shouldSend = false; - unsigned long distance = oilSensor.scan(); + unsigned int distance = oilSensor.scan(); if (distance) { - if (counter % SEND_VCC_INTERVAL == 0) { - oilSensor.sendValueAndVoltage(distance); - counter = 0; - } else { + if (counter) { oilSensor.sendValue(distance); + } else { + oilSensor.sendValueAndVoltage(distance); } } } @@ -37,7 +37,10 @@ void loop() { ISR(WDT_vect) { counter++; - if (((counter + 1) % SEND_INTERVAL == 0) || ((counter + 1) % SEND_VCC_INTERVAL == 0)) { + if ((counter % SEND_INTERVAL == 0)) { shouldSend = true; + if ((counter % SEND_VCC_INTERVAL == 0)) { + counter = 0; + } } }