DHT11 ile Sıcaklık Ölçümü ve I2C ile LCD Üzerinden Gösterilmesi

3 dk okuma süresi
3,695

Merhaba arkadaşlar bu yazımızda 16×2 LCD’yi I2C entegresiyle birlikte kullanacağız. Bu entegreyi kullanmamızın nedeni LCD kullanımı için gerekli pin sayısını ikiye düşürmesidir. Sorularınızı yorum olarak veya iletişim bölümünden iletebilirsiniz.

  

Gerekli Malzemeler

  • Arduino Nano
  • Breadboard
  • 16×2 LCD Ekran
  • DHT11 Sıcaklık ve Nem Sensörü
  • Jumper kablo
  • 1602 I2C Arayüzü Modülü

 Devre Şeması

 

Devrenin Fritzing Şeması

 

#include <LiquidCrystal_I2C.h> yazarak LCD kütüphanesini çağıracağız. Bu kütüphane sayesinde işimiz oldukça kolaylaşacak.

#include <dht11.h> yazarak DHT11 kütüphanesi çağıracağız.

#include <Wire.h> kütüphanesi ile OneWire haberleşmesini yapacağız. Bu haberleşme türünde tek hatta çok sayıda cihaz kontrol edilebilir.

  • begin()LCD ekranınızın adresinin ve boyutlarını girmek için kullandığımız komut
  • setCursor()yazı yazmak için imleci istediğimiz yere koymamızı sağlayan komut
  • print()ekrana yazdırmak istediğimiz şeyleri bu komutla yazdıracağız
  • clear()ekrandaki her şeyi temizleyen komut
  • DHT11.temperature DHT11 sensörününden sıcaklık bilgisini almak için kullanılan komut
/**
Yazar : Erencan TAYANÇ
Konu  : DHT11 ile Sıcaklık Ölçümü ve I2C ile LCD Üzerinden Gösterilmesi
*/
#include &lt;dht11.h&gt;
#include &lt;Versalino.h&gt;
#include &lt;Wire.h&gt;
#include &lt;LiquidCrystal_I2C.h&gt;
#define led_pin 13
#define dht_pin 5
LiquidCrystal_I2C lcd(0x27, 16, 2);  //0x27 I2C Entegresinin Adresi. Bu bilgiye Datasheet üzerinden ulaşılıyor. Sonrasında 16x2'lik LCD olduğu için parametre olarak giriyoruz.
dht11 DHT11;
float temperature;
bool state = false;
char s[] = {'.', '..', '...', '....', '.....', '......', '.......', '........', '.........', '..........', '...........', '............', '.............', '..............',
'...............', '................'
};
void setup() {
pinMode(led_pin, OUTPUT);
digitalWrite(led_pin, state);
DHT11.attach(dht_pin);          //DHT11 sensörünün hangi pinde olduğunu belirtiyoruz.
lcdInit();                      //LCD'nin ilk ayarlarını yapıyoruz burada.
}

void loop() {
lcdDispTemp(getDataToDHT11());  //lcdDispTemp fonsiyonuna parametre olarak getDatatoDHT11 fonksiyonundan dönen değeri gönderiyoruz.
state ^= 1;                     //Ledin toggle işlemi.
digitalWrite(led_pin, state);   //Arduino üzerindeki led 2 saniyede bir yanıp sönüyor.
delay(2000);
}

void lcdInit() {
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.print("  Welcome User");
delay(2000);
lcd.setCursor(0, 1);
for (int i = 0; i &lt; sizeof(s); i++) {
lcd.print(s[i]);
delay(200);
}
lcd.clear();
Serial.println("Configuration Complated ");
delay(500);
lcd.clear();
}

void lcdDispTemp(float temp) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature ");
lcd.setCursor(0, 1);
lcd.print(temp);
lcd.write(223);             // ASCII tablosunda derece işaretine gelen karakter.
lcd.print("C    ");
}

float getDataToDHT11() {
int chk = DHT11.read();
return DHT11.temperature;  //fonksiyonun dönüş parametresi float olduğu için fonksiyonun başında bunu belirtiyoruz.
}
Daha Fazla İlgili Makale Yükleyin
Daha Fazla Yük Arduino

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Kontrol Edin

Temel Elektronik ve Arduino için PDF

Bu paylaşacağımız PDF bize ait olmayıp tamamen takipçilerimizin faydalanması için siteye e…