diff --git a/libraries/Tiny/Tiny.h b/libraries/Tiny/Tiny.h index ad7dcca..949bdd0 100644 --- a/libraries/Tiny/Tiny.h +++ b/libraries/Tiny/Tiny.h @@ -1,17 +1,17 @@ #pragma once #define ID(value) (value & 0x1F) -#define STATE(value) ((value & 0x1) << 5) -#define VCC(value) ((value & 0x1FFF) << 6) -#define TEMP(value) (((unsigned long)value & 0x1FF) << 19) -#define HUMIDITY(value) (((unsigned long)value & 0x7F) << 19) +#define VCC(value) ((value & 0x1FFF) << 5) +#define TEMP(value) (((unsigned long)value & 0x2FF) << 18) +#define HUMIDITY(value) (((unsigned long)value & 0x2FF) << 18) +#define STATE(value) ((value & 0x1) << 27) #define TYPE(value) (((unsigned long)value & 0xF) << 28) #define GET_TYPE(value) (((unsigned long)value >> 28) & 0xF) -#define GET_TEMP(value) (((unsigned long)value >> 19) & 0x1FF) -#define GET_HUMIDITY(value) (((unsigned long)value >> 19) & 0x7F) -#define GET_VCC(value) ((value >> 6) & 0x1FFF) -#define GET_STATE(value) ((value >> 5) & 0x1) +#define GET_STATE(value) ((value >> 27) & 0x1) +#define GET_TEMP(value) (((unsigned long)value >> 18) & 0x2FF) +#define GET_HUMIDITY(value) (((unsigned long)value >> 18) & 0x2FF) +#define GET_VCC(value) ((value >> 5) & 0x1FFF) enum SensorType { HUMIDITY = 5, diff --git a/temp_sensor/src/temp_sensor.cpp b/temp_sensor/src/temp_sensor.cpp index d0d2ccd..5e674f2 100644 --- a/temp_sensor/src/temp_sensor.cpp +++ b/temp_sensor/src/temp_sensor.cpp @@ -29,6 +29,7 @@ void setup() { pinMode(TEMP_POSITIVE, OUTPUT); digitalWrite(TEMP_POSITIVE, HIGH); dht.begin(); + delay(2000); TinySwitch::setup(SENDER); TinyPower::setup(); @@ -36,15 +37,14 @@ void setup() { } void loop() { - if (counter % SEND_VCC_INTERVAL == 0) { + if (counter % SEND_INTERVAL == 0) { DhtValues values = readTemp(); - tempSensor.sendTempAndVoltage(values.temperature); - delay(100); - humidSensor.sendHumidity(values.humidity); - counter = 0; - } else if (counter % SEND_INTERVAL == 0) { - DhtValues values = readTemp(); - tempSensor.sendTemp(values.temperature); + if (counter % SEND_VCC_INTERVAL == 0) { + tempSensor.sendTempAndVoltage(values.temperature); + counter = 0; + } else { + tempSensor.sendTemp(values.temperature); + } delay(100); humidSensor.sendHumidity(values.humidity); } @@ -52,18 +52,19 @@ void loop() { } DhtValues readTemp() { - digitalWrite(TEMP_POSITIVE, HIGH); - delay(10); DhtValues dhtValues; dhtValues.temperature = roundf(dht.readTemperature() * 10); dhtValues.humidity = roundf(dht.readHumidity() * 10); digitalWrite(TEMP_POSITIVE, LOW); + pinMode(DHT_PIN, OUTPUT); + digitalWrite(DHT_PIN, LOW); return dhtValues; } -ISR(PCINT0_vect) { -} - ISR(WDT_vect) { counter++; + if (((counter + 1) % SEND_INTERVAL == 0) || ((counter + 1) % SEND_VCC_INTERVAL == 0)) { + pinMode(DHT_PIN, INPUT_PULLUP); + digitalWrite(TEMP_POSITIVE, HIGH); + } }