Comments (8)
@coelner can you fix this.
from bme280.
Yes, I take care of this.
@jirkaptr
How did you do the measurement of speed and code size?
- yes, it seems reasonable.
- yes, but not by writing it directly to the formula. the values should be
const
including the use of PROGMEM. Why should it save RAM if we write it directly to the formula? - No, because below this temperature the heatindex is not relevant. use windchill instead. I will add a textual reminder and return the original temperature.
- Yes. I fixed that. Thanks.
from bme280.
@coelner:
To point 2.
My idea regarding code efficiency improvement is this (substitution of lines 75 – 83):
heatindex = -8.784695; //coeff. 0
heatindex += 1.61139411 * temperature; //1
heatindex += 2.338549 * humidity; //2
heatindex += - 0.14611605 * temperature * humidity; //3
float TempQ = temperature * temperature;
heatindex += (-1.2308094 / 100) * TempQ; //4
float HumQ = humidity * humidity;
heatindex += (-1.6424828 / 100) * HumQ; //5
heatindex += (2.211732 / 1000) * TempQ * humidity; //6
heatindex += (7.2546 / 10000) * temperature * HumQ; //7
heatindex += (-3.582 / 1000000) * TempQ * HumQ; //8
The gist is in fact that constants written directly into code (also defined by #define) are (usually) treated as part of code, i.e. as constants taken directly into ALU from program code, and they do not occupy RAM. Another advantage is that there are not calculated and used pointers to array. This is most effective solution (but not ideally aesthetic).
To point 3.
Most of resources provides information about limit 26.7/80. However I have found NOAA document http://www.wpc.ncep.noaa.gov/html/heatindex_equation.shtml . This document gives a good impression.
Merry Christmass!
P.S.:
Additional info:
The article "Methods to Calculate the Heat Index as an Exposure Metric in Environmental Health Research" (https://ehp.niehs.nih.gov/1206273/) compares 21 calculation methods of HeatIndex. The essential info is contained in these pictures:
Above mentioned NWS algorithm:
from bme280.
@jirkaptr
Point 2: Understood, but I think it is up to @finitespace to decide which way he wants
Point 3: https://github.com/adafruit/DHT-sensor-library/blob/09344416d2f3e8da0526494eb008c98d95fc0d79/DHT.cpp
from bme280.
Yeah, I would like to remove all these magic numbers from EnvironmentCalculations.cpp. I think the only way to do that without increasing memory usage is to to throw a bunch of defines at the top. That was an interesting solution to use PROGMEM, I am not sure of it's downfalls as I have not used it before.
from bme280.
pull request contains NWS algorithm and coeffs as #define
from bme280.
@coelner @jirkaptr I have merged @coelner's branch into the heatIndex branch and made modifications to minimize the logic. Please check the logic again to ensure I didn't make any mistakes. If this looks good, I will merge it into trunk.
from bme280.
from bme280.
Related Issues (20)
- Filter is only applied to temperature and pressure HOT 3
- STM32F103C8 - bme.begin (); - program stops HOT 3
- BME280 v3.0 not work with u8g2 and display HX1230_SW_SPI HOT 3
- The question of the wind chill HOT 3
- non void function without return value HOT 1
- Propose License Change to LGPL/MIT HOT 28
- AbsoluteHumidity and HeatIndex environment calculations missing HOT 1
- Implement CI HOT 1
- Change Wire hard code over to passed in wire instance in I2C class
- BME280 no humidity :( HOT 1
- BME680 integration HOT 1
- SPI.h is inculed althought BME280Spi is not in use HOT 1
- non-void-return issue in 3.0.0 HOT 6
- ESP32 boot loop when calling bme.begin() HOT 3
- I2C to USB
- delete
- delete HOT 1
- Latest commits do not show on Platformio. Tries to revert to "some 3.0.0" version
- Compiler warning when deleting a BME280I2C object
- Normal mode not working
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bme280.