Page 143 - MDP2020-1
P. 143

················································································  명장양성프로젝트  【MDP】  과제발표회  자료집  Ⅰ    |  137


            #define  LCD_D6    21                              //Data  pin  6
            #define  LCD_D7    14                              //Data  pin  7
            #define  MAXTIMINGS  85
            #define  DHTPIN  7

            int  lcd;
            int  dht11_dat[5]  =  {0,  0,  0,  0,  0};

            void  read_dht11_dat()
            {
                    uint8_t  laststate  =  HIGH;
                    uint8_t  counter  =  0;
                    uint8_t  j  =  0,  i;
                    float  f;

                    dht11_dat[0]  =  dht11_dat[1]  =  dht11_dat[2]  =  dht11_dat[3]  =  dht11_dat[4]  =  0;

                    pinMode(DHTPIN,  OUTPUT);
                    digitalWrite(DHTPIN,  LOW);
                    delay(18);

                    digitalWrite(DHTPIN,  HIGH);
                    delayMicroseconds(40);

                    pinMode(DHTPIN,  INPUT);

                    for  (i  =  0;  i  <  MAXTIMINGS;  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))
                            {
                                    dht11_dat[j  /  8]  <<=  1;
                                    if  (counter  >  16)
                                            dht11_dat[j  /  8]  |=  1;
                                    j++;
                            }
                    }

                    if  ((j  >=  40)  &&  (dht11_dat[4]  ==  ((dht11_dat[0]  +  dht11_dat[1]  +  dht11_dat[2]  +
            dht11_dat[3])  &  0xFF)))
                    {
   138   139   140   141   142   143   144   145   146   147   148