初始化提交

This commit is contained in:
王立帮
2024-07-20 22:09:06 +08:00
commit c247dd07a6
6876 changed files with 2743096 additions and 0 deletions

View File

@@ -0,0 +1,151 @@
/*!
* @file Adafruit_HTU21DF.cpp
*
* @mainpage Adafruit HTU21DF Sensor
*
* @section intro_sec Introduction
*
* This is a library for the HTU21DF Humidity & Temp Sensor
*
* Designed specifically to work with the HTU21DF sensor from Adafruit
* ----> https://www.adafruit.com/products/1899
*
* These displays use 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!
*
* @section author Author
*
* Written by Limor Fried/Ladyada for Adafruit Industries.
*
* @section license License
*
* BSD license, all text above must be included in any redistribution
*/
#include "Adafruit_HTU21DF.h"
#if defined(__AVR__)
#include <util/delay.h>
#endif
/**
* Constructor for the HTU21DF driver.
*/
Adafruit_HTU21DF::Adafruit_HTU21DF() {
/* Assign default values to internal tracking variables. */
_last_humidity = 0.0f;
_last_temp = 0.0f;
}
/**
* Initialises the I2C transport, and configures the IC for normal operation.
*
* @return true (1) if the device was successfully initialised, otherwise
* false (0).
*/
boolean Adafruit_HTU21DF::begin(void) {
Wire.begin();
reset();
Wire.beginTransmission(HTU21DF_I2CADDR);
Wire.write(HTU21DF_READREG);
Wire.endTransmission();
Wire.requestFrom(HTU21DF_I2CADDR, 1);
return (Wire.read() == 0x2); // after reset should be 0x2
}
/**
* Sends a 'reset' request to the HTU21DF, followed by a 15ms delay.
*/
void Adafruit_HTU21DF::reset(void) {
Wire.beginTransmission(HTU21DF_I2CADDR);
Wire.write(HTU21DF_RESET);
Wire.endTransmission();
delay(15);
}
/**
* Performs a single temperature conversion in degrees Celsius.
*
* @return a single-precision (32-bit) float value indicating the measured
* temperature in degrees Celsius.
*/
float Adafruit_HTU21DF::readTemperature(void) {
// OK lets ready!
Wire.beginTransmission(HTU21DF_I2CADDR);
Wire.write(HTU21DF_READTEMP);
Wire.endTransmission();
delay(50); // add delay between request and actual read!
uint8_t count = Wire.requestFrom(HTU21DF_I2CADDR, 3);
/* Make sure we got 3 bytes back. */
if (count != 3) {
return 0.0f;
}
/* Read 16 bits of data, dropping the last two status bits. */
uint16_t t = Wire.read();
t <<= 8;
t |= Wire.read() & 0b11111100;
uint8_t crc = Wire.read();
(void)crc;
float temp = t;
temp *= 175.72f;
temp /= 65536.0f;
temp -= 46.85f;
/* Track the value internally in case we need to access it later. */
_last_temp = temp;
return temp;
}
/**
* Performs a single relative humidity conversion.
*
* @return A single-precision (32-bit) float value indicating the relative
* humidity in percent (0..100.0%).
*/
float Adafruit_HTU21DF::readHumidity(void) {
/* Prepare the I2C request. */
Wire.beginTransmission(HTU21DF_I2CADDR);
Wire.write(HTU21DF_READHUM);
Wire.endTransmission();
/* Wait a bit for the conversion to complete. */
delay(50);
/* Read the conversion results. */
uint8_t count = Wire.requestFrom(HTU21DF_I2CADDR, 3);
/* Make sure we got 3 bytes back. */
if (count != 3) {
return 0.0f;
}
/* Read 16 bits of data, dropping the last two status bits. */
uint16_t h = Wire.read();
h <<= 8;
h |= Wire.read() & 0b11111100;
uint8_t crc = Wire.read();
(void)crc;
float hum = h;
hum *= 125.0f;
hum /= 65536.0f;
hum -= 6.0f;
/* Track the value internally in case we need to access it later. */
_last_humidity = hum;
return hum;
}

View File

@@ -0,0 +1,50 @@
/*!
* @file Adafruit_HTU21DF.h
*/
#ifndef _ADAFRUIT_HTU21DF_H
#define _ADAFRUIT_HTU21DF_H
#if (ARDUINO >= 100)
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include "Wire.h"
/** Default I2C address for the HTU21D. */
#define HTU21DF_I2CADDR (0x40)
/** Read temperature register. */
#define HTU21DF_READTEMP (0xE3)
/** Read humidity register. */
#define HTU21DF_READHUM (0xE5)
/** Write register command. */
#define HTU21DF_WRITEREG (0xE6)
/** Read register command. */
#define HTU21DF_READREG (0xE7)
/** Reset command. */
#define HTU21DF_RESET (0xFE)
/**
* Driver for the Adafruit HTU21DF breakout board.
*/
class Adafruit_HTU21DF {
public:
Adafruit_HTU21DF();
boolean begin(void);
float readTemperature(void);
float readHumidity(void);
void reset(void);
private:
boolean readData(void);
float _last_humidity, _last_temp;
};
#endif /* _ADAFRUIT_HTU21DF_H */

View File

@@ -0,0 +1,36 @@
# Adafruit HTU21D-F Humidity/Temp Sensor for Arduino [![Build Status](https://github.com/adafruit/Adafruit_HTU21DF_Library/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_HTU21DF_Library/actions)[![Documentation](https://github.com/adafruit/ci-arduino/blob/master/assets/doxygen_badge.svg)](http://adafruit.github.io/Adafruit_HTU21DF_Library/html/index.html)
![sensors_1899-00](https://user-images.githubusercontent.com/181073/46350691-b53d1880-c655-11e8-8415-452aec129b44.jpg)
This is a library for the HTU21D-F Humidity + Temperature sensor.
Designed specifically to work with the HTU21D-F in the Adafruit shop:
- https://www.adafruit.com/products/1899
These boards use **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!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution.
## Installing this Library
Check out the links above for our tutorials and wiring diagrams. Use the Arduino library manager to install
We also have a great tutorial on Arduino library installation at:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
## Learning Guide and API Documentation
### Learning Guide
For a practical guide on how to use this breakout, see our comprehensive [Adafruit HTU21D-F Learning Guide](https://learn.adafruit.com/adafruit-htu21d-f-temperature-humidity-sensor/overview).
### API Documentation
> **NOTE:** This documentation is automatically generated based on the doxygen comments in the code.
For specific programming issues, see the [API Documentation](http://adafruit.github.io/Adafruit_HTU21DF_Library/html/class_adafruit___h_t_u21_d_f.html) describing the `Adafruit_HTU21DF` class available in this library.

View File

@@ -0,0 +1,38 @@
/***************************************************
This is an example for the HTU21D-F Humidity & Temp Sensor
Designed specifically to work with the HTU21D-F sensor from Adafruit
----> https://www.adafruit.com/products/1899
These displays use I2C to communicate, 2 pins are required to
interface
****************************************************/
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
void setup() {
Serial.begin(9600);
Serial.println("HTU21D-F test");
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
void loop() {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
Serial.print("Temp: "); Serial.print(temp); Serial.print(" C");
Serial.print("\t\t");
Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" \%");
delay(500);
}

View File

@@ -0,0 +1,9 @@
name=Adafruit HTU21DF Library
version=1.0.5
author=Adafruit
maintainer=Adafruit <info@adafruit.com>
sentence=Arduino library for the HTU21D-F sensors in the Adafruit shop
paragraph=Arduino library for the HTU21D-F sensors in the Adafruit shop
category=Sensors
url=https://github.com/adafruit/Adafruit_HTU21DF_Library
architectures=*