running median

This commit is contained in:
2021-07-01 12:48:30 +03:00
parent 2b6c8fb0c8
commit 9615b66a84

View File

@@ -10,12 +10,12 @@
#define MY_DEFAULT_LED_BLINK_PERIOD 5 #define MY_DEFAULT_LED_BLINK_PERIOD 5
#include <MySensors.h> #include <MySensors.h>
#include <AHT10.h> #include <AHT10.h>
#include "RunningMedian.h" //#include "RunningMedian.h"
uint32_t cRun; uint32_t cRun;
int BATTERY_SENSE_PIN = A0; int BATTERY_SENSE_PIN = A0;
int sensorValue, batteryPcnt; int sensorValue, batteryPcnt;
float v; float v, temp_out, hum_out;
int oldBatteryPcnt = 0; int oldBatteryPcnt = 0;
void presentation(); void presentation();
@@ -31,11 +31,10 @@ void sendData(MyMessage msg, uint32_t status);
AHT10 myAHT10(AHT10_ADDRESS_0X38); AHT10 myAHT10(AHT10_ADDRESS_0X38);
#define TIME_SLEEP 300000 #define TIME_SLEEP 300000
RunningMedian tempRM = RunningMedian(4); // RunningMedian tempRM = RunningMedian(4);
RunningMedian humRM = RunningMedian(4); // RunningMedian humRM = RunningMedian(4);
void setup() { void setup() {
float temp, hum;
//analogReference(INTERNAL); //analogReference(INTERNAL);
//sensorValue = analogRead(BATTERY_SENSE_PIN); //sensorValue = analogRead(BATTERY_SENSE_PIN);
//v = sensorValue * 0.004659498; //v = sensorValue * 0.004659498;
@@ -46,10 +45,11 @@ void setup() {
delay(5000); delay(5000);
} }
Serial.println(F("AHT10 OK")); Serial.println(F("AHT10 OK"));
Serial.print(F("T: ")); Serial.print(temp = myAHT10.readTemperature(AHT10_FORCE_READ_DATA));// Serial.println(F(" +-0.3C")); Serial.print(F("T: ")); Serial.print(temp_out = myAHT10.readTemperature(AHT10_FORCE_READ_DATA));// Serial.println(F(" +-0.3C"));
Serial.print(F("H: ")); Serial.print(hum = myAHT10.readHumidity(AHT10_USE_READ_DATA));// Serial.println(F(" +-2%")); Serial.print(F("H: ")); Serial.print(hum_out = myAHT10.readHumidity(AHT10_USE_READ_DATA));// Serial.println(F(" +-2%"));
sendData(msgTemp, temp, 1);
sendData(msgHum, hum, 1); sendData(msgTemp, temp_out, 1);
sendData(msgHum, hum_out, 1);
unsigned long battMV = hwCPUVoltage(); unsigned long battMV = hwCPUVoltage();
sendData(msgVolts, battMV / 1000.0, 2); sendData(msgVolts, battMV / 1000.0, 2);
cRun = 0; cRun = 0;
@@ -67,8 +67,10 @@ void loop() {
//Serial.print(F("T: ")); Serial.println(temp);// Serial.println(F(" +-0.3C")); //Serial.print(F("T: ")); Serial.println(temp);// Serial.println(F(" +-0.3C"));
//Serial.print(F("H: ")); Serial.println(hum);// Serial.println(F(" +-2%")); //Serial.print(F("H: ")); Serial.println(hum);// Serial.println(F(" +-2%"));
if (temp < 200){ if (temp < 200){
tempRM.add(temp); temp_out += (temp - temp_out) * 0.1;
humRM.add(hum); hum_out += (hum - hum_out) * 0.1;
//tempRM.add(temp);
//humRM.add(hum);
// send(msgTemp.set(temp, 1)); // send(msgTemp.set(temp, 1));
// send(msgHum.set(hum, 1)); // send(msgHum.set(hum, 1));
} }
@@ -79,8 +81,8 @@ void loop() {
//batteryPcnt = ((v-3.0) * 100) / 1.2; //batteryPcnt = ((v-3.0) * 100) / 1.2;
//sendBatteryLevel(batteryPcnt); //sendBatteryLevel(batteryPcnt);
if(nRun++ == 3){ if(nRun++ == 3){
sendData(msgTemp, tempRM.getMedian(), 1); sendData(msgTemp, temp_out, 1);
sendData(msgHum, humRM.getMedian(), 1); sendData(msgHum, hum_out, 1);
sendData(msgVolts, v, 2); sendData(msgVolts, v, 2);
//send(msgVolts.set(v, 2)); //send(msgVolts.set(v, 2));
//Serial.println(F("Tm run")); Serial.println(millis() - t); //Serial.println(F("Tm run")); Serial.println(millis() - t);