Serial I2C 16×2 Karakter LCD Modül kullanımı
|Merhabalar;
Bu yazımda Serial I2C LCD modülünü tanıtıp,anlatacağım.Öncelikle ben lcd kullanmanız gereken projelerinizde Serial lcd kullanmanızı tavsiye ederim. Bunun sebebi gereksiz pin kalabalığından kurtulmanızdır.Ayrıca PCM1602B LCD’ de pinleri lehimlemekle uğraşacaksınız. Serial lcd bunların hepsini ortadan kaldırdığı için projelerinizde Serial lcd kullanmanızı tavsiye ediyorum.
Yukarıdaki tabloda Serial LCD nin pinleri ve arduinoda hangi pinlere bağlanacağı verilmiştir.Bu tabloya ilaveten Serial LCD nin arkasında parlaklık ayarı yapabileceğiniz bir trimpot bulunmaktadır.
Not: Arduino pinleri üzerinde SDA ve SCL ifadesi göremezsiniz Arduinonun arkasında yazılmıştır bu pinler bunlar Arduino Unoda A4 VE A5 pinleridir. Her arduino çeşidi için farklılık gösterebilir.
Bağlantı şeması:
Yazılım:
İlk olarak I2C LCD kütüphanesini include etmeniz gerekir.I2C LCD kütüphanesini buradan indirebilirsiniz.
Ekrana Hello World yazdırma:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <Wire.h> #include <LiquidCrystal_I2C.h> // I2C kütüphanesini verdiğim linkten indirip include edebilirsiniz LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); // LCD yi başlatma lcd.backlight(); // lcd nin arka ışıgını açar lcd.print("Hello, world!"); // LCD ye Hello,world! yazdırıyoruz. } void loop() { } |
Şimdi de kütüphanenin desteklediği kullanabileceğiniz fonksiyonları yazalım ve ne işe yaradığından bahsedelim;
- init() //LCD yi başlatır.
- clear() //LCD ekranını temizler
- home() //imleci 0 Konumuna getirir.
- setCursor() //imlecin konumunu ayarlamaya yarar
- cursor() //Alt çizgili imleç açar
- noCursor() //Alt çizgi imlecini kapar
- blink() //Yanıp sönen imleç açar
- noBlink() //Yanıp sönen imleci kapar
- display() //Ekranı açar
- noDisplay() //Ekranı kapar
- backlight() //Arka planın ışığını açar
- noBacklight() //Arka planın ışığını kapar
- scrollDisplayLeft() //Sol ekranda kaydırma yapar
- scrollDisplayRight() //Sağ ekranda kaydırma yapar
Şimdi Serial LCD yi bir projede kullanalım.Elimizde bir joystick var ve bu joystick ile servo motorumuzun hareketini kontrol ediyoruz. Servo motorumuzun ucunda ise ultrasonik sensör var.Ultrasonik sensör servo motorun hareketi ile etrafı tarıyor ve etrafındaki cisimlerin uzaklığını Serial LCD ye yazdırıyor. Hadi şimdi koda bakalım;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#include<Servo.h> #include<LiquidCrystal_I2C.h> // İnclude etmemiz gerek lcd kütüphanesi #include<Wire.h> int servo=3; int servoDeger; int xPin=A0; int trigPin=4; int echoPin=5; int cm; int uDeger; int sclPin=A5; // Arduino Serial lcd pinleri int sdaPin=A4; LiquidCrystal_I2C lcd(0x27,16,2); // lcd nin adresini ve kaca kac lcd olduguu tanımladık. Servo myservo; void setup(){ myservo.attach(servo); lcd.init(); // lcd yi başlatır. lcd.backlight(); // Arkaplan ışıgını aktif eder pinMode(trigPin,OUTPUT); pinMode(echoPin,INPUT); Serial.begin(9600); } void loop(){ digitalWrite(trigPin,LOW); digitalWrite(trigPin,HIGH); digitalWrite(trigPin,LOW); uDeger=analogRead(echoPin); cm=uDeger/29/2; // cm cinsine çevirmek için gerekli matematiksel işlem Serial.print(analogRead(xPin)); Serial.print ("---"); servoDeger=analogRead(xPin); /* Joystick'den aldıgımız veri ile servo kontolü */ servoDeger=map(servoDeger,0,1023,0,180); myservo.write(servoDeger); delay(15); lcd.print(cm); // lcd ye uzaklığı cm cinsinden yazdırıyoruz lcd.clear(); // her deger okuduktan sonra lcd yi temizliyoruz. } |
Kullanılan servo motor : Servo SG90
Kullanılan LCD : Serial I2C 1602 16×2 Karakter LCD modül
Kullanılan joystick : Keyes “SJoys” Joystick
Kullanılan ultrasonik sensör : Hc-Sr04 Ultrasonik sensör
merhaba bahsekonu serial LCD nasıl temin edilebilir Türkiye’de mevcut mu ? Birde ARDUİNO kullanmadan kendi Özgün devrelerimizde kullanılabiliyor mu pic Pro basic Kodları ile yazılabiliyor mu bilgi verirseniz sevinirim Adem Esen 0552 390 00 00
Türkiyede satın alabileceğiniz siteye buradan ulaşabilirsiniz ;
http://www.robotistan.com/16×2-IICI2CTWI-Seri-LCD-Ekran-Mavi,PR-2140.html
Kendi özgün devrelerinizde de kullanabilirsiniz.Google da “Interfacing a Serial LCD with PIC project” olarak arattığınızda istediğiniz sonuca ulaşabilirsiniz.
İyi çalışmalar.
merhaba bende arduino kitimi çinden almıştım gelen lcd ı2c olmadan kullanılamıyor.bende sizin kodları aldım.ama kütüphaneyi eklemeyi beceremdim.inen dosyayı direk libraries e attım.ama kodu derleyince kütüphane ile ilgili sorun çıkıyor.nasıl eklemem lazım kütüphaneyi bi anlatırmısınız.
Öncelikle merhaba konu sahibi ben değilim ama belki yardımcı olabilirim. Öncelikle daha önceden bu kütüphaneyi eklemiş olma ihtimaline karşı libraries klasörünü göz atarsanız iyi olur. AYnı kütüphaneler sorun çıkartabilir. İkinci olarak kütüphane isminde türkçe karakter yada – gibi ifadelere yer verirseniz arduino’ nun bazı sürümlerinde hata ile karşılaşabilirsiniz. Üçünü olarak da bilgisayarda farklı bir Arduino daha yüklüyse kütüphaneyi eklediğinizi kullanmaya çalıştığınızdan emin olun. Bunlardan hiçbiri size çözüm olmazsa, hatanın ne olduğunu yazarsanız kesin çözümü bulabiliriz.
iyi Çalışmalar…
LiquidCrystal_I2C lcd(0x27,16,2); arduino burada hata verdi, pek bilgili değilim, sorun nedir acaba, yardımcı olursanız sevinirim :)
Kütüphane’yi eklememişsinizdir.
LiquidCrystal_I2C lcd(0x27,16,2) bu satırdaki 0x27 komutunu 0x3f olarak deneyin bazı lcd moduller bu kodla çalışıyor
Öncelikle merhaba ;
Sorununuzun kütüphaneyi ekleme kısmında olduğunu düşünüyorum.Verdiğim linkteki library dosyasını indirdikten sonra “libraries” klasörüne atmalısınız. Eğer hala sorununuz devam ederse ,hatanın ne olduğunu yazarsanız kesin çözüm bulabiliriz.
İyi çalışmalar..
Kütüphaneyi ekledim,
Örnek kodlarda HELLO WORD vardı zaten onu derledim. (hata vermedi)
Arduino ya yükledim ordada sorun yok.
Ancak LCD ekranın sadece ışıkları yanıyor yazı felan yok.
Merhaba..
Konu sahibi değilim lakin dediğiniz problemin benzerini daha önce yaşadım. Tüm LCD bağlantılarınızı Arduino’ ya güç vermeden yapmış olmalısınız. Arduino’ ya güç verdikten sonra LCD nin besleme yada haberleşme pinlerini bağlarsanız I2C haberleşmesi için adresleme kısmını Arduino geçmiş olur. Umarım işinizi görür.
iyi çalışmalar..
Aynı sorunu bende yaşıyorum. Dediğinizi deneyip arduinoya güç verdiğime emin olduktan sonra bağlantıları yaptım. Aynı sorun devam ediyor. Başka ne olabilir. Arduino yada LCD nin sorunlu olduğunu sanmıyorum.
Sanırım kendimi yanlış ifade ettim. Bağlantılarınızı güç vermeden yapmış olmanız lazım. Yani LCD nin tüm bağlantılarını resimdeki gibi arduino’ ya bağlayın daha sonra güç verin. Ben bu şekilde bendeki sorunu çözmüştüm. Çözüm olmazsa malesef farklı bir çözüm öneremeyeceğim.
Arkasında bulunan kontrastı ayarlamamış olabilir misin?
Mükemmel:) Standart olarak ayarlıdır düşüncesiyle hiç bakmamıştım bile
Dediğiniz yaptım fakat mavi ekrandan başka bir şey çıkmıyor.
I2c arama yükleyip arama yaptırdım I2c Device not found diyor.
Kullandığım kart mega 2560 ve i2c nin üzerindeki cip no : pcf8574at
sorun sizce ne olabilir.
Malesef bir şey söyleyemeyeceğim. Ben edindiğim bir tecrübeyi size de söylemek istedim. Sizin sorununuz pin lerin ters bağlanmasından I2C donanımın zarar görmüş olmasına kadar her şey olabilir.
İyi çalışmalar..
Arduino Meganın SDA ve SCL pinleri unodan farklıdır. I2C: 20 (SDA) and 21 (SCL). Bu pinlere göre bağlantı yaparsan problem çözülür.
12c 16×2 lcd ekranı tam olarak kullanamıyorum gönderdiğim metinlerin sadece ilk harfi çıkıyor gerisi gelmiyor misal nem yazdıracaksam sadece N harfi yazılıyor gerisi yok sorun nereden kaynaklanıyor olabilir acaba yardımlarınızı bekliyorum teşekkür ederim.
Merhaba, lcd.begin fonksiyonunda yada lcd.setCursor fonksiyonunda indisleri ters yazmış olabilirsiniz. Önce sutun sonra satır yazılmalıdır.( lcd.begin(16,2) ) Ayrıca lcd.setCursor fonskiyonu indis olarak 0′ dan başlar. Yani birinci satır birinci sutun 0,0′ dır.Ben bu şekilde çözmüştüm benzer sorunu. İyi çalışmalar..
Serkan senle aynı sorunu http://forum.arduino.cc/index.php?topic=361411.0 bu linkteki vatandaşlarda yaşamış. Preoblem Arduinonun son sürüm IDE’sinden kaynaklanmakta. 1.6.6 dan önceki IDE’ lerden birini kullan örneğin 1.6.0’ı indir buradan sorun çözülür. https://www.arduino.cc/en/Main/OldSoftwareReleases#previous