#include #include #include #include #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= 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); } }