硬件:
树莓派 2.0
DHT模块 接树莓派5V GND GPIO1
功能:读取传感器数据并打印出来

- #include <wiringPi.h>
- #include <stdio.h>
- #include <stdlib.h>
-
- typedef unsigned char uint8;
- typedef unsigned int uint16;
- typedef unsigned long uint32;
-
- #define HIGH_TIME 32
-
- int pinNumber =1;
- uint32 databuf;
-
-
-
- uint8 readSensorData(void)
- {
- uint8 crc;
- uint8 i;
-
- pinMode(pinNumber,OUTPUT);
- digitalWrite(pinNumber, 0);
- delay(25);
- digitalWrite(pinNumber, 1);
- pinMode(pinNumber, INPUT);
- pullUpDnControl(pinNumber,PUD_UP);
-
- delayMicroseconds(27);
- if(digitalRead(pinNumber)==0)
- {
- while(!digitalRead(pinNumber));
-
- for(i=0;i<32;i++)
- {
- while(digitalRead(pinNumber));
- while(!digitalRead(pinNumber));
- delayMicroseconds(HIGH_TIME);
- databuf*=2;
- if(digitalRead(pinNumber)==1)
- {
- databuf++;
- }
- }
-
- for(i=0;i<8;i++)
- {
- while(digitalRead(pinNumber));
- while(!digitalRead(pinNumber));
- delayMicroseconds(HIGH_TIME);
- crc*=2;
- if(digitalRead(pinNumber)==1)
- {
- crc++;
- }
- }
- return 1;
- }
- else
- {
- return 0;
- }
- }
-
- int main (void)
- {
-
- printf("Use GPIO1 to read data!\n");
-
- if (-1 == wiringPiSetup()) {
- printf("Setup wiringPi failed!");
- return 1;
- }
-
- pinMode(pinNumber, OUTPUT);
- digitalWrite(pinNumber, 1);
-
- printf("Enter OS-------\n");
- while(1) {
- pinMode(pinNumber,OUTPUT);
- digitalWrite(pinNumber, 1);
- delay(3000);
- if(readSensorData())
- {
- printf("Congratulations ! Sensor data read ok!\n");
- printf("RH:%d.%d\n",(databuf>>24)&0xff,(databuf>>16)&0xff);
- printf("TMP:%d.%d\n",(databuf>>8)&0xff,databuf&0xff);
- databuf=0;
- }
- else
- {
- printf("Sorry! Sensor dosent ans!\n");
- databuf=0;
- }
- }
- return 0;
- }
树莓派使用DHT11温湿度传感器(C语言)
原文:http://www.cnblogs.com/Pond-ZZC/p/6680443.html