From 2b414d3778e4a85187c7b0506abd1a0a8a421427 Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Tue, 28 Dec 2021 19:02:15 +0100 Subject: [PATCH] split TinySensor into TinySwitch --- libraries/Tiny/ContactSensor.h | 4 ++-- libraries/Tiny/HumiditySensor.h | 4 ++-- libraries/Tiny/TempSensor.h | 4 ++-- libraries/Tiny/TinySensor.h | 18 ++++-------------- libraries/Tiny/TinySwitch.h | 16 ++++++++++++++++ libraries/TinyPower/TinyPower.h | 28 ++++++++++++++-------------- temp_sensor/src/temp_sensor.cpp | 6 +++--- 7 files changed, 43 insertions(+), 37 deletions(-) create mode 100644 libraries/Tiny/TinySwitch.h diff --git a/libraries/Tiny/ContactSensor.h b/libraries/Tiny/ContactSensor.h index 367e5a5..dd3e702 100644 --- a/libraries/Tiny/ContactSensor.h +++ b/libraries/Tiny/ContactSensor.h @@ -6,8 +6,8 @@ class ContactSensor: public TinySensor { SensorType sensorType = CONTACT; public: - ContactSensor(short id, short senderPin) : - TinySensor(id, senderPin) { + ContactSensor(short id) : + TinySensor(id) { } void sendStateAndVoltage(bool state) { diff --git a/libraries/Tiny/HumiditySensor.h b/libraries/Tiny/HumiditySensor.h index 24dd903..44a7db1 100644 --- a/libraries/Tiny/HumiditySensor.h +++ b/libraries/Tiny/HumiditySensor.h @@ -6,8 +6,8 @@ class HumiditySensor : public TinySensor { SensorType sensorType = HUMIDITY; public: - HumiditySensor(short id, short senderPin) : - TinySensor(id, senderPin) { + HumiditySensor(short id) : + TinySensor(id) { } void sendHumidityAndVoltage(int humidity) { diff --git a/libraries/Tiny/TempSensor.h b/libraries/Tiny/TempSensor.h index 86cc2fd..0a072af 100644 --- a/libraries/Tiny/TempSensor.h +++ b/libraries/Tiny/TempSensor.h @@ -6,8 +6,8 @@ class TempSensor : public TinySensor { SensorType sensorType = TEMPERATURE; public: - TempSensor(short id, short senderPin) : - TinySensor(id, senderPin) { + TempSensor(short id) : + TinySensor(id) { } void sendTempAndVoltage(int temp) { diff --git a/libraries/Tiny/TinySensor.h b/libraries/Tiny/TinySensor.h index e1a6b90..8864fa5 100644 --- a/libraries/Tiny/TinySensor.h +++ b/libraries/Tiny/TinySensor.h @@ -1,13 +1,13 @@ #pragma once -#include +#include "TinySwitch.h" #include "Tiny.h" +using TinySwitch::sendInfo; + class TinySensor { protected: short id; - short senderPin; - RCSwitch mySwitch = RCSwitch(); long readVcc() { // Read 1.1V reference against AVcc @@ -32,18 +32,8 @@ protected: return result; // Vcc in millivolts } - void sendInfo(unsigned long value) { - mySwitch.send(value, 32); - } - public: - TinySensor(short id, short senderPin) { + TinySensor(short id) { this->id = id; - this->senderPin = senderPin; - } - - void setup() { - mySwitch.enableTransmit(senderPin); - mySwitch.setProtocol(2); } }; diff --git a/libraries/Tiny/TinySwitch.h b/libraries/Tiny/TinySwitch.h new file mode 100644 index 0000000..c5d39c9 --- /dev/null +++ b/libraries/Tiny/TinySwitch.h @@ -0,0 +1,16 @@ +#pragma once + +#include + +namespace TinySwitch { + RCSwitch mySwitch = RCSwitch(); + + void sendInfo(unsigned long value) { + mySwitch.send(value, 32); + } + + void setup(short senderPin) { + mySwitch.enableTransmit(senderPin); + mySwitch.setProtocol(2); + } +} diff --git a/libraries/TinyPower/TinyPower.h b/libraries/TinyPower/TinyPower.h index 80c955a..6ed48c5 100644 --- a/libraries/TinyPower/TinyPower.h +++ b/libraries/TinyPower/TinyPower.h @@ -14,26 +14,26 @@ class TinyPower { public: static void setup() { - set_sleep_mode(SLEEP_MODE_PWR_DOWN); - enable_pin_interrupts(); + set_sleep_mode(SLEEP_MODE_PWR_DOWN); + enable_pin_interrupts(); } - static void sleep(byte pin = PCINT0) { - PCMSK |= _BV(pin); // Use PB0 as interrupt pin - adc_disable(); + static void sleep(byte pin = -1) { + if (pin >= 0) PCMSK |= _BV(pin); // Use PB0 as interrupt pin + adc_disable(); - sleep_enable(); // Sets the Sleep Enable bit in the MCUCR Register (SE BIT) - sleep_bod_disable(); - sei(); // Enable interrupts + sleep_enable(); // Sets the Sleep Enable bit in the MCUCR Register (SE BIT) + sleep_bod_disable(); + sei(); // Enable interrupts - sleep_cpu(); // sleep + sleep_cpu(); // sleep - sleep_disable(); // Clear SE bit - cli(); // Disable interrupts - PCMSK &= ~_BV(pin); // Turn off PB0 as interrupt pin - adc_enable(); + sleep_disable(); // Clear SE bit + cli(); // Disable interrupts + if (pin >= 0) PCMSK &= ~_BV(pin); // Turn off PB0 as interrupt pin + adc_enable(); - sei(); // Enable interrupts + sei(); // Enable interrupts } static void enableWdt(byte time) { diff --git a/temp_sensor/src/temp_sensor.cpp b/temp_sensor/src/temp_sensor.cpp index 044431d..d0d2ccd 100644 --- a/temp_sensor/src/temp_sensor.cpp +++ b/temp_sensor/src/temp_sensor.cpp @@ -18,19 +18,19 @@ struct DhtValues { }; DhtValues readTemp(); -TempSensor tempSensor = TempSensor(TEMP_SENSOR, SENDER); -HumiditySensor humidSensor = HumiditySensor(TEMP_SENSOR, SENDER); +TempSensor tempSensor = TempSensor(TEMP_SENSOR); +HumiditySensor humidSensor = HumiditySensor(TEMP_SENSOR); DHT dht(DHT_PIN, DHT22); volatile int counter = 0; void setup() { - tempSensor.setup(); pinMode(TEMP_POSITIVE, OUTPUT); digitalWrite(TEMP_POSITIVE, HIGH); dht.begin(); + TinySwitch::setup(SENDER); TinyPower::setup(); TinyPower::enableWdt(WDTO_8S); }