Page 291 - 2
P. 291

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)))
            {
            f = dht11_dat[2] * 9. / 5. + 32;
            printf("Humidity = %d.%d %% Temperature = %d.%d C (%.1f F)\n",
            dht11_dat[0], dht11_dat[1], dht11_dat[2], dht11_dat[3], f);
            }
            else {
            printf("Data not good, skip\n");


                                                         - 291 -
   286   287   288   289   290   291   292   293   294   295   296