Web server based weather station using Sparkfun Weather Meters.
Dependencies: FatFileSystem mbed WeatherMeters SDFileSystem
Diff: WeatherMeters.h
- Revision:
- 1:c7958aa34fa1
- Parent:
- 0:616601bde9fb
--- a/WeatherMeters.h Thu Feb 23 21:38:39 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -/* Copyright 2012 Adam Green (http://mbed.org/users/AdamGreen/) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ -/* Header file for class to interface with Sparkfun Weather Meters: - http://www.sparkfun.com/products/8942 -*/ -#ifndef _WEATHER_METERS_H_ -#define _WEATHER_METERS_H_ - -#include "WindVane.h" -#include "RainGauge.h" -#include "Anemometer.h" - - -namespace AFP -{ - -/** A class to interface with the Sparkfun Weather Meters. - http://www.sparkfun.com/products/8942 - - This set of weather meters from Sparkfun includes anemometer (wind speed), - wind vane, and rain gauge. All of the sensors use reed switches so that - the electronics can detect motion/location in the sensor hardware via - magnets placed in the sensors without actually exposing the electonic - switches themselves to the elements. A reed switch closes as the - anemometer spins and the rain gauge empties. The wind vane includes - 8 reed switches, each with a different valued resistor attached so that - the voltage will vary depending on where the magnet in the vane is - located. - * Example: - * @code -#include <mbed.h> -#include "WeatherMeters.h" - -int main() -{ - CWeatherMeters WeatherMeters(p9, p10, p15); - for (;;) - { - CWeatherMeters::SMeasurements Measurements; - - WeatherMeters.GetMeasurements(&Measurements); - - printf("Direction: %s\n", Measurements.WindDirectionString); - printf("Depth: %f\n",Measurements.Rainfall); - printf("Current speed: %f\n", Measurements.WindSpeed); - printf("Maximum speed: %f\n", Measurements.MaximumWindSpeed); - - wait(1.0f); - } -} - * @endcode - */ -class CWeatherMeters -{ -protected: - CAnemometer m_Anemometer; - CRainGauge m_RainGauge; - CWindVane m_WindVane; - -public: - /** A structure in which the current measurements registered by the weather - meters are returned from the GetMeasurements() method. - */ - struct SMeasurements - { - const char* WindDirectionString; /**< String representing current wind direction. Example: "North" */ - float WindDirectionAngle; /**< Wind direction in degrees from north. */ - float WindSpeed; /**< Current wind speed in km/hour. */ - float MaximumWindSpeed; /**< Maximum wind speed measured since last reset. Measured in km/hour. */ - float Rainfall; /**< Amount of rainfall since last reset. Measured in mm. */ - }; - - /** Create a CWeatherMeters object, binds it to the specified input pins, - and initializes the required interrupt handlers. - - @param AnemometerPin The mbed pin which is connected to the anemometer - sensor. Must be a pin on which the mbed supports InterruptIn. - @param RainGauagePin The mbed pin which is connected to the rain gauge - sensor. Must be a pin on which the mbed supports InterruptIn. - @param WindVanePin The mbed pin which is connected to the wind vane - sensor. Must be a pin on which the mbed supports AnalogIn. - @param WindVaneSeriesResistance The value of the resistance which is - in series with the wind vane sensor and along with the - varying resistance of the wind vane sensor itself, acts as a - voltage divider. - */ - CWeatherMeters(PinName AnemometerPin, - PinName RainGaugePin, - PinName WindVanePin, - float WindVaneSeriesResistance = 10000.0f); - - /** Gets current weather meter measurements. - - NOTE: Should call this method on a regular basis (every 15 minutes or - less) to keep internal timers from overflowing. - - @param pMeasurements points to the measurement structure to be filled in - with the current measurement from the sensors. The historical - values in this structure such as rainfall and maximum wind - speed can be reset by calls to ResetRainfall(), - ResetMaximumWindSpeed(), and Reset(). - */ - void GetMeasurements(SMeasurements* pMeasurements); - - /** Resets all historical measurements: rainfall and maximum wind speed. */ - void Reset(); - - /** Resets the cumulative rainfall measurement. */ - void ResetRainfall(); - - /** Resets the maximum wind speed measurement. */ - void ResetMaximumWindSpeed(); -}; - -} // namespace AFP -using namespace AFP; - -#endif // _WEATHER_METERS_H_