Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: temp xj-Nucleo-F303K8-SHT75-TEST
Diff: sht75.cpp
- Revision:
- 1:20aa2d4a28bf
- Parent:
- 0:f401474a3e96
- Child:
- 2:dd218144f9fe
diff -r f401474a3e96 -r 20aa2d4a28bf sht75.cpp
--- a/sht75.cpp Wed Oct 27 15:27:38 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-//
-// Ian Molesworth October 2010
-// SHT 75 class
-//
-//
-// To do:
-//
-//
-
-#include "sht75.h"
-
-void SHT75::reset()
- {
- _data.output();
- _data = 1; // data bus high
- for (int i=0;i<12;i++)
- {
- _clock = 1; // clock high
- wait_us(1);
- _clock = 0; // clock lo
- wait_us(1);
- }
- _clock = 1; // clock high
- wait_us(1);
- _data = 0;
- wait_us(1);
- _clock = 0; // clock lo
- wait_us(1);
- _clock = 1;
- wait_us(1);
- _data = 1;
- wait_us(1);
- _clock = 0;
- wait_us(1);
- }
-
-void SHT75::softReset(void)
- {
- _data.output();
- start();
- write(0x1E);
- wait_ms(12);
- }
-
-void SHT75::start(void)
- {
- _data.output();
- _clock = 1;
- wait_us(1);
- _data = 0;
- wait_us(1);
- _clock = 0;
- wait_us(1);
- _clock = 1;
- wait_us(1);
- _data = 1;
- wait_us(1);
- _clock = 0;
- }
-
-int SHT75::readStatus(void)
- {
- int status;
- status = -1;
- start();
- if (write(0x06) == 0)
- status = read(1); // read with a wait for ack
- read(0); // read without the wait
- return status;
- }
-
-bool SHT75::write(char d)
- {
- auto int i;
- _data.output(); // bus output
- // Writes char and returns -1 if no ACK was sent from remote
- for (i=0;i<8;i++)
- {
- if (d & 0x80)
- _data = 1; // data high
- else
- _data = 0; // data lo
- // shift the data
- d <<= 1;
- wait_us(1);
- _clock = 1; // clock high
- wait_us(1);
- _clock = 0; // clock lo
- }
- _data.input(); // float the bus
- wait_us(1);
- _clock = 1; // clock high
- wait_us(1);
- i = _data;
- _clock = 0; // clock lo
- return i; // leave the bus in input mode and return the status of the ack bit read.
- }
-
-int SHT75::read(char ack)
- {
- auto int i,s;
- auto char c;
- s = 0;
- _data.input(); // bus to input
-
- for (i=0;i<8;i++)
- {
- s <<= 1;
- wait_us(1);
- _clock = 1; // clock high
- wait_us(1);
- c = _data; // get the data bit
- _clock = 0; // clock lo
- if ( c )
- s |= 1;
- }
-
- if (ack == 1)
- _data = 0; // data lo
- else
- _data = 1; // data hi
- _data.output();
- _clock = 1; // clock lo
- wait_us(1);
- _clock = 0; // clock lo
- _data = 1; // data hi
- _data.input();
- return s;
- }
-
-
-// Put the current temperature into passed variable
-bool SHT75::readTempTicks(int* temp)
-{
- int v, value;
- start(); // Start a tx ( leaves data as input )
- if (write(0x03) == 0) // send the read command and get an ack
- {
- for (v=0; v<50; v ++) // wait for ready up to 500 ms
- {
- wait_ms(10); // 10 ms pause
- if ( _data == 0 ) //
- {
- value = read(1); // read a byte
- value <<= 8; // shift it in
- value |= read(1); // read another byte
- read(0);
- // transfer the value
- *temp = value;
- reset();
- return true;
- }
- }
- }
- return false;
- }
-
-bool SHT75::readHumidityTicks(int* humi)
- {
- start();
- if (write(0x05) == 0)
- {
- for (int value=0; value<50; value ++) // wait for ready up to 500 ms
- {
- wait_ms(10); //
- if ( _data == 0 ) //
- {
- value = read(1);
- value <<= 8;
- value |= read(1);
- read(0);
- *humi = value; // transfer the value
- reset();
- return true;
- }
- }
- }
-
- return false;
- }