硬件:

树莓派 2.0

DHT模块  接树莓派5V GND GPIO1

功能:读取传感器数据并打印出来

  1. //
  2. //mydht11.c
  3. //
  4. #include <wiringPi.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. typedef unsigned char uint8;
  8. typedef unsigned int  uint16;
  9. typedef unsigned long uint32;
  10. #define HIGH_TIME 32
  11. int pinNumber =1;  //use gpio1 to read data
  12. uint32 databuf;
  13. uint8 readSensorData(void)
  14. {
  15. uint8 crc;
  16. uint8 i;
  17. pinMode(pinNumber,OUTPUT); // set mode to output
  18. digitalWrite(pinNumber, 0); // output a high level
  19. delay(25);
  20. digitalWrite(pinNumber, 1); // output a low level
  21. pinMode(pinNumber, INPUT); // set mode to input
  22. pullUpDnControl(pinNumber,PUD_UP);
  23. delayMicroseconds(27);
  24. if(digitalRead(pinNumber)==0) //SENSOR ANS
  25. {
  26. while(!digitalRead(pinNumber)); //wait to high
  27. for(i=0;i<32;i++)
  28. {
  29. while(digitalRead(pinNumber)); //data clock start
  30. while(!digitalRead(pinNumber)); //data start
  31. delayMicroseconds(HIGH_TIME);
  32. databuf*=2;
  33. if(digitalRead(pinNumber)==1) //1
  34. {
  35. databuf++;
  36. }
  37. }
  38. for(i=0;i<8;i++)
  39. {
  40. while(digitalRead(pinNumber)); //data clock start
  41. while(!digitalRead(pinNumber)); //data start
  42. delayMicroseconds(HIGH_TIME);
  43. crc*=2;
  44. if(digitalRead(pinNumber)==1) //1
  45. {
  46. crc++;
  47. }
  48. }
  49. return 1;
  50. }
  51. else
  52. {
  53. return 0;
  54. }
  55. }
  56. int main (void)
  57. {
  58. printf("Use GPIO1 to read data!\n");
  59. if (-1 == wiringPiSetup()) {
  60. printf("Setup wiringPi failed!");
  61. return 1;
  62. }
  63. pinMode(pinNumber, OUTPUT); // set mode to output
  64. digitalWrite(pinNumber, 1); // output a high level
  65. printf("Enter OS-------\n");
  66. while(1) {
  67. pinMode(pinNumber,OUTPUT); // set mode to output
  68. digitalWrite(pinNumber, 1); // output a high level
  69. delay(3000);
  70. if(readSensorData())
  71. {
  72. printf("Congratulations ! Sensor data read ok!\n");
  73. printf("RH:%d.%d\n",(databuf>>24)&0xff,(databuf>>16)&0xff);
  74. printf("TMP:%d.%d\n",(databuf>>8)&0xff,databuf&0xff);
  75. databuf=0;
  76. }
  77. else
  78. {
  79. printf("Sorry! Sensor dosent ans!\n");
  80. databuf=0;
  81. }
  82. }
  83. return 0;
  84. }

树莓派使用DHT11温湿度传感器(C语言)的更多相关文章

  1. 树莓派使用DHT11温湿度传感器

    一.相关介绍 DHT11介绍: DHT11是一款比较便宜的温湿度传感器模块.读取数据只需要占用一个IO口.能够同时测量温度和相对湿度. DHT11的数据手册可以看这里:http://wenku.bai ...

  2. 树莓派使用DHT11温湿度传感器(C语言程序)

    pi4j是基于wiringpi开发的通过java来控制树莓派GPIO口的库文件.在java程序中引入相关类就可以使用已经封装好的方法控制树莓派GPIO口. pi4j官网:http://pi4j.com ...

  3. 树莓派连接DHT11温湿度传感器(python)

    介绍 DHT11作为一个廉价配件,同时包含了温度.湿度传感器,而且,编码使用也非常简单. 本文介绍如果在树莓派中使用 DHT11,代码是Python.如果有任何疑问,欢迎在下面留言. 接线 VCC接5 ...

  4. 在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

  5. Arduino和C51开发DHT11温湿度传感器

    技术:51单片机.Arduino.DHT11.温湿度传感器.传感器   概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产 ...

  6. DHT11温湿度传感器编程思路以及代码的实现(转载)

    源自:https://blog.csdn.net/qq_34952376/article/details/81193938 在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推 ...

  7. STC15系列通用-STC15F2K60S2/STCW4K32S4读取DHT11温湿度传感器数据串口输出代码实例工程免费下载

    //为了方便大家调试,另附程序工程共大家下载,下载地址:https://www.90pan.com/b1908750 ​ //************************** //程序说明:stc ...

  8. DHT11温湿度传感器模块使用方法和驱动代码实现

    DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...

  9. 玩转X-CTR100 l STM32F4 l DHT11温湿度传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] DHT11数字温湿度传感器是一款含有已校准数字信号输 ...

随机推荐

  1. linux上安装python3同时保留python2

    linux上安装python3同时保留python2?这个就要用到上篇说到的path变量了. 具体介绍及操作 这里我下载python3.6版本来进行介绍 django默认数据库为sqlite3,所以安 ...

  2. Servlet 环境设置

    开发环境是您可以开发.测试.运行 Servlet 的地方. 就像任何其他的 Java 程序,您需要通过使用 Java 编译器 javac 编译 Servlet,在编译 Servlet 应用程序后,将它 ...

  3. Java 学习笔记之读取jdbc.propertyes配置参数

    package test; import java.io.IOException; import java.io.InputStream; import java.util.Properties; p ...

  4. DHCP动态主机配置协议

    1.DHCP简述 某组织一旦获得了一个地址,它就可以为本组织内的主机与路由器接口逐个分配IP地址.系统管理通常可以手工配置路由器中的IP地址(静态分配).但这项任务目前通常更多是使用动态主机配置协议( ...

  5. iPhone SDK中多线程的使用方法以及注意事项

    多线程iphonethreadapplication编程嵌入式 然现在大部分PC应用程序都支持多线程/多任务的开发方式,但是在iPhone上,Apple并不推荐使用多线程的编程方式.但是多线程编程毕竟 ...

  6. 1674 区间的价值 V2(分治)

    1674 区间的价值 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 lyk拥有一个区间. 它规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有 ...

  7. Java多线程的两种实现方式

    Java总共有两种方式实现多线程 方式1:通过继承Thread类的方式 package com.day04; /** * 通过继承Thread类并复写run方法来是实现多线程 * * @author ...

  8. junit5荟萃知识点(一):junit5的组成及安装

    1.什么是junit5? 和之前的junit版本不一样,junit5是由三个模块组成. JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage ...

  9. Bootstrap支持的JavaScript插件

    1.导入JavaScript插件 Bootstrap除了包含丰富的Web组件之外,如前面介绍的下拉菜单.按钮组.导航.分页等.他还包括一些JavaScript的插件. Bootstrap的JavaSc ...

  10. 动态加载和卸载 DLL

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...