DHT11은 5-Byte(5*8=40Bit)의데이타를 출력하며 출력데이타의 고조는 다음과같다
(1) 습도정수값 8-Bit
(2)습도 소숫점이하값-8-Bit
(3) 온도정수값 8-Bit
(4)온도 소숫점이하값-8-Bit
(5)1번에서 4번까지의 4Byte 값을 모두 더한 값(CheckSum)
#define Wire_1 7
void setup(){ Serial.begin(9600);}
void loop(){
byte Dta[5];
int Rcv[50];
for(int i=0; i<0; ++i) Rcv[i] =0;
pinMode(Wire_1, OUTPUT);
digitalWrite( Wire_1, HIGH); delay(50);
digitalWrite( Wire_1, LOW); delay(18);
digitalWrite( Wire_1, HIGH); pinMode(Wire_1, INPUT_PULLUP);
int i, Bit;
for( i=0; i<50; ++i) { Rcv[i]= pulseIn(Wire_1, HIGH); if(Rcv[i]==0) break;}
for(Bit=0; Bit<50;++Bit) { if( Rcv[Bit]>70) break; }
for((i-Bit)<= 40){ Bit++;
for( int k=0; k<5; ++k) { Dta[k] =0;
for(int i=0; i<8; i++) { Dta[k] = Dta[k]<<1 ;
if( Rcv[Bit] >50) Dta[k] +=1; Bit++;
}
}
byte Sum =0;
for( int i=0; i< 4;++i) Sum += Dta[i] ;
if( Sun == Dta[4]) { Serial.print( " 현재온도 ; ") ; Serial. print(Dta[2] );
Serial.print( " 현재습도 ; ") ; Serial. print(Dta[0] ); }
delay(5000); }
}