Skip to content

Commit 9ac6eb3

Browse files
authored
Merge pull request #304 from Forairaaaaa/master
add example Unit-Glass
2 parents 962c253 + 3460666 commit 9ac6eb3

File tree

4 files changed

+168
-105
lines changed

4 files changed

+168
-105
lines changed

examples/KIT/PM25/DFRobot_SHT20.cpp

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,65 @@
11
#include "DFRobot_SHT20.h"
22

3-
void DFRobot_SHT20::initSHT20(TwoWire &wirePort)
4-
{
3+
void DFRobot_SHT20::initSHT20(TwoWire &wirePort) {
54
i2cPort = &wirePort;
65
i2cPort->begin();
76
}
87

9-
uint16_t DFRobot_SHT20::readValue(byte cmd)
10-
{
8+
uint16_t DFRobot_SHT20::readValue(byte cmd) {
119
i2cPort->beginTransmission(SLAVE_ADDRESS);
1210
i2cPort->write(cmd);
1311
i2cPort->endTransmission();
1412
byte toRead;
1513
byte counter;
16-
for(counter = 0, toRead = 0 ; counter < MAX_COUNTER && toRead != 3; counter++){
14+
for (counter = 0, toRead = 0; counter < MAX_COUNTER && toRead != 3;
15+
counter++) {
1716
delay(DELAY_INTERVAL);
1817
toRead = i2cPort->requestFrom(SLAVE_ADDRESS, 3);
1918
}
20-
if(counter == MAX_COUNTER){
19+
if (counter == MAX_COUNTER) {
2120
return (ERROR_I2C_TIMEOUT);
2221
}
2322
byte msb, lsb, checksum;
24-
msb = i2cPort->read();
25-
lsb = i2cPort->read();
26-
checksum = i2cPort->read();
27-
uint16_t rawValue = ((uint16_t) msb << 8) | (uint16_t) lsb;
28-
if(checkCRC(rawValue, checksum) != 0){
23+
msb = i2cPort->read();
24+
lsb = i2cPort->read();
25+
checksum = i2cPort->read();
26+
uint16_t rawValue = ((uint16_t)msb << 8) | (uint16_t)lsb;
27+
if (checkCRC(rawValue, checksum) != 0) {
2928
return (ERROR_BAD_CRC);
3029
}
3130
return rawValue & 0xFFFC;
3231
}
3332

34-
float DFRobot_SHT20::readHumidity(void)
35-
{
33+
float DFRobot_SHT20::readHumidity(void) {
3634
uint16_t rawHumidity = readValue(TRIGGER_HUMD_MEASURE_NOHOLD);
37-
if(rawHumidity == ERROR_I2C_TIMEOUT || rawHumidity == ERROR_BAD_CRC){
38-
return(rawHumidity);
35+
if (rawHumidity == ERROR_I2C_TIMEOUT || rawHumidity == ERROR_BAD_CRC) {
36+
return (rawHumidity);
3937
}
4038
float tempRH = rawHumidity * (125.0 / 65536.0);
41-
float rh = tempRH - 6.0;
39+
float rh = tempRH - 6.0;
4240
return (rh);
4341
}
4442

45-
float DFRobot_SHT20::readTemperature(void)
46-
{
43+
float DFRobot_SHT20::readTemperature(void) {
4744
uint16_t rawTemperature = readValue(TRIGGER_TEMP_MEASURE_NOHOLD);
48-
if(rawTemperature == ERROR_I2C_TIMEOUT || rawTemperature == ERROR_BAD_CRC){
49-
return(rawTemperature);
45+
if (rawTemperature == ERROR_I2C_TIMEOUT ||
46+
rawTemperature == ERROR_BAD_CRC) {
47+
return (rawTemperature);
5048
}
5149
float tempTemperature = rawTemperature * (175.72 / 65536.0);
5250
float realTemperature = tempTemperature - 46.85;
5351
return (realTemperature);
5452
}
5553

56-
void DFRobot_SHT20::setResolution(byte resolution)
57-
{
54+
void DFRobot_SHT20::setResolution(byte resolution) {
5855
byte userRegister = readUserRegister();
5956
userRegister &= B01111110;
6057
resolution &= B10000001;
6158
userRegister |= resolution;
6259
writeUserRegister(userRegister);
6360
}
6461

65-
byte DFRobot_SHT20::readUserRegister(void)
66-
{
62+
byte DFRobot_SHT20::readUserRegister(void) {
6763
byte userRegister;
6864
i2cPort->beginTransmission(SLAVE_ADDRESS);
6965
i2cPort->write(READ_USER_REG);
@@ -73,40 +69,37 @@ byte DFRobot_SHT20::readUserRegister(void)
7369
return (userRegister);
7470
}
7571

76-
void DFRobot_SHT20::writeUserRegister(byte val)
77-
{
72+
void DFRobot_SHT20::writeUserRegister(byte val) {
7873
i2cPort->beginTransmission(SLAVE_ADDRESS);
7974
i2cPort->write(WRITE_USER_REG);
8075
i2cPort->write(val);
8176
i2cPort->endTransmission();
8277
}
8378

84-
byte DFRobot_SHT20::checkCRC(uint16_t message_from_sensor, uint8_t check_value_from_sensor)
85-
{
79+
byte DFRobot_SHT20::checkCRC(uint16_t message_from_sensor,
80+
uint8_t check_value_from_sensor) {
8681
uint32_t remainder = (uint32_t)message_from_sensor << 8;
8782
remainder |= check_value_from_sensor;
8883
uint32_t divsor = (uint32_t)SHIFTED_DIVISOR;
89-
for(int i = 0 ; i < 16 ; i++){
90-
if(remainder & (uint32_t)1 << (23 - i)){
84+
for (int i = 0; i < 16; i++) {
85+
if (remainder & (uint32_t)1 << (23 - i)) {
9186
remainder ^= divsor;
9287
}
9388
divsor >>= 1;
9489
}
9590
return (byte)remainder;
9691
}
9792

98-
void DFRobot_SHT20::showReslut(const char *prefix, int val)
99-
{
93+
void DFRobot_SHT20::showReslut(const char *prefix, int val) {
10094
Serial.print(prefix);
101-
if(val){
95+
if (val) {
10296
Serial.println("yes");
103-
}else{
97+
} else {
10498
Serial.println("no");
10599
}
106100
}
107101

108-
void DFRobot_SHT20::checkSHT20(void)
109-
{
102+
void DFRobot_SHT20::checkSHT20(void) {
110103
byte reg = readUserRegister();
111104
showReslut("End of battery: ", reg & USER_REGISTER_END_OF_BATTERY);
112105
showReslut("Heater enabled: ", reg & USER_REGISTER_HEATER_ENABLED);

examples/KIT/PM25/DFRobot_SHT20.h

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,50 @@
22
#define DFRobot_SHT20_h
33

44
#if defined(ARDUINO) && ARDUINO >= 100
5-
#include "Arduino.h"
5+
#include "Arduino.h"
66
#else
7-
#include "WProgram.h"
7+
#include "WProgram.h"
88
#endif
99
#include <Wire.h>
1010

11-
#define ERROR_I2C_TIMEOUT 998
12-
#define ERROR_BAD_CRC 999
13-
#define SLAVE_ADDRESS 0x40
14-
#define TRIGGER_TEMP_MEASURE_HOLD 0xE3
15-
#define TRIGGER_HUMD_MEASURE_HOLD 0xE5
16-
#define TRIGGER_TEMP_MEASURE_NOHOLD 0xF3
17-
#define TRIGGER_HUMD_MEASURE_NOHOLD 0xF5
18-
#define WRITE_USER_REG 0xE6
19-
#define READ_USER_REG 0xE7
20-
#define SOFT_RESET 0xFE
21-
#define USER_REGISTER_RESOLUTION_MASK 0x81
22-
#define USER_REGISTER_RESOLUTION_RH12_TEMP14 0x00
23-
#define USER_REGISTER_RESOLUTION_RH8_TEMP12 0x01
24-
#define USER_REGISTER_RESOLUTION_RH10_TEMP13 0x80
25-
#define USER_REGISTER_RESOLUTION_RH11_TEMP11 0x81
26-
#define USER_REGISTER_END_OF_BATTERY 0x40
27-
#define USER_REGISTER_HEATER_ENABLED 0x04
28-
#define USER_REGISTER_DISABLE_OTP_RELOAD 0x02
29-
#define MAX_WAIT 100
30-
#define DELAY_INTERVAL 10
31-
#define SHIFTED_DIVISOR 0x988000
32-
#define MAX_COUNTER (MAX_WAIT/DELAY_INTERVAL)
11+
#define ERROR_I2C_TIMEOUT 998
12+
#define ERROR_BAD_CRC 999
13+
#define SLAVE_ADDRESS 0x40
14+
#define TRIGGER_TEMP_MEASURE_HOLD 0xE3
15+
#define TRIGGER_HUMD_MEASURE_HOLD 0xE5
16+
#define TRIGGER_TEMP_MEASURE_NOHOLD 0xF3
17+
#define TRIGGER_HUMD_MEASURE_NOHOLD 0xF5
18+
#define WRITE_USER_REG 0xE6
19+
#define READ_USER_REG 0xE7
20+
#define SOFT_RESET 0xFE
21+
#define USER_REGISTER_RESOLUTION_MASK 0x81
22+
#define USER_REGISTER_RESOLUTION_RH12_TEMP14 0x00
23+
#define USER_REGISTER_RESOLUTION_RH8_TEMP12 0x01
24+
#define USER_REGISTER_RESOLUTION_RH10_TEMP13 0x80
25+
#define USER_REGISTER_RESOLUTION_RH11_TEMP11 0x81
26+
#define USER_REGISTER_END_OF_BATTERY 0x40
27+
#define USER_REGISTER_HEATER_ENABLED 0x04
28+
#define USER_REGISTER_DISABLE_OTP_RELOAD 0x02
29+
#define MAX_WAIT 100
30+
#define DELAY_INTERVAL 10
31+
#define SHIFTED_DIVISOR 0x988000
32+
#define MAX_COUNTER (MAX_WAIT / DELAY_INTERVAL)
3333

34-
class DFRobot_SHT20
35-
{
36-
public:
37-
void checkSHT20(void);
38-
void setResolution(byte resBits);
39-
void writeUserRegister(byte val);
40-
void initSHT20(TwoWire &wirePort = Wire);
41-
void showReslut(const char *prefix, int val);
42-
float readHumidity(void);
43-
float readTemperature(void);
44-
byte readUserRegister(void);
34+
class DFRobot_SHT20 {
35+
public:
36+
void checkSHT20(void);
37+
void setResolution(byte resBits);
38+
void writeUserRegister(byte val);
39+
void initSHT20(TwoWire &wirePort = Wire);
40+
void showReslut(const char *prefix, int val);
41+
float readHumidity(void);
42+
float readTemperature(void);
43+
byte readUserRegister(void);
4544

46-
private:
45+
private:
4746
TwoWire *i2cPort;
48-
byte checkCRC(uint16_t message_from_sensor, uint8_t check_value_from_sensor);
47+
byte checkCRC(uint16_t message_from_sensor,
48+
uint8_t check_value_from_sensor);
4949
uint16_t readValue(byte cmd);
5050
};
5151

0 commit comments

Comments
 (0)