代码如下:

#include <inttypes.h>
/*
* LED
*/
unsigned int LED = ;
/*
* DHT22配置程序
*/
unsigned int DHT_PIN = ; #define DHT_OK 1
#define DHT_ERR_CHECK 0
#define DHT_ERR_TIMEOUT -1
float humidity;
float temperature;
unsigned char DHT_read()
{
// BUFFER TO RECEIVE
unsigned char bits[] = {,,,,};
unsigned char cnt = ;
unsigned char idx = ;
unsigned char sum; // REQUEST SAMPLE
pinMode(DHT_PIN, OUTPUT);
digitalWrite(DHT_PIN, LOW);
delay();
digitalWrite(DHT_PIN, HIGH);
delayMicroseconds();
pinMode(DHT_PIN, INPUT); // ACKNOWLEDGE or TIMEOUT
unsigned int count = ;
while(digitalRead(DHT_PIN) == LOW)
if (count-- == ) return DHT_ERR_TIMEOUT; count = ;
while(digitalRead(DHT_PIN) == HIGH)
if (count-- == ) return DHT_ERR_TIMEOUT; // READ OUTPUT - 40 BITS => 5 BYTES or TIMEOUT
for (int i=; i<; i++)
{
count = ;
while(digitalRead(DHT_PIN) == LOW)
if (count-- == ) return DHT_ERR_TIMEOUT; unsigned long t = micros(); count = ;
while(digitalRead(DHT_PIN) == HIGH)
if (count-- == ) return DHT_ERR_TIMEOUT; if ((micros() - t) > ) bits[idx] |= ( << cnt);
if (cnt == ) // next byte?
{
cnt = ; // restart at MSB
idx++; // next byte!
}
else cnt--;
} sum = bits[]+bits[]+bits[]+bits[];
if(bits[] != sum) return DHT_ERR_CHECK; humidity = (float)((bits[] << )+bits[])/;
temperature = (float)((bits[] << )+bits[])/; return DHT_OK;
} void setup() {
pinMode(,OUTPUT);//指示灯
pinMode(DHT_PIN,INPUT);
digitalWrite(DHT_PIN, HIGH);
}
void loop() {
DHT_read();
Serial.print("temperature:");
Serial.println(temperature);
Serial.println("============end===============");
delay();
digitalWrite(LED,HIGH);
delay(); //Delay
digitalWrite(LED,LOW);
delay(); //Delay
}

DHT22数据手册:http://www.waveshare.net/w/upload/b/be/AM2302_V1.1.pdf

Arduino下读取DHT22温湿度(不使用第三方库)的更多相关文章

  1. Arduino Leonardo读取DHT22温湿度传感器

    首先在该地址下载库:https://codeload.github.com/nethoncho/Arduino-DHT22/zip/master 使用以下代码测试: /**************** ...

  2. Ubuntu下安装pip3和Python的第三方库

    一.Ubuntu原有环境说明 无论是在服务器上面还是在我们自己的电脑上面,当我们成功安装了Ubuntu系统之后,系统一般情况下会自带Python2.x和Python3.x环境.比如我在自己的阿里云服务 ...

  3. 各种方法配置 Visual Studio 第三方库

    配置第三方库如Opencv,或者软件开发商提供的SDK时,一般需要配置三个文件: 头文件(.h),引入库(.lib)文件(也称“导入库文件”),动态链接库(.dll)文件 下面以度申科技的相机sdk配 ...

  4. Laravel composer自定义命令空间,方便引用第三方库

    第一步:自定义目录 在app文件夹下新建Library目录,做为第三方库的目录 第二步: 修改composer.json文件 autoload节点下的psr-4自定义命名空间 规则: key: 命名空 ...

  5. Arduino IDE 添加DHT11传感器第三方库的方法

    由于Arduino本身没有DHT 11温湿度传感器的的头文件,单有第三方的库可以给我门使用.方法如下: Step 1:如果你已经下载了最新版的Arduino IDE就可以使用其自带的库管理器和版型管理 ...

  6. 进阶之路(基础篇) - 012 Arduino IDE 添加DHT11传感器第三方库的方法

    由于Arduino本身没有DHT 11温湿度传感器的的头文件,单有第三方的库可以给我门使用.方法如下: Step 1:下载地址:https://pan.baidu.com/s/1qYfdBJ2#lis ...

  7. Arduino下LCD1602综合探究(上)——1602的两种驱动方式,如何使LCD的控制编程变得更简单

    一.前言: LCD ( Liquid Crystal Display 的简称)液晶显示器,已经逐渐替代CRT成为主流的显示设备之一,因此也成为了单片机发烧友绕不过的话题之一:而LCD1602更是很多单 ...

  8. windows下使用pip安装python的第三方lxml库

    lxml是Python语言里和XML以及HTML工作的功能最丰富和最容易使用的库.lxml库的安装和python其他第三方库的安装方法是一样的,只是可能由于一些细节上的失误导致安装失败. 工具 Pyt ...

  9. Python:Pycharm下无法导入安装好的第三方模块?

    Pycharm下无法导入安装好的第三方模块requests? 在cmd下使用pip安装好requests模块后,可以使用import requests,但在Pycharm IDE下无法导入,出现如下错 ...

随机推荐

  1. 函数式编程编程即高阶函数+monad

    高阶函数负责数据的单次映射: monad负责数据处理流的串联,并使得串联函数具有相同的形式. 同时moand负责基础类型和高阶类型间的转换.

  2. 将替代ListView的RecyclerView 的使用(一)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/by317966834/article/details/36205923 RecyclerView 是 ...

  3. BZOJ4810:[YNOI2017]由乃的玉米田(莫队,bitset)

    Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一 ...

  4. 关于checkbox自动选中

    checkbox是比较常用的,无论是权限管理还是博客的文章的标签类型的勾选,或者是上下级部门及其公司,都会用的到的. 今天主要讲的是checkbox自动根据值选中. 可参考我之前的文章:checkbo ...

  5. python+requests实现接口测试 - get与post请求使用(转载)

    转自:http://www.cnblogs.com/nizhihong/p/6567928.html 简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Lic ...

  6. mvc 在view视图中直接输出rdlc报表文件(Excel、PDF、Word)

    给一段代码做参考 public ActionResult RdlcReport(string code) { LocalReport localReport = new LocalReport(); ...

  7. 感言&3

  8. 番外篇:因为一个固态导致的——系统重装与JAVA软件环境下载安装配置

    第一步:拆机改装 最近想换个固态硬盘提提速度,就买了个,然后拧下后盖螺丝,将键盘盖拿下,中间有两个根线连着把扣打开就可以了,将新的固态硬盘装到原本的机械硬盘的地方,又买了个光驱托盘改装位将光驱位装上了 ...

  9. linux 升级 5.0.2内核

    1.下载 wet https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.2.tar.xz -o /usr/src/ cd /usr/src ta ...

  10. effective c++ 笔记 (35-40)

    //---------------------------15/04/24---------------------------- //#35   考虑virtual函数以外的其他选择 { /* 1: ...