|
byte bGlobalErr;
byte dht_dat[5];
float Data_humidity;
float Data_temperature;
void setup(){
pinMode(A1,OUTPUT);
digitalWrite(A1,HIGH);
Serial.begin(9600);
}
void loop(){
ReadDHT();
if(bGlobalErr==0){
Data_humidity = (dht_dat[0]*256+dht_dat[1])/10; //Calculate humidity %
if ((dht_dat[2] & 0x7f) != dht_dat[2]) { //Calculate temperature C
dht_dat[2]= dht_dat[2] & 0x7f;
Data_temperature = -1*(dht_dat[2]*256+dht_dat[3])/10;
}
else {
Data_temperature = (dht_dat[2]*256+dht_dat[3])/10;
}
Serial.println(Data_humidity);
Serial.println(Data_temperature);
}
delay(1000);
}
void ReadDHT(){
bGlobalErr=0;
byte dht_in;
byte i;
digitalWrite(A1,LOW);
delay(18);
digitalWrite(A1,HIGH);
delayMicroseconds(30);
pinMode(A1,INPUT);
delayMicroseconds(40);
dht_in=digitalRead(A1);
delayMicroseconds(80);
dht_in=digitalRead(A1);
delayMicroseconds(80);
for (i=0; i<5; i++)
dht_dat[i] = read_dht_dat();
pinMode(A1,OUTPUT);
digitalWrite(A1,HIGH);
};
byte read_dht_dat(){
byte i = 0;
byte result=0;
for(i=0; i< 8; i++){
while(digitalRead(A1)==LOW);
delayMicroseconds(30);
if (digitalRead(A1)==HIGH)
result |=(1<<(7-i));
while (digitalRead(A1)==HIGH);
}
return result;
}
|
|