IP Configuration
This commit is contained in:
173
lib/Adafruit_Si7021/Adafruit_Si7021.cpp
Normal file
173
lib/Adafruit_Si7021/Adafruit_Si7021.cpp
Normal file
@@ -0,0 +1,173 @@
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@file Adafruit_Si7021.cpp
|
||||
@author Limor Fried (Adafruit Industries)
|
||||
@license BSD (see license.txt)
|
||||
|
||||
This is a library for the Adafruit Si7021 breakout board
|
||||
----> https://www.adafruit.com/products/3251
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
@section HISTORY
|
||||
|
||||
v1.0 - First release
|
||||
*/
|
||||
/**************************************************************************/
|
||||
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_Si7021.h>
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
Adafruit_Si7021::Adafruit_Si7021(void) {
|
||||
_i2caddr = SI7021_DEFAULT_ADDRESS;
|
||||
sernum_a = sernum_b = 0;
|
||||
}
|
||||
|
||||
bool Adafruit_Si7021::begin(void) {
|
||||
Wire.begin();
|
||||
|
||||
reset();
|
||||
if (readRegister8(SI7021_READRHT_REG_CMD) != 0x3A) return false;
|
||||
|
||||
readSerialNumber();
|
||||
|
||||
//Serial.println(sernum_a, HEX);
|
||||
//Serial.println(sernum_b, HEX);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
float Adafruit_Si7021::readHumidity(void) {
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((uint8_t)SI7021_MEASRH_NOHOLD_CMD);
|
||||
Wire.endTransmission(false);
|
||||
delay(25);
|
||||
|
||||
Wire.requestFrom(_i2caddr, 3);
|
||||
uint16_t hum = Wire.read();
|
||||
hum <<= 8;
|
||||
hum |= Wire.read();
|
||||
uint8_t chxsum = Wire.read();
|
||||
|
||||
float humidity = hum;
|
||||
humidity *= 125;
|
||||
humidity /= 65536;
|
||||
humidity -= 6;
|
||||
|
||||
return humidity;
|
||||
}
|
||||
|
||||
float Adafruit_Si7021::readTemperature(void) {
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((uint8_t)SI7021_MEASTEMP_NOHOLD_CMD);
|
||||
Wire.endTransmission(false);
|
||||
delay(25);
|
||||
|
||||
Wire.requestFrom(_i2caddr, 3);
|
||||
uint16_t temp = Wire.read();
|
||||
temp <<= 8;
|
||||
temp |= Wire.read();
|
||||
uint8_t chxsum = Wire.read();
|
||||
|
||||
float temperature = temp;
|
||||
temperature *= 175.72;
|
||||
temperature /= 65536;
|
||||
temperature -= 46.85;
|
||||
|
||||
return temperature;
|
||||
}
|
||||
|
||||
void Adafruit_Si7021::reset(void) {
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((uint8_t)SI7021_RESET_CMD);
|
||||
Wire.endTransmission();
|
||||
delay(50);
|
||||
}
|
||||
|
||||
void Adafruit_Si7021::readSerialNumber(void) {
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((uint8_t)(SI7021_ID1_CMD>>8));
|
||||
Wire.write((uint8_t)(SI7021_ID1_CMD&0xFF));
|
||||
Wire.endTransmission();
|
||||
|
||||
Wire.requestFrom(_i2caddr, 8);
|
||||
sernum_a = Wire.read();
|
||||
Wire.read();
|
||||
sernum_a <<= 8;
|
||||
sernum_a |= Wire.read();
|
||||
Wire.read();
|
||||
sernum_a <<= 8;
|
||||
sernum_a |= Wire.read();
|
||||
Wire.read();
|
||||
sernum_a <<= 8;
|
||||
sernum_a |= Wire.read();
|
||||
Wire.read();
|
||||
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((uint8_t)(SI7021_ID2_CMD>>8));
|
||||
Wire.write((uint8_t)(SI7021_ID2_CMD&0xFF));
|
||||
Wire.endTransmission();
|
||||
|
||||
Wire.requestFrom(_i2caddr, 8);
|
||||
sernum_b = Wire.read();
|
||||
Wire.read();
|
||||
sernum_b <<= 8;
|
||||
sernum_b |= Wire.read();
|
||||
Wire.read();
|
||||
sernum_b <<= 8;
|
||||
sernum_b |= Wire.read();
|
||||
Wire.read();
|
||||
sernum_b <<= 8;
|
||||
sernum_b |= Wire.read();
|
||||
Wire.read();
|
||||
}
|
||||
|
||||
/*******************************************************************/
|
||||
|
||||
void Adafruit_Si7021::writeRegister8(uint8_t reg, uint8_t value) {
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((uint8_t)reg);
|
||||
Wire.write((uint8_t)value);
|
||||
Wire.endTransmission();
|
||||
|
||||
//Serial.print("Wrote $"); Serial.print(reg, HEX); Serial.print(": 0x"); Serial.println(value, HEX);
|
||||
}
|
||||
|
||||
uint8_t Adafruit_Si7021::readRegister8(uint8_t reg) {
|
||||
uint8_t value;
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((uint8_t)reg);
|
||||
Wire.endTransmission(false);
|
||||
|
||||
Wire.requestFrom(_i2caddr, 1);
|
||||
value = Wire.read();
|
||||
|
||||
//Serial.print("Read $"); Serial.print(reg, HEX); Serial.print(": 0x"); Serial.println(value, HEX);
|
||||
return value;
|
||||
}
|
||||
|
||||
uint16_t Adafruit_Si7021::readRegister16(uint8_t reg) {
|
||||
uint16_t value;
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((uint8_t)reg);
|
||||
Wire.endTransmission();
|
||||
|
||||
Wire.requestFrom(_i2caddr, 2);
|
||||
value = Wire.read();
|
||||
value <<= 8;
|
||||
value |= Wire.read();
|
||||
|
||||
//Serial.print("Read $"); Serial.print(reg, HEX); Serial.print(": 0x"); Serial.println(value, HEX);
|
||||
return value;
|
||||
}
|
||||
74
lib/Adafruit_Si7021/Adafruit_Si7021.h
Normal file
74
lib/Adafruit_Si7021/Adafruit_Si7021.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@file Adafruit_Si7021.h
|
||||
@author Limor Fried (Adafruit Industries)
|
||||
@license BSD (see license.txt)
|
||||
|
||||
This is a library for the Adafruit Si7021 breakout board
|
||||
----> https://www.adafruit.com/products/3251
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
@section HISTORY
|
||||
|
||||
v1.0 - First release
|
||||
*/
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef __Si7021_H__
|
||||
#define __Si7021_H__
|
||||
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
|
||||
/*=========================================================================
|
||||
I2C ADDRESS/BITS
|
||||
-----------------------------------------------------------------------*/
|
||||
#define SI7021_DEFAULT_ADDRESS (0x40)
|
||||
|
||||
#define SI7021_MEASRH_HOLD_CMD 0xE5
|
||||
#define SI7021_MEASRH_NOHOLD_CMD 0xF5
|
||||
#define SI7021_MEASTEMP_HOLD_CMD 0xE3
|
||||
#define SI7021_MEASTEMP_NOHOLD_CMD 0xF3
|
||||
#define SI7021_READPREVTEMP_CMD 0xE0
|
||||
#define SI7021_RESET_CMD 0xFE
|
||||
#define SI7021_WRITERHT_REG_CMD 0xE6
|
||||
#define SI7021_READRHT_REG_CMD 0xE7
|
||||
#define SI7021_WRITEHEATER_REG_CMD 0x51
|
||||
#define SI7021_READHEATER_REG_CMD 0x11
|
||||
#define SI7021_ID1_CMD 0xFA0F
|
||||
#define SI7021_ID2_CMD 0xFCC9
|
||||
#define SI7021_FIRMVERS_CMD 0x84B8
|
||||
|
||||
|
||||
/*=========================================================================*/
|
||||
|
||||
class Adafruit_Si7021 {
|
||||
public:
|
||||
Adafruit_Si7021(void);
|
||||
bool begin(void);
|
||||
|
||||
float readTemperature(void);
|
||||
void reset(void);
|
||||
void readSerialNumber(void);
|
||||
float readHumidity(void);
|
||||
|
||||
uint32_t sernum_a, sernum_b;
|
||||
|
||||
private:
|
||||
|
||||
uint8_t readRegister8(uint8_t reg);
|
||||
uint16_t readRegister16(uint8_t reg);
|
||||
void writeRegister8(uint8_t reg, uint8_t value);
|
||||
|
||||
int8_t _i2caddr;
|
||||
};
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
#endif // __Si7021_H__
|
||||
23
lib/Adafruit_Si7021/README.md
Normal file
23
lib/Adafruit_Si7021/README.md
Normal file
@@ -0,0 +1,23 @@
|
||||
Adafruit Si7021
|
||||
===============
|
||||
|
||||
Driver for Adafruit's Si7021 humidity / temp sensor breakout
|
||||
|
||||
Designed specifically to work with the Si7021 breakout in the adafruit shop
|
||||
|
||||
* https://www.adafruit.com/products/3251
|
||||
|
||||
This chip uses I2C to communicate, 2 pins are required to interface
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
BSD license, all text above must be included in any redistribution
|
||||
|
||||
To download. click the ZIP button on the right, rename the uncompressed folder Adafruit_Si7021. Check that the Adafruit_Si7021 folder contains Adafruit_Si7021.cpp and Adafruit_Si7021.h
|
||||
|
||||
Place the Adafruit_Si7021 library folder your arduinosketchfolder/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE.
|
||||
25
lib/Adafruit_Si7021/examples/si7021.ino
Normal file
25
lib/Adafruit_Si7021/examples/si7021.ino
Normal file
@@ -0,0 +1,25 @@
|
||||
#include "Adafruit_Si7021.h"
|
||||
|
||||
Adafruit_Si7021 sensor = Adafruit_Si7021();
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
|
||||
// wait for serial port to open
|
||||
while (!Serial) {
|
||||
delay(10);
|
||||
}
|
||||
|
||||
Serial.println("Si7021 test!");
|
||||
|
||||
if (!sensor.begin()) {
|
||||
Serial.println("Did not find Si7021 sensor!");
|
||||
while (true);
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.print("Humidity: "); Serial.print(sensor.readHumidity(), 2);
|
||||
Serial.print("\tTemperature: "); Serial.println(sensor.readTemperature(), 2);
|
||||
delay(1000);
|
||||
}
|
||||
9
lib/Adafruit_Si7021/library.properties
Normal file
9
lib/Adafruit_Si7021/library.properties
Normal file
@@ -0,0 +1,9 @@
|
||||
name=Adafruit Si7021 Library
|
||||
version=1.0.1
|
||||
author=Adafruit
|
||||
maintainer=Adafruit <info@adafruit.com>
|
||||
sentence=Arduino library for Si7021 sensors.
|
||||
paragraph=Arduino library for Si7021 temperature + humidity sensors.
|
||||
category=Sensors
|
||||
url=https://github.com/adafruit/Adafruit_Si7021
|
||||
architectures=*
|
||||
Reference in New Issue
Block a user