
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ı

#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 <dht11.h> #include <Versalino.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #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 < 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. }