아두이노

1-wire 통신(온습도측정)

내동 2022. 3. 13. 06:07

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);  }

 }

 

'아두이노' 카테고리의 다른 글

Delta robot  (0) 2023.10.22
cutter_5  (0) 2022.04.11
세탁기1  (0) 2022.01.28
세탁기 표시창  (0) 2022.01.25
RPM측정  (0) 2021.12.18