sensor ini adalah upgrade-an dari dht 11 jadi dia lebih teliti untuk hasil di serial monitornya::
langsung saja menuju bahan yang kita perlukan:
-arduino
-dht 21
-white board
-kabel jumper
dan ini untuk programnya:
#define DHT11_PIN 14 // ADC0
byte read_dht11_dat()
{
byte i = 0;
byte result=0;
for(i=0; i< 8; i++){
while(!digitalRead(DHT11_PIN)); // wait for 50us
delayMicroseconds(30);
if(digitalRead(DHT11_PIN))
result |=(1<<(7-i));
while(digitalRead(DHT11_PIN)); // wait '1' finish
}
return result;
}
void setup()
{
pinMode(DHT11_PIN,OUTPUT);
Serial.begin(9600);
Serial.println("Ready");
}
void loop()
{
byte dht11_dat[5];
byte dht11_in;
byte i;
float humdity,temperature;
// start condition
// 1. pull-down i/o pin from 18ms
digitalWrite(DHT11_PIN,LOW);
delay(18);
digitalWrite(DHT11_PIN,HIGH);
delayMicroseconds(40);
pinMode(DHT11_PIN,INPUT);
while(digitalRead(DHT11_PIN)){
Serial.println("dht11 start condition 1 not met");
}
delayMicroseconds(80);
while(!digitalRead(DHT11_PIN)){
Serial.println("dht11 start condition 2 not met");
}
delayMicroseconds(80);
// now ready for data reception
for (i=0; i<5; i++)
dht11_dat[i] = read_dht11_dat();
pinMode(DHT11_PIN,OUTPUT);
digitalWrite(DHT11_PIN,HIGH);
byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];
// check check_sum
if(dht11_dat[4]!= dht11_check_sum)
{
Serial.println("DHT11 checksum error");
}
humdity=((float)(dht11_dat[0]*256+dht11_dat[1]))/10;
temperature=((float)(dht11_dat[2]*256+dht11_dat[3]))/10;
Serial.print("Current humdity = ");
Serial.print(humdity,1);
Serial.print("% ");
Serial.print("temperature = ");
Serial.print(temperature,1);
Serial.println("C ");
delay(2000);
}
setelah anda copy program ini langsung kita menuju perangkaian...
setelah perangkaian selesai silahkan di-upload programnya ke-arduino...
dan ini untuk hasilnya...
dibandingkan dengan hasil dht 11 yang kemaren dht 21 lebih detail.......
oke deh selamat mengembangkan dan salamat mencoba......
GOOD LUCK....!!!!!
Tidak ada komentar:
Posting Komentar