From c7fd9242b6896533298b37c66721fc1057711b52 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Fri, 24 Nov 2017 20:09:55 +0100 Subject: [PATCH] implement RunningAverage of 20 for DHT22 This should help this extreamly noisy sensor. We also pull readings every 2 seconds so we can report running average of last 20 readings right away. --- .../RunningAverage}/RunningAverage.cpp | 0 .../RunningAverage}/RunningAverage.h | 0 rpi_promini/Makefile | 6 ++--- rpi_promini/rpi_promini.ino | 26 ++++++++++++++++--- 4 files changed, 25 insertions(+), 7 deletions(-) rename {wlan_si => libraries/RunningAverage}/RunningAverage.cpp (100%) rename {wlan_si => libraries/RunningAverage}/RunningAverage.h (100%) diff --git a/wlan_si/RunningAverage.cpp b/libraries/RunningAverage/RunningAverage.cpp similarity index 100% rename from wlan_si/RunningAverage.cpp rename to libraries/RunningAverage/RunningAverage.cpp diff --git a/wlan_si/RunningAverage.h b/libraries/RunningAverage/RunningAverage.h similarity index 100% rename from wlan_si/RunningAverage.h rename to libraries/RunningAverage/RunningAverage.h diff --git a/rpi_promini/Makefile b/rpi_promini/Makefile index 1b11b18..c211581 100644 --- a/rpi_promini/Makefile +++ b/rpi_promini/Makefile @@ -7,8 +7,8 @@ all: echo "flash serial" flash: - scp /tmp/build*.tmp/*.hex pi@rpi.tv:/tmp/ - ssh pi@rpi.tv /home/pi/avrdude.sh + scp build-*/*.hex pi@rpi:/tmp/ + ssh pi@rpi /home/pi/avrdude.sh serial: - ssh pi@rpi.tv microcom -p /dev/ttyAMA0 -s 9600 + ssh pi@rpi microcom -p /dev/ttyAMA0 -s 9600 diff --git a/rpi_promini/rpi_promini.ino b/rpi_promini/rpi_promini.ino index 81964a3..1567fee 100644 --- a/rpi_promini/rpi_promini.ino +++ b/rpi_promini/rpi_promini.ino @@ -76,6 +76,11 @@ void send_315(char *code) { #include "DHT.h" DHT dht; +#include "RunningAverage.h" + +RunningAverage temp_avg(20); +RunningAverage hum_avg(20); + // setup void help() { @@ -94,13 +99,28 @@ void setup() { // DHT22 dht.setup(8); + temp_avg.addValue( dht.getTemperature() ); + hum_avg.addValue( dht.getHumidity() ); + } int serial_pos = 0; char serial_data[2]; // socket (0-9), state (0-1) char binary_data[32]; +unsigned long time = millis(); + void loop() { + if ( millis() - time > 2000 ) { + float t = dht.getTemperature(); + if ( dht.getStatus() == 0 ) + temp_avg.addValue( t ); + float h = dht.getHumidity(); + if ( dht.getStatus() == 0 ) + hum_avg.addValue( h ); + time = millis(); + } + if (mySwitch.available()) { Serial.print(mySwitch.getReceivedBitlength()); Serial.print(" bits "); @@ -147,11 +167,9 @@ void loop() { // DHT22 if (input == 'd') { Serial.print("temperature="); - Serial.print(dht.getTemperature()); + Serial.print(temp_avg.getAverage()); Serial.print(" humidity="); - Serial.print(dht.getHumidity()); - Serial.print(" status="); - Serial.println(dht.getStatusString()); + Serial.println(hum_avg.getAverage()); } if ( input >= 0x30 && input <= 0x39 && serial_pos < 2 ) { -- 2.20.1