Ana içeriğe atla

İ2C LCD Modülü Uygulamaları

 



 İ2C LCD (Liquid Crystal Display)

Uygulamalarımızda her zaman seri haberleşmeyle değer okumak istemeyebiliriz. İşte bu gibi durumlarda lcd ekran gibi elektronik bileşenlerine ihtiyacımız olabilir. Tek bir devre üzerinden farklı kodlar yazarak birkaç farklı uygulama yapacağız hadi başlayalım.

Bu eğitimde 16x2 lik yani 16 sütun 2 satırdan oluşan i2c modüllü bir Lcd kullanacağız. Yakından bakarsanız her bir karakteri oluşturan küçük dikdörtgenleri görebilirsiniz. Her dikdörtgen 5 × 8 piksellik bir ızgaradan oluşur.

I2C LCD, modülün arkasına monte edilmiş küçük bir eklenti devre ile birlikte gelir.

Avantajı, kablolamanın çok basit olmasıdır. Ekranı kontrol etmek için enerji pinleri hariç iki veri pinine ihtiyacınız var.

I2C, bir haberleşme protokolüdür. gelen veriyi LCD ekranın anlayacağı dile çeviriyor diyebiliriz. Bunu da  SDA ve SCL hatlarını kullanarak data yani veri aktarımı yapar.

Hadi bağlantımızı yaparak başlayalım.

SDA VE SCL bağlantısı için google'a "Wire Library" yazarak öğrenebilirsiniz.

VCC (Besleme Gerilimi)

 Herhangi bir 5v çıkışı

 GND (TOPRAK)

  GND (TOPRAK)

 SDA

 A4

 SCL

 A5





I2c iletişimini kullanarak lcd ekranı çalıştırmak istiyorsak eğer yapmamız gereken ilk iş i2c adresimizi öğrenmek bu farklı Arduino tipleri için farklı değerler alabilir bunu yapmak için i2c tarama kodumuzu arduinoya yüklemeliyiz ve adres bilgimizi almalıyız. Bu koda açıklamalar bölümünden ekleyeceğim linke tıklayarak ulaşabilirsiniz.

Kodlarımızı kopyala yapıştır yaparak derleme programına yükleyebilirsiniz. Derledikten sonra ctrl shift m yaparak gelen ekrandan adresini öğrenebilirsiniz.

Evet gördüğünüz gibi 0x27 adresi benim i2c adresim sizde bu farklı bir değer olabilir  0x3F  gibi bu değeri not alalım biraz sonra ihtiyacımız olacak arkadaşlar. 

İ2C Adresimizi Öğrenelim!

#include <Wire.h>
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  while (!Serial);             
  Serial.println("\nI2C Modülü");
}
void loop()
{
  byte error, address;
  int nDevices;
  Serial.println("Taranıyor...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0)
    {
      Serial.print("Adres bulundu 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("Haydi Başlayalım\n");
 
  delay(5000);          
} 

LCD KÜTÜPHANESİNİ İNDİRMEK İÇİN: 

Kütüphaneyi BURAYA tıklayarak indirebilirsiniz.


UYGULAMA KODLARI


1) LCD'ye alt alta "merhaba" ve "ilk uygulama" yazdırır.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd=LiquidCrystal_I2C(0x27,16,2);
void setup() {
  lcd.init();
  lcd.backlight();

}

void loop() {
  lcd.setCursor(4,0);
  lcd.print("Merhaba");
  lcd.setCursor(2,1);
  lcd.print("ilk uygulama");
}

2) LCD'ye sol üst köşesine "pazar" ve "20:00" i 2 sn aralıklarla yazdırır.


#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd=LiquidCrystal_I2C(0x27,16,2);
void setup() {
  lcd.init();
  lcd.backlight();

}
void loop() {
  lcd.clear();
  lcd.print("pazar");
  delay(2000);
  lcd.clear();
  lcd.print("20:00");
  delay(2000);
}

3) LCD'ye sola doğru kaydırarak "dijital gezgin" yazdırır.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd=LiquidCrystal_I2C(0x27,16,2);
void setup() {
  lcd.init();
  lcd.backlight();
  lcd.print("dijital gezgin")
}
void loop() {
 lcd.scrollDisplayLeft();
 delay(500);
}

Yorumlar

Bu blogdaki popüler yayınlar

#9 | Lazerli Güvenlik Sistemi Nasıl Yapılır?

  Odanız için basit bir lazerli güvenlik sistemi kurmak ister misiniz? Şimdiye kadar öğrendiğimiz kod yapıları ve sensörleri kullanarak çok rahat tasarlayabilirsin. Lazer ışığının algılanabilmesi için LDR kullandım. LDR lazer ışığını alamadığında yani lazerin önünde bir şey geçtiğinde Arduino buna tepki verecektir. Böylece kapıdan birinin girip girmediğini anlayabilirsiniz. Daha önceden de öğrendiğimiz gibi LDR ışığın şiddetiyle değişen bir dirençtir. LDR çıkışı Arduino'nun analog girişine bağlanmıştır. Arduino analog girişini sürekli kontrol etmelidir. Eğer analog girişin değeri belirli bir değerin altına düşer ise Arduino, lazer ışığı ile LDR arasından bir şey geçtiğini anlayacaktır. DEVRE KODLAR int led = 4 ; int buzzer = 5 ; int ldr = A4 ; void setup ( ) {   Serial . begin ( 9600 ) ;   pinMode ( led , OUTPUT ) ;   pinMode ( buzzer , OUTPUT ) ; } void loop ( ) {   int ldrdeger = analogRead ( ldr ) ;   Serial . println ( ldrdeger...

# 11 | Joystick ile 2 Servo Motor Kontrolü

Servo Motor Nedir? Nasıl Çalışır? Yapı olarak dc veya ac motor tiplerine benzeseler de bu sistemlere ek olarak iç yapısında bir potansiyometre ve motor milinin konumunu ölçen bir kontrol devresi bulunur. Ayrıca servo motor 3 bağlantı ucuna sahiptir. GND(toprak), 5V, Sinyal pinleri.  Bunlardan ikisi motoru çalıştırırken diğer ucu ise sistemin giriş birimine motor şaftının konumunu bildirir. DC Servo Motor DC Servo motorun içerisinde bir adet dc motor bulunmasından dolayı dc servo motor ismini almıştır. Fakat dc motora ek olarak bir kontrol devresi ve çıkışında mil görevi gören bir potansiyometre ile dc motorun milini kontrol eder. Potansiyometre Dönme momentine göre lineer bir direnç artışına sebep olur. Bu özelliğinden faydalanılarak potansiyometrenin o anki direnç değerine göre servo motorun anlık konumu belirlenir. Tüm bu işlemleri yapan kısım ise dc servo motorda kontrol devresi olarak anılır. Kontrol Devresi Potansiyometrenin direnç değerine göre servo motorun o an hangi a...

#19 | HC06 Bluetooth Modülüyle 3 LED Yakalım! (Detaylı Anlatım)

  Kod ve Devreyi indirmek için tıklayınız! HC05/06 Bluetooth Modülü Herkese merhaba bugün HC06 Bluetooth modülünü kullanarak 3 tane LED yakma projesini yapacağız. Artık neredeyse hepimizin elinde akıllı telefon mevcut. akıllı telefonumuz aracılığıyla Bluetooth üzerinden evimizdeki ışıkları, robotları veya yaptığımız devreleri kontrol edebiliriz. Bluetooth modüller Arduino kablosuz iletişiminde yaygın olarak kullanılan modüllerden biridir ve genellikle HC05 ve HC06 modülleri karşımıza çıkar. Bu modüller fiziksel tip olarak birbirlerine benzerdir. Fakat HC05 Bluetooth modülü 6 pinli HC06 modülüyse 4 pinlidir.  Özellik olarak aralarındaki tek fark ise HC05 modülünün kendisine gelen isteklere cevap verirken aynı anda başka bluetooth cihazlarına  bağlanabilmesidir.  HC06 ise sadece kendisine gelen istekleri kabul edebilir fakat başka bluetooth kartına bağlatı isteği gönderememektedir.  HC05 Bluetooth modülünün çalışma türüne Master-Slave ; HC06 modülünün türü ise s...