Pillar 10 лет назад
Сommit
0c40ab87f6
6 измененных файлов с 378 добавлено и 0 удалено
  1. 17 0
      .gitattributes
  2. 43 0
      .gitignore
  3. 114 0
      HDC1000.cpp
  4. 89 0
      HDC1000.h
  5. 65 0
      README.md
  6. 50 0
      examples/readTempHumi/readTempHumi.ino

+ 17 - 0
.gitattributes

@@ -0,0 +1,17 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Custom for Visual Studio
+*.cs     diff=csharp
+
+# Standard to msysgit
+*.doc	 diff=astextplain
+*.DOC	 diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot  diff=astextplain
+*.DOT  diff=astextplain
+*.pdf  diff=astextplain
+*.PDF	 diff=astextplain
+*.rtf	 diff=astextplain
+*.RTF	 diff=astextplain

+ 43 - 0
.gitignore

@@ -0,0 +1,43 @@
+# Windows image file caches
+Thumbs.db
+ehthumbs.db
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# =========================
+# Operating System Files
+# =========================
+
+# OSX
+# =========================
+
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Thumbnails
+._*
+
+# Files that might appear on external disk
+.Spotlight-V100
+.Trashes
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk

+ 114 - 0
HDC1000.cpp

@@ -0,0 +1,114 @@
+/*
+ * HDC1000.h
+ * A library for HDC1000 1.0
+ *
+ * Copyright (c) 2015 seeed technology inc.
+ * Website    : www.seeed.cc
+ * Author     : Pillar Zuo (baozhu.zuo@seeed.cc)
+ * Create Time: April 2015
+ * Change Log :
+ *
+ * The MIT License (MIT)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "HDC1000.h"
+#include "Wire.h"
+#include <util/delay.h>
+
+HDC1000::HDC1000(uint8_t address, int drdyn_pin){
+	_addr = address;
+    _drdyn_pin = drdyn_pin;
+
+	if(_drdyn_pin > -1) pinMode(_drdyn_pin, INPUT);
+}
+
+uint8_t HDC1000::begin(uint8_t mode, uint8_t resolution, uint8_t heater){
+	Wire.begin();
+
+	uint8_t config = mode|resolution|heater;
+
+	setConfig(config);
+
+	return config;
+}
+
+uint16_t HDC1000::readConfig(void){
+	setReadRegister(HDC1000_CONFIG);
+
+	return read16();
+}
+
+void HDC1000::setReadRegister(uint8_t reg){
+	Wire.beginTransmission(_addr);
+	Wire.write(reg);
+	Wire.endTransmission();
+
+	if(_drdyn_pin > -1) while(digitalRead(_drdyn_pin)==HIGH); //using DRDYn pin
+	else delay(20);											  //using 20ms delay instead
+}
+
+void HDC1000::setConfig(uint8_t config){
+	Wire.beginTransmission(_addr);
+	Wire.write(HDC1000_CONFIG); 							//accessing the configuration register
+	Wire.write(config); 									//sending the config bits (MSB)
+	Wire.write(0x00); 										//the last 8 bits must be zeroes
+	Wire.endTransmission();
+}
+
+uint16_t HDC1000::read16(){
+	uint8_t bytes = 2;
+	uint16_t dest;
+
+	Wire.requestFrom(_addr, bytes);
+	if(Wire.available()>=bytes){
+		dest = Wire.read()<<8;
+		dest += Wire.read();
+	}
+	return dest;
+}
+
+uint16_t HDC1000::getRawTemp(void){
+	setReadRegister(HDC1000_TEMP);
+
+	return read16();
+}
+
+uint16_t HDC1000::getRawHumi(void){
+	setReadRegister(HDC1000_HUMI);
+
+	return read16();
+}
+
+double HDC1000::getTemp(void){
+	double temp = getRawTemp();
+
+	return temp/65536.0*165.0-40.0;
+}
+
+double HDC1000::getHumi(void){
+	double humi = getRawHumi();
+
+	return humi/65536.0*100.0;
+}
+
+boolean HDC1000::battery(){
+	return(bitRead(readConfig(), 11));
+}

+ 89 - 0
HDC1000.h

@@ -0,0 +1,89 @@
+/*
+ * HDC1000.h
+ * A library for HDC1000 1.0
+ *
+ * Copyright (c) 2015 seeed technology inc.
+ * Website    : www.seeed.cc
+ * Author     : Pillar Zuo (baozhu.zuo@seeed.cc)
+ * Create Time: April 2015
+ * Change Log :
+ *
+ * The MIT License (MIT)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef HDC1000_H
+#define HDC1000_H
+
+#include <inttypes.h>
+
+#if (ARDUINO >= 100)
+ #include "Arduino.h"
+#else
+ #include "WProgram.h"
+#endif
+
+#define HDC1000_ADDR				0x41
+
+#define HDC1000_TEMP				0x00
+#define HDC1000_HUMI				0x01
+#define	HDC1000_CONFIG				0x02
+
+#define HDC1000_SERID_1				0xFB
+#define HDC1000_SERID_2				0xFC
+#define HDC1000_SERID_3				0xFD
+#define HDC1000_MFID				0xFE
+#define HDC1000_DEVID				0xFF
+
+#define HDC1000_RST					0x80
+#define	HDC1000_HEAT_ON				0x20
+#define	HDC1000_HEAT_OFF			0x00
+#define	HDC1000_BOTH_TEMP_HUMI		0x10
+#define	HDC1000_SINGLE_MEASUR		0x00
+#define	HDC1000_TEMP_HUMI_14BIT		0x00
+#define	HDC1000_TEMP_11BIT			0x40
+#define HDC1000_HUMI_11BIT			0x01
+#define	HDC1000_HUMI_8BIT			0x02
+
+class HDC1000{
+	public: 
+		HDC1000(uint8_t address = HDC1000_ADDR, int drdyn_pin = -1);
+
+		uint8_t begin(uint8_t mode = HDC1000_BOTH_TEMP_HUMI, uint8_t resolution = HDC1000_TEMP_HUMI_14BIT, uint8_t heater = HDC1000_HEAT_ON);
+
+		boolean battery();
+
+		uint16_t getRawTemp(void);
+		uint16_t getRawHumi(void);
+
+		double getTemp(void);
+		double getHumi(void);
+
+		uint16_t readConfig(void);
+
+	private:
+  		int _drdyn_pin;
+        uint8_t _addr;
+  		uint16_t read16();
+  		void setReadRegister(uint8_t reg);
+  		void setConfig(uint8_t config);
+};
+
+#endif

+ 65 - 0
README.md

@@ -0,0 +1,65 @@
+HDC1000 Arduino Library
+=======================
+
+### Setup your sensor:
+First, declare it:
+
+`HDC1000 mySensor;`
+
+Default address is 0x40 and the DRDYn pin is disabled. You can change your address by declaring your sensor like this:
+
+`HDC1000 mySensor(addr, DRDYn_pin);`
+
+Then, initialize it:
+
+`mySensor.begin();`
+
+Default options are set to enable both temperature and humidity readings, at 14-bit resolution, with the integrated heater on. You can change them by initializing your sensor like this:
+
+`mySensor.begin(mode, resolution, heater);`
+
+"mode" can be _HDC1000_SINGLE_MEASUR_, _HDC1000_BOTH_TEMP_HUMI_ or _HDC1000_RST_.
+
+"resolution" can be _HDC1000_TEMP_HUMI_14BIT_, _HDC1000_TEMP_11BIT_, _HDC1000_HUMI_11BIT_, _HDC1000_HUMI_8BIT_.
+
+"heater" can be _HDC1000_HEAT_ON_ or _HDC1000_HEAT_OFF_.
+
+### Read some values
+You can read temperature and humidity by using the following commands:
+
+`double temperature = mySensor.getTemp();` in Celsius degrees.
+
+`double humidity = mySensor.getHumi();` in %
+
+You can also access raw values from the sensor:
+
+`uint16_t temp = mySensor.getRawTemp();`
+
+`uint16_t humi = mySensor.getRawHumi();`
+
+### Check your battery
+
+The following code returns '1' if the battery voltage is <2.8V, '0' otherwise.
+
+`boolean isDead = mySensor.battery();`
+
+### Read the internal registers' configuration:
+
+This returns the 16-bit value of the internal configuration register (0x02): the last 8 bits are always zero and leading zeros are not displayed.
+
+`uint16_t config = mySensor.readConfig();`
+
+Happy making!
+
+This software is written by Pillar Zuo for seeed studio
+and is licensed under The MIT License. Check License.txt for more information.
+
+Contributing to this software is warmly welcomed. You can do this basically by
+forking, committing modifications and then pulling requests (follow the links above
+for operating guide). Adding change log and your contact into file header is encouraged.
+Thanks for your contribution.
+
+Seeed Studio is an open hardware facilitation company based in Shenzhen, China. 
+Benefiting from local manufacture power and convenient global logistic system, 
+we integrate resources to serve new era of innovation. Seeed also works with 
+global distributors and partners to push open hardware movement.

+ 50 - 0
examples/readTempHumi/readTempHumi.ino

@@ -0,0 +1,50 @@
+/*
+ * HDC1000.h
+ * A library for HDC1000 1.0
+ *
+ * Copyright (c) 2015 seeed technology inc.
+ * Website    : www.seeed.cc
+ * Author     : Pillar Zuo (baozhu.zuo@seeed.cc)
+ * Create Time: April 2015
+ * Change Log :
+ *
+ * The MIT License (MIT)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include <Wire.h>
+#include <HDC1000.h>
+ 
+HDC1000 mySensor;
+//HDC1000 mySensor(0x41, 2) <-- DRDYn enabled and connected to Arduino pin 2 (allows for faster measurements).
+ 
+void setup(){
+	Serial.begin(9600);
+	mySensor.begin();
+}
+ 
+void loop(){
+	Serial.print("Temperature: ");
+	Serial.print(mySensor.getTemp()); 
+	Serial.print("C, Humidity: ");     
+	Serial.print(mySensor.getHumi());
+	Serial.println("%");
+	delay(1000);
+}