diff --git a/temp_sensor/include/Dht22Sensor.h b/temp_sensor/include/Dht22Sensor.h index b45055c..2cb3144 100644 --- a/temp_sensor/include/Dht22Sensor.h +++ b/temp_sensor/include/Dht22Sensor.h @@ -42,4 +42,15 @@ public: delay(100); sendHumidity(values.humidity); } + + void turnOnSensor() override { + pinMode(DHT_PIN, INPUT_PULLUP); + digitalWrite(TEMP_POSITIVE, HIGH); + } + + void turnOffSensor() override { + digitalWrite(TEMP_POSITIVE, LOW); + pinMode(DHT_PIN, OUTPUT); + digitalWrite(DHT_PIN, LOW); + } }; diff --git a/temp_sensor/include/TempSensor.h b/temp_sensor/include/TempSensor.h index 35e70df..34c86d0 100644 --- a/temp_sensor/include/TempSensor.h +++ b/temp_sensor/include/TempSensor.h @@ -11,4 +11,6 @@ public: virtual void setup() = 0; virtual bool readTemp() = 0; virtual void sendValues(bool voltage = false) = 0; + virtual void turnOnSensor() {} + virtual void turnOffSensor() {} }; diff --git a/temp_sensor/src/temp_sensor.cpp b/temp_sensor/src/temp_sensor.cpp index 7456c86..10c82c7 100644 --- a/temp_sensor/src/temp_sensor.cpp +++ b/temp_sensor/src/temp_sensor.cpp @@ -8,11 +8,7 @@ // Pins #define SENDER PIN_B2 -DhtValues readTemp(); -void turnOnDht(); -void turnOffDht(); - -TempSensor &tempSensor = *(new Dht22Sensor(TEMP_SENSOR)); +TempSensor& tempSensor = *(new Dht22Sensor(TEMP_SENSOR)); volatile int counter = 0; @@ -38,10 +34,10 @@ void loop() { tempSensor.sendValues(); } - turnOffDht(); + tempSensor.turnOffSensor(); } if (retry && !success) { - turnOffDht(); + tempSensor.turnOffSensor(); } retry = !retry && !success; } @@ -51,17 +47,6 @@ void loop() { ISR(WDT_vect) { counter++; if (((counter + 1) % SEND_INTERVAL == 0) || ((counter + 1) % SEND_VCC_INTERVAL == 0)) { - turnOnDht(); + tempSensor.turnOnSensor(); } } - -void turnOnDht() { - pinMode(DHT_PIN, INPUT_PULLUP); - digitalWrite(TEMP_POSITIVE, HIGH); -} - -void turnOffDht() { - digitalWrite(TEMP_POSITIVE, LOW); - pinMode(DHT_PIN, OUTPUT); - digitalWrite(DHT_PIN, LOW); -}