26
26
27
27
#define MEASURE_INTERVAL 60000
28
28
29
+ // FORCE_TRANSMIT_INTERVAL, this number of times of wakeup, the sensor is forced to report all values to the controller
30
+ #define FORCE_TRANSMIT_INTERVAL 30
31
+
29
32
SI7021 humiditySensor;
30
33
MySensor gw;
31
34
@@ -45,7 +48,6 @@ long lastBattery = -100;
45
48
46
49
void setup () {
47
50
48
- Serial.begin (115200 );
49
51
pinMode (LED_PIN, OUTPUT);
50
52
digitalWrite (LED_PIN, LOW);
51
53
@@ -73,6 +75,7 @@ void setup() {
73
75
gw.present (CHILD_ID_HUM,S_HUM);
74
76
75
77
gw.present (CHILD_ID_BATT, S_POWER);
78
+ switchClock (1 <<CLKPS2);
76
79
}
77
80
78
81
@@ -81,7 +84,8 @@ void loop() {
81
84
measureCount ++;
82
85
bool forceTransmit = false ;
83
86
84
- if (measureCount > 30 ) {// Every 60th time we wake up, force a transmission on all sensors.
87
+ if (measureCount > FORCE_TRANSMIT_INTERVAL
88
+ ) {// Every 60th time we wake up, force a transmission on all sensors.
85
89
forceTransmit = true ;
86
90
measureCount = 0 ;
87
91
}
@@ -106,23 +110,19 @@ void sendTempHumidityMeasurements(bool force)
106
110
lastTemperature = -100 ;
107
111
}
108
112
109
- float temperature = humiditySensor.getCelsiusHundredths ()/10 ;
110
-
111
- temperature = temperature / 10 ;
113
+ si7021_env data = humiditySensor.getHumidityAndTemperature ();
112
114
113
- int humidity = humiditySensor.getHumidityPercent ();
115
+ float temperature = data.celsiusHundredths /100 ;
116
+
117
+ int humidity = data.humidityPercent ;
114
118
115
119
if (lastTemperature != temperature) {
116
120
gw.send (msgTemp.set (temperature,1 ));
117
121
lastTemperature = temperature;
118
- Serial.print (" temperature " );
119
- Serial.println (temperature);
120
122
}
121
123
if (lastHumidity != humidity) {
122
124
gw.send (msgHum.set (humidity));
123
125
lastHumidity = humidity;
124
- Serial.print (" Humidity " );
125
- Serial.println (humidity);
126
126
}
127
127
}
128
128
@@ -155,7 +155,7 @@ long readVcc() {
155
155
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
156
156
ADMUX = _BV (MUX5) | _BV (MUX0);
157
157
#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
158
- ADMUX = _BV (MUX3) | _BV (MUX2);
158
+ ADcdMUX = _BV (MUX3) | _BV (MUX2);
159
159
#else
160
160
ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1);
161
161
#endif
@@ -188,4 +188,11 @@ void resetEEP()
188
188
}
189
189
}
190
190
191
-
191
+ void switchClock (unsigned char clk)
192
+ {
193
+ cli ();
194
+
195
+ CLKPR = 1 <<CLKPCE; // Set CLKPCE to enable clk switching
196
+ CLKPR = clk;
197
+ sei ();
198
+ }
0 commit comments