Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <wiringPi.h>
- #include <stdio.h>
- #include <stdint.h>
- #include <time.h>
- #define DHTPIN 7
- #define MAXTIMING 85
- int data[5] = {0,0,0,0,0};
- char buff[20];
- int read_dht11(){
- uint8_t laststate = HIGH;
- uint8_t counter = 0;
- uint8_t i = 0, j = 0;
- float f;
- data[0] = data[1] = data[2] = data[3] = data[4] = 0;
- pinMode(DHTPIN, OUTPUT);
- digitalWrite(DHTPIN, LOW);
- delay(18);
- digitalWrite(DHTPIN, HIGH);
- delayMicroseconds(40);
- pinMode(DHTPIN, INPUT);
- for(i=0;i<MAXTIMING;i++){
- counter = 0;
- while(digitalRead(DHTPIN) == laststate){
- counter++;
- delayMicroseconds(1);
- if(counter == 255){
- break;
- }
- }
- laststate = digitalRead(DHTPIN);
- if(counter == 255){
- break;
- }
- if((i >= 4) && (i % 2 == 0)){
- data[j/8] <<= 1;
- if(counter > 16){
- data[j/8] |= 1;
- }
- j++;
- }
- }
- if((j >= 40) && (data[4] == ((data[0] + data[1] + data[2] + data[3]) & 0xFF))){
- f = data[2] * 9. / 5. + 32;
- printf("Humidity = %d.%d %%, Temperature = %d.%d *C (%.1f *F)\n",
- data[0], data[1], data[2], data[3], f);
- FILE* f;
- f = fopen("result.csv", "w");
- time_t now = time(NULL);
- strftime(buff, 20, "%Y%m%d%H%M%S", localtime(&now));
- if(data[2] > 50){
- return;
- }
- fprintf(f, "%s,%d.%d,%d.%d\n", buff, data[0], data[1], data[2], data[3], f);
- fclose(f);
- return 1;
- }else{
- printf("failed..\n");
- }
- return 0;
- }
- int main(){
- if(wiringPiSetup() == -1){
- printf("error");
- }
- while(!read_dht11()){
- delayMicroseconds(500 * 1000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement