树莓派3B--DHT11传感器的使用
设备和环境:
1、树莓派3b;
2、ubuntu mate系统 linux内核是4.4.38
3、DHT11传感器。
功能需求:
1、读取DHT11传感器的数据,并将温湿度打印出来。
功能实现:
1、建立dht11.c文件,然后编写代码,具体如下;
//
//
//mydht11.c
//
#include
#include
#include typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;#define HIGH_TIME 32int pinNumber =1; //use gpio1 to read data
uint32 databuf;uint8 readSensorData(void)
{uint8 crc; uint8 i;pinMode(pinNumber,OUTPUT); // set mode to outputdigitalWrite(pinNumber, 0); // output a high level delay(25);digitalWrite(pinNumber, 1); // output a low level pinMode(pinNumber, INPUT); // set mode to inputpullUpDnControl(pinNumber,PUD_UP);delayMicroseconds(27);if(digitalRead(pinNumber)==0) //SENSOR ANS{while(!digitalRead(pinNumber)); //wait to highfor(i=0;i<32;i++){while(digitalRead(pinNumber)); //data clock startwhile(!digitalRead(pinNumber)); //data startdelayMicroseconds(HIGH_TIME);databuf*=2;if(digitalRead(pinNumber)==1) //1{databuf++;}}for(i=0;i<8;i++){while(digitalRead(pinNumber)); //data clock startwhile(!digitalRead(pinNumber)); //data startdelayMicroseconds(HIGH_TIME);crc*=2; if(digitalRead(pinNumber)==1) //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); // set mode to outputdigitalWrite(pinNumber, 1); // output a high level printf("Enter OS-------\n");while(1) {pinMode(pinNumber,OUTPUT); // set mode to outputdigitalWrite(pinNumber, 1); // output a high level 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;
}
//
2、编译
//
gcc -Wall -o dht11 dht11.c -lwiringPi
//
3、运行
//
./dht11
//
4、结果
致谢:
1、树莓派读取DHT11数据的实践思考
2、DHT11 HUMIDITY & TEMPERATURE SENSOR MODULE
3、树莓派读取温湿度传感器DHT11
4、树莓派读取温湿度传感器DHT11(好)
5、DHT11数字湿温度传感器的原理和应用范例
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
