Rabu, 03 April 2013

arduino with dht 21 and iic lcd.

untuk episode kali ini saya akan merubah tampilan hasil dht21 yang kemaren saya tampilkan di serial software arduino sekarang akan saya tampilkan di iic lcd.....
sebetulnya agak rumit tapi saya sudah bisa menampilaknnya...hehehehe
yuk langsung saja ke bahan yang kita perlukan:

-arduino
-dht 21
-iic lcd
-white board
-kabel jumper

ini unutk programnya:


#define DHT11_PIN 14      // ADC0
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

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()
{
 lcd.init();                      // initialize the lcd

  // Print a message to the LCD.
 lcd.backlight();
 pinMode(DHT11_PIN,OUTPUT);
 Serial.begin(9600);

}
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)){
   lcd.println("dht11 start condition 1 not met");
 }
 delayMicroseconds(80);
 while(!digitalRead(DHT11_PIN)){
   lcd.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)
 {
   lcd.println("DHT11 checksum error");
 }
 humdity=((float)(dht11_dat[0]*256+dht11_dat[1]))/10;
 temperature=((float)(dht11_dat[2]*256+dht11_dat[3]))/10;
 lcd.print("humdity = ");
 lcd.print(humdity,1);
 lcd.print("%  ");
 lcd.setCursor(0, 1);
 lcd.print("tmpratr = ");
 lcd.print(temperature,1);
 lcd.println("C  ");
 delay(2000);
}

setelah anda meng-copy programnya silahkan untuk menuju ke-perangkaian.....seperti ini
untuk lebih mudah akan saya perjelas:

pin sda pada iic lcd pasangkan dengan pin A4 arduino
pin scl pada iic lcd pasangkan dengan pin A5 arduino
gnd pada iic lcd pasangkan dengan pin gnd arduino
vcc pada iic lcd pasangkan dengan pin vcc 5v arduino


pin vcc (atau kabel warna merah) pada dht21 dipasangkan dengan pin vcc 5v pada arduino
pin gnd (atau kabel warna hitam) pada dht21 dipasangkan dengan pin gnd pada arduino
pin output (atau kabel warna merah) pada dht21 dipasangkan dengan pin vcc 5v pada arduino

setelah perangkaian selesai silahkan upload program ke arduino-nya ....
dan ini untuk hasilnya:



oke mudahkan....
selamat mencoba dan mengembangkan sendiri....
GOOD LUCK..!!!!!!!!

3 komentar:

  1. Pin lcdnya ko cuma 4 ya? Maaf saya masih pemula butuh pencerahan :D

    BalasHapus
  2. Pin lcdnya ko cuma 4 ya? Maaf saya masih pemula butuh pencerahan :D

    BalasHapus
  3. bro zall pratama............ ini bukan lcd yang biasa tapi -iic lcd-.... jadi lebih praktis dan jumlah pinnya cuman 4.ok...

    BalasHapus