I wanted to get more meaningful information from a basic temperature, humidity and pressure setup and I figured the way to do that was to have data that could be compared to a previous point in time. This is especially true for barometric pressure since whether it is rising or falling is far more useful than just knowing the current pressure alone.
The hardware I used is listed above and it's all connected in a standard way. I won't be getting into obtaining basic data from the sensors and sending it to an LCD, I'll assume you're past that point. This is more of a code example than a hardware tutorial. If you can get data to or from a DHT22, a BMP280 and a 20x4 LCD you should be good. I'm including a .fzz diagram of the circuit for completeness.
I describe the screens in greater detail below, but the video below shows system startup and then an abbreviated run through the 3 screens of data.Startup Screen
Performs a sensor check on startup.
The rotation begins at the next screen, which shows the primary current and comparative data.
The comparative information for both temperature and pressure is expressed as the difference between the current and comparative amounts. So in the above example, the comparative temperature would be -0.4 and it is now 0.7 degrees colder. The arrows indicate the trend direction.
Data age is zero (see video above) so this value counts up until the maximum is reached and then continues to display that maximum. For the above example, 60 is the maximum and will continue to display this in subsequent loops. At 60, a data point will have been recorded for each minute of the past hour so this tells us that all of our data points have now been populated with the correct comparative values.
The number 19 at bottom right indicates the number of seconds until the next screen is displayed.Screen 2 - Temperature Trend
The next screen shows the trend for temperature over the preceding 60 minutes, most recent reading beginning on the left, oldest on the right. H and L denote the temperature range for the 60 minute period displayed by the graph.
The 3 at bottom left shows the number of seconds until the screen changes.
This screen follows the same method as the previous screen. The significant difference here is that there wasn't enough room to show the H and L for the pressure range but it should be obvious which is which.
I could have done the same with the humidity data but this is aimed at the Uno and memory would become an issue if the program has to store 60 additional floats. As it stands, the code compiles to ~1, 200 bytes (58%) and the compiler starts complaining at 75%. Beyond memory capacity, there's no reason not to add comparative data for humidity.
**Note: code has been modified a bit to account for the issue brought up in the comments and a couple of other minor tweaks.Adding Network Capability and a Database
The above code has been modified into a second project which includes an Ethernet shield and a PHP/MySQL backend to record and display data.