資源簡介
dht11庫,C語言版,arduino 。。。。。。。。。。。。。。

代碼片段和文件信息
//
//????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;?i5;?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?< 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
評論
共有 條評論