optimise data sending
This commit is contained in:
parent
2b414d3778
commit
0ce4ca5637
@ -1,17 +1,17 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define ID(value) (value & 0x1F)
|
#define ID(value) (value & 0x1F)
|
||||||
#define STATE(value) ((value & 0x1) << 5)
|
#define VCC(value) ((value & 0x1FFF) << 5)
|
||||||
#define VCC(value) ((value & 0x1FFF) << 6)
|
#define TEMP(value) (((unsigned long)value & 0x2FF) << 18)
|
||||||
#define TEMP(value) (((unsigned long)value & 0x1FF) << 19)
|
#define HUMIDITY(value) (((unsigned long)value & 0x2FF) << 18)
|
||||||
#define HUMIDITY(value) (((unsigned long)value & 0x7F) << 19)
|
#define STATE(value) ((value & 0x1) << 27)
|
||||||
#define TYPE(value) (((unsigned long)value & 0xF) << 28)
|
#define TYPE(value) (((unsigned long)value & 0xF) << 28)
|
||||||
|
|
||||||
#define GET_TYPE(value) (((unsigned long)value >> 28) & 0xF)
|
#define GET_TYPE(value) (((unsigned long)value >> 28) & 0xF)
|
||||||
#define GET_TEMP(value) (((unsigned long)value >> 19) & 0x1FF)
|
#define GET_STATE(value) ((value >> 27) & 0x1)
|
||||||
#define GET_HUMIDITY(value) (((unsigned long)value >> 19) & 0x7F)
|
#define GET_TEMP(value) (((unsigned long)value >> 18) & 0x2FF)
|
||||||
#define GET_VCC(value) ((value >> 6) & 0x1FFF)
|
#define GET_HUMIDITY(value) (((unsigned long)value >> 18) & 0x2FF)
|
||||||
#define GET_STATE(value) ((value >> 5) & 0x1)
|
#define GET_VCC(value) ((value >> 5) & 0x1FFF)
|
||||||
|
|
||||||
enum SensorType {
|
enum SensorType {
|
||||||
HUMIDITY = 5,
|
HUMIDITY = 5,
|
||||||
|
|||||||
@ -29,6 +29,7 @@ void setup() {
|
|||||||
pinMode(TEMP_POSITIVE, OUTPUT);
|
pinMode(TEMP_POSITIVE, OUTPUT);
|
||||||
digitalWrite(TEMP_POSITIVE, HIGH);
|
digitalWrite(TEMP_POSITIVE, HIGH);
|
||||||
dht.begin();
|
dht.begin();
|
||||||
|
delay(2000);
|
||||||
|
|
||||||
TinySwitch::setup(SENDER);
|
TinySwitch::setup(SENDER);
|
||||||
TinyPower::setup();
|
TinyPower::setup();
|
||||||
@ -36,15 +37,14 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
if (counter % SEND_VCC_INTERVAL == 0) {
|
if (counter % SEND_INTERVAL == 0) {
|
||||||
DhtValues values = readTemp();
|
DhtValues values = readTemp();
|
||||||
tempSensor.sendTempAndVoltage(values.temperature);
|
if (counter % SEND_VCC_INTERVAL == 0) {
|
||||||
delay(100);
|
tempSensor.sendTempAndVoltage(values.temperature);
|
||||||
humidSensor.sendHumidity(values.humidity);
|
counter = 0;
|
||||||
counter = 0;
|
} else {
|
||||||
} else if (counter % SEND_INTERVAL == 0) {
|
tempSensor.sendTemp(values.temperature);
|
||||||
DhtValues values = readTemp();
|
}
|
||||||
tempSensor.sendTemp(values.temperature);
|
|
||||||
delay(100);
|
delay(100);
|
||||||
humidSensor.sendHumidity(values.humidity);
|
humidSensor.sendHumidity(values.humidity);
|
||||||
}
|
}
|
||||||
@ -52,18 +52,19 @@ void loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DhtValues readTemp() {
|
DhtValues readTemp() {
|
||||||
digitalWrite(TEMP_POSITIVE, HIGH);
|
|
||||||
delay(10);
|
|
||||||
DhtValues dhtValues;
|
DhtValues dhtValues;
|
||||||
dhtValues.temperature = roundf(dht.readTemperature() * 10);
|
dhtValues.temperature = roundf(dht.readTemperature() * 10);
|
||||||
dhtValues.humidity = roundf(dht.readHumidity() * 10);
|
dhtValues.humidity = roundf(dht.readHumidity() * 10);
|
||||||
digitalWrite(TEMP_POSITIVE, LOW);
|
digitalWrite(TEMP_POSITIVE, LOW);
|
||||||
|
pinMode(DHT_PIN, OUTPUT);
|
||||||
|
digitalWrite(DHT_PIN, LOW);
|
||||||
return dhtValues;
|
return dhtValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
ISR(PCINT0_vect) {
|
|
||||||
}
|
|
||||||
|
|
||||||
ISR(WDT_vect) {
|
ISR(WDT_vect) {
|
||||||
counter++;
|
counter++;
|
||||||
|
if (((counter + 1) % SEND_INTERVAL == 0) || ((counter + 1) % SEND_VCC_INTERVAL == 0)) {
|
||||||
|
pinMode(DHT_PIN, INPUT_PULLUP);
|
||||||
|
digitalWrite(TEMP_POSITIVE, HIGH);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user