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