SHT V4 5V UART

Dependencies:   mbed

Fork of SHT_v1 by Stephen McGarry

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?

UserRevisionLine numberNew 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