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

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

1,141

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

<br />
/**<br />
Yazar : Erencan TAYANÇ<br />
Konu  : DHT11 ile Sıcaklık Ölçümü ve I2C ile LCD Üzerinden Gösterilmesi<br />
*/<br />
#include &amp;lt;dht11.h&amp;gt;<br />
#include &amp;lt;Versalino.h&amp;gt;<br />
#include &amp;lt;Wire.h&amp;gt;<br />
#include &amp;lt;LiquidCrystal_I2C.h&amp;gt;<br />
#define led_pin 13<br />
#define dht_pin 5<br />
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.<br />
dht11 DHT11;<br />
float temperature;<br />
bool state = false;<br />
char s[] = {'.', '..', '...', '....', '.....', '......', '.......', '........', '.........', '..........', '...........', '............', '.............', '..............',<br />
'...............', '................'<br />
};<br />
void setup() {<br />
pinMode(led_pin, OUTPUT);<br />
digitalWrite(led_pin, state);<br />
DHT11.attach(dht_pin);          //DHT11 sensörünün hangi pinde olduğunu belirtiyoruz.<br />
lcdInit();                      //LCD'nin ilk ayarlarını yapıyoruz burada.<br />
}</p>
<p>void loop() {<br />
lcdDispTemp(getDataToDHT11());  //lcdDispTemp fonsiyonuna parametre olarak getDatatoDHT11 fonksiyonundan dönen değeri gönderiyoruz.<br />
state ^= 1;                     //Ledin toggle işlemi.<br />
digitalWrite(led_pin, state);   //Arduino üzerindeki led 2 saniyede bir yanıp sönüyor.<br />
delay(2000);<br />
}</p>
<p>void lcdInit() {<br />
lcd.begin();<br />
lcd.backlight();<br />
lcd.clear();<br />
lcd.print(&quot;  Welcome User&quot;);<br />
delay(2000);<br />
lcd.setCursor(0, 1);<br />
for (int i = 0; i &amp;lt; sizeof(s); i++) {<br />
lcd.print(s[i]);<br />
delay(200);<br />
}<br />
lcd.clear();<br />
Serial.println(&quot;Configuration Complated &quot;);<br />
delay(500);<br />
lcd.clear();<br />
}</p>
<p>void lcdDispTemp(float temp) {<br />
lcd.clear();<br />
lcd.setCursor(0, 0);<br />
lcd.print(&quot;Temperature &quot;);<br />
lcd.setCursor(0, 1);<br />
lcd.print(temp);<br />
lcd.write(223);             // ASCII tablosunda derece işaretine gelen karakter.<br />
lcd.print(&quot;C    &quot;);<br />
}</p>
<p>float getDataToDHT11() {<br />
int chk = DHT11.read();<br />
return DHT11.temperature;  //fonksiyonun dönüş parametresi float olduğu için fonksiyonun başında bunu belirtiyoruz.<br />
}<br />

Daha Fazla İlgili Makale Yükleyin
Daha Fazla Yük Arduino

Bir Yorum Yazın

Ayrıca Kontrol Edin

Temel Arduino Eğitimi | Ders #13: Karakter Dizileri (Stringler)

Karakter Dizileri (Stringler): Arduino’da birden fazla karakter barındıran değişkenlere ka…