资源简介
dht11库,C语言版,arduino 。。。。。。。。。。。。。。
![](http://www.nz998.com/pic/32115.jpg)
代码片段和文件信息
//
// FILE: dht22.cpp
// VERSION: 0.1.00
// PURPOSE: DHT22 Temperature & Humidity Sensor library for Arduino
//
// DATASHEET:
//
// HISTORY:
// 0.1.0 by Rob Tillaart (01/04/2011)
// inspired by DHT11 library
//
#include “dht.h“
#define TIMEOUT 10000
/////////////////////////////////////////////////////
//
// PUBLIC
//
// return values:
// 0 : OK
// -1 : checksum error
// -2 : timeout
int dht::read11(uint8_t pin)
{
// READ VALUES
int rv = read(pin);
if (rv != 0) return rv;
// CONVERT AND STORE
humidity = bits[0]; // bit[1] == 0;
temperature = bits[2]; // bits[3] == 0;
// TEST CHECKSUM
uint8_t sum = bits[0] + bits[2]; // bits[1] && bits[3] both 0
if (bits[4] != sum) return -1;
return 0;
}
// return values:
// 0 : OK
// -1 : checksum error
// -2 : timeout
int dht::read22(uint8_t pin)
{
// READ VALUES
int rv = read(pin);
if (rv != 0) return rv;
// CONVERT AND STORE
humidity = word(bits[0] bits[1]) * 0.1;
int sign = 1;
if (bits[2] & 0x80) // negative temperature
{
bits[2] = bits[2] & 0x7F;
sign = -1;
}
temperature = sign * word(bits[2] bits[3]) * 0.1;
// TEST CHECKSUM
uint8_t sum = bits[0] + bits[1] + bits[2] + bits[3];
if (bits[4] != sum) return -1;
return 0;
}
/////////////////////////////////////////////////////
//
// PRIVATE
//
// return values:
// 0 : OK
// -2 : timeout
int dht::read(uint8_t pin)
{
// INIT BUFFERVAR TO RECEIVE DATA
uint8_t cnt = 7;
uint8_t idx = 0;
// EMPTY BUFFER
for (int i=0; i< 5; i++) bits[i] = 0;
// REQUEST SAMPLE
pinMode(pin OUTPUT);
digitalWrite(pin LOW);
delay(20);
digitalWrite(pin HIGH);
delayMicroseconds(40);
pinMode(pin INPUT);
// GET ACKNOWLEDGE or TIMEOUT
unsigned int loopCnt = TIMEOUT;
while(digitalRead(pin) == LOW)
if (loopCnt-- == 0) return -2;
loopCnt = TIMEOUT;
while(digitalRead(pin) == HIGH)
if (loopCnt-- == 0) return -2;
// READ THE OUTPUT - 40 BITS => 5 BYTES
for (int i=0; i<40; i++)
{
loopCnt = TIMEOUT;
while(digitalRead(pin) == LOW)
if (loopCnt-- == 0) return -2;
unsigned long t = micros();
loopCnt = TIMEOUT;
while(digitalRead(pin) == HIGH)
if (loopCnt-- == 0) return -2;
if ((micros() - t) > 40) bits[idx] |= (1 << cnt);
if (cnt == 0) // next byte?
{
cnt = 7;
idx++;
}
else cnt--;
}
return 0;
}
//
// END OF FILE
//
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-11-25 14:00 arduino-with-temperature-humidity-DHT11_DHT22-master\
文件 1511 2017-11-25 14:00 arduino-with-temperature-humidity-DHT11_DHT22-master\DHT.zip
文件 87 2017-11-25 14:00 arduino-with-temperature-humidity-DHT11_DHT22-master\README.md
文件 2467 2017-11-25 14:00 arduino-with-temperature-humidity-DHT11_DHT22-master\dht.cpp
文件 606 2017-11-25 14:00 arduino-with-temperature-humidity-DHT11_DHT22-master\dht.h
文件 349 2017-11-25 14:00 arduino-with-temperature-humidity-DHT11_DHT22-master\tempDHT11.ino
- 上一篇:随机生成10000数字,进行快速排序
- 下一篇:MUSIC算法c++实现
相关资源
- 基于Arduino的MLX90614温度采集程序
- Arduino 敲琴MIDI电子琴 程序报告.docx
- 基于arduino的红绿灯程序,包附原理图
- arduino I2C设备扫描并串口返回地址(
- IoT-ESP32_DHT11温湿度_2017P40
- Arduino程序(.ino)
- Arduino-LM35-LCD1602数字温度计实验.doc
- DHT11驱动程序基于STM32
- arduino 代码
- Arduino编程从零开始.pdf
- c++操作ch340 发送串口给arduino
- Arduino+Proteus仿真 100个案例资源包.ra
- DHT11参考代码C语言和汇编两种 以及
- DHT11中文数据手册带程序
- 基于单片机DHT11初始化c语言
- dht.h库文件 温湿度传感器
- Arduino小车的程序c++/c可以实现红外对
- Arduino开源智能家居DIY,网关教程(
- OneNET平台EDP协议C语言SDK
- OK6410的dht11温度传感器驱动
- arduino GCode_Interpreterdc G代码解释器 也
- ADXL345 加速度计 arduino代码
- linux内核驱动之DHT11
- arduino循迹小车
- 《爱上Arduino(第3版)》pdf 高清版
- arduino library for proteus
- arduino读取温湿度传感器程序
- Arduino从基础到实践
- ARDUINO一试就上手.第2版
- DHT11温湿度传感器51单片机在LCD1602.d
评论
共有 条评论