mbed Weather Platform firmware http://mbed.org/users/okini3939/notebook/mbed-weather-platform-firmware/

Dependencies:   ChaNFSSD EthernetNetIf I2CLEDDisp Agentbed ChaNFSUSB ILinterpreter mbed BMP085 WeatherMeters ConfigFile ChaNFS I2CLCD

Committer:
okini3939
Date:
Fri Mar 16 15:26:46 2012 +0000
Revision:
8:bed0b81794ba
Parent:
0:bdb53686c194

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:bdb53686c194 1 /* mbed module to use a Sensirion SHT1x /SHT7x sensor
okini3939 0:bdb53686c194 2 * Copyright (c) 2007-2009 Stephen McGarry
okini3939 0:bdb53686c194 3 * Released under the MIT License: http://mbed.org/license/mit
okini3939 0:bdb53686c194 4 */
okini3939 0:bdb53686c194 5 #ifndef SHT_H
okini3939 0:bdb53686c194 6 #define SHT_H
okini3939 0:bdb53686c194 7
okini3939 0:bdb53686c194 8 #include "mbed.h"
okini3939 0:bdb53686c194 9
okini3939 0:bdb53686c194 10 enum SHT_acc {
okini3939 0:bdb53686c194 11 SHT_low=0,
okini3939 0:bdb53686c194 12 SHT_high=1
okini3939 0:bdb53686c194 13 };
okini3939 0:bdb53686c194 14
okini3939 0:bdb53686c194 15 typedef unsigned char byte;
okini3939 0:bdb53686c194 16
okini3939 0:bdb53686c194 17 class SHT : public Base {
okini3939 0:bdb53686c194 18 public:
okini3939 0:bdb53686c194 19 /* Constructor: SHT
okini3939 0:bdb53686c194 20 * Creates an SHT interface connected to specific pins.
okini3939 0:bdb53686c194 21 *
okini3939 0:bdb53686c194 22 */
okini3939 0:bdb53686c194 23 SHT(PinName p_sclk, PinName p_data, SHT_acc p_accuracy);
okini3939 0:bdb53686c194 24
okini3939 0:bdb53686c194 25 /* Functions
okini3939 0:bdb53686c194 26 */
okini3939 0:bdb53686c194 27 float get_temperature(); // get the most recent temp reading
okini3939 0:bdb53686c194 28 float get_humidity(); // get the most recent humidity reading
okini3939 0:bdb53686c194 29 float get_dewpoint(); // get the most recent dewpoint value
okini3939 0:bdb53686c194 30 void update(SHT_acc accuracy); // update stored values from sensor
okini3939 0:bdb53686c194 31
okini3939 0:bdb53686c194 32 protected:
okini3939 0:bdb53686c194 33 byte read_byte(bool send_ack);
okini3939 0:bdb53686c194 34 char write_byte(byte value);
okini3939 0:bdb53686c194 35 void trans_start(void);
okini3939 0:bdb53686c194 36 void connection_reset(void);
okini3939 0:bdb53686c194 37 char soft_reset();
okini3939 0:bdb53686c194 38 char read_status(byte &value);
okini3939 0:bdb53686c194 39 char write_status(byte value);
okini3939 0:bdb53686c194 40 char measure(int &value, byte mode);
okini3939 0:bdb53686c194 41 void calculate();
okini3939 0:bdb53686c194 42
okini3939 0:bdb53686c194 43 DigitalOut sclk;
okini3939 0:bdb53686c194 44 DigitalInOut data;
okini3939 0:bdb53686c194 45 SHT_acc accuracy; // will we use high or low accuracy mode on the sensor
okini3939 0:bdb53686c194 46
okini3939 0:bdb53686c194 47 float temperature; // calculated from sensor reading
okini3939 0:bdb53686c194 48 float humidity;
okini3939 0:bdb53686c194 49 float dewpoint;
okini3939 0:bdb53686c194 50 int temp,hum; // integer values from sensor before conversion
okini3939 0:bdb53686c194 51
okini3939 0:bdb53686c194 52 enum commands {
okini3939 0:bdb53686c194 53 com_read_status_reg=0x06,
okini3939 0:bdb53686c194 54 com_write_status_reg=0x07,
okini3939 0:bdb53686c194 55 com_measure_temp=0x03,
okini3939 0:bdb53686c194 56 com_measure_humid=0x05,
okini3939 0:bdb53686c194 57 com_reset=0x1E
okini3939 0:bdb53686c194 58 };
okini3939 0:bdb53686c194 59
okini3939 0:bdb53686c194 60 enum acks {
okini3939 0:bdb53686c194 61 no_ack=0,
okini3939 0:bdb53686c194 62 send_ack=1
okini3939 0:bdb53686c194 63 };
okini3939 0:bdb53686c194 64 };
okini3939 0:bdb53686c194 65
okini3939 0:bdb53686c194 66 #endif