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

Dependencies:   EthernetNetIf SDHCFileSystem I2CLEDDisp Agentbed NTPClient_NetServices mbed BMP085 HTTPClient ConfigFile I2CLCD

Committer:
okini3939
Date:
Fri Jun 03 15:38:22 2011 +0000
Revision:
19:69b77f9e0446
Parent:
0:4265d973a98f

        

Who changed what in which revision?

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