Folowing updates done:

Corrected division in the code deciding whether to transmit or not, that resulted in generating an integer. Now it's generating floats as expected.
Simplified detection for OTA bootloader, now detecting if MY_OTA_FIRMWARE_FEATURE is defined. If this is defined sensebender automaticly waits 300mS after each transmission
Moved Battery status messages, so they are transmitted together with normal sensor updates (but only every 60th minute)
This commit is contained in:
Thomas Mørch
2015-10-18 23:08:00 +02:00
parent 35f43a49be
commit 0b985b13e2
@@ -61,7 +61,7 @@
// Uncomment the line below, to transmit battery voltage as a normal sensor value
//#define BATT_SENSOR 199
#define RELEASE "1.3"
#define RELEASE "1.4"
#define AVERAGES 2
@@ -88,7 +88,6 @@
// Pin definitions
#define TEST_PIN A0
#define OTA_ENABLE A1
#define LED_PIN A2
#define ATSHA204_PIN 17 // A3
@@ -111,7 +110,6 @@ int measureCount = 0;
int sendBattery = 0;
boolean isMetric = true;
boolean highfreq = true;
boolean ota_enabled = false;
boolean transmission_occured = false;
// Storage of old measurements
@@ -142,18 +140,11 @@ void setup() {
digitalWrite(TEST_PIN, HIGH); // Enable pullup
if (!digitalRead(TEST_PIN)) testMode();
pinMode(OTA_ENABLE, INPUT);
digitalWrite(OTA_ENABLE, HIGH);
if (!digitalRead(OTA_ENABLE)) {
ota_enabled = true;
}
// Make sure that ATSHA204 is not floating
pinMode(ATSHA204_PIN, INPUT);
digitalWrite(ATSHA204_PIN, HIGH);
digitalWrite(TEST_PIN,LOW);
digitalWrite(OTA_ENABLE, LOW); // remove pullup, save some power.
digitalWrite(LED_PIN, HIGH);
@@ -169,7 +160,10 @@ void setup() {
raHum.clear();
sendTempHumidityMeasurements(false);
sendBattLevel(false);
if (ota_enabled) Serial.println("OTA FW update enabled");
#ifdef MY_OTA_FIRMWARE_FEATURE
Serial.println("OTA FW update enabled");
#endif
}
@@ -196,11 +190,13 @@ void loop() {
sendBattery ++;
bool forceTransmit = false;
transmission_occured = false;
#ifndef MY_OTA_FIRMWARE_FEATURE
if ((measureCount == 5) && highfreq)
{
if (!ota_enabled) clock_prescale_set(clock_div_8); // Switch to 1Mhz for the reminder of the sketch, save power.
clock_prescale_set(clock_div_8); // Switch to 1Mhz for the reminder of the sketch, save power.
highfreq = false;
}
#endif
if (measureCount > FORCE_TRANSMIT_INTERVAL) { // force a transmission
forceTransmit = true;
@@ -208,15 +204,16 @@ void loop() {
}
sendTempHumidityMeasurements(forceTransmit);
if (sendBattery > 60)
/* if (sendBattery > 60)
{
sendBattLevel(forceTransmit); // Not needed to send battery info that often
sendBattery = 0;
}
if (ota_enabled & transmission_occured) {
}*/
#ifdef MY_OTA_FIRMWARE_FEATURE
if (transmission_occured) {
wait(OTA_WAIT_PERIOD);
}
#endif
sleep(MEASURE_INTERVAL);
}
@@ -238,7 +235,7 @@ void sendTempHumidityMeasurements(bool force)
raHum.addValue(data.humidityPercent);
float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100);
float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100.0);
float diffHum = abs(lastHumidity - raHum.getAverage());
Serial.print(F("TempDiff :"));Serial.println(diffTemp);
@@ -261,6 +258,10 @@ void sendTempHumidityMeasurements(bool force)
lastTemperature = temperature;
lastHumidity = humidity;
transmission_occured = true;
if (sendBattery > 60) {
sendBattLevel(true); // Not needed to send battery info that often
sendBattery = 0;
}
}
}