İ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 |
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
Yorum Gönder