i2c arduino nano lcd / Elif Hoca Robotik - Ders Arduino I2C LCD ekran kullanımı

I2c Arduino Nano Lcd

i2c arduino nano lcd

Merhaba arkadaşlar,

Bu yazıda, Arduino ve LCD bağlantılarının nasıl yapılacağını anlatacağım ve size programlayabileceğiniz bütün farklı yolları göstereceğim.

Metni nasıl yazdıracağınızı, metni nasıl kaydıracağınızı, özel karakterleri nasıl yazacağınızı, metni nasıl kırpacağınızı ve metni nasıl konumlandıracağınızı göstereceğim. Bu bilgiler output alacağınız herhangi bir proje için harika olacak ve bu sayede projenizi daha interaktif ve ilginç bir hale getirebileceksiniz.

Kullanacağımız ekran çok uygun bir fiyata alabileceğiniz 16×2 LCD ekran. Ekranın 16&#;2 olarak adlandırılması LCD’nin 2 satıra sahip olduğu ve satır başına 16 karakter görüntüleyebileceği anlamına geliyor. Yani ekran aynı anda 32 adet karakter görüntüleyebiliyor. Bunun dışında kaydırma yaparak 32 karakterden fazlasını da görüntüleyebilirsiniz.

Bu yazıdaki kodlar, standart Hitachi HD sürücüsünü kullanan LCD&#;ler için yazılmıştır. LCD&#;nizin 16 iğnesi varsa, muhtemelen Hitachi HD sürücüsüne sahiptir.

Gerekli malzemeler:

LCD ve Arduino Bağlantıları

Kullandığım LCD&#;deki pinlerin diyagramını aşağıda bulacaksınız. LCD ekranımızda 16 adet pin var. Kullanacağımız ekrana göre pinler ekranın üst, alt veya her iki tarafında da yer alabilir. Çok nadir olarak bazı ekranlarda ise arka aydınlatma ışığı bulunmadığından 14 adet pin yer almaktadır. 15 ve 16 numaralı pinler, ekran aydınlatması bulunan ekranlarda arka ışığı yakmak için kullanılır. Her bir pinden Arduino&#;ya olan bağlantılar aynı olacaktır, ancak pinleriniz LCD üzerinde farklı şekilde düzenlenebilir. Bunun için kullandığınız LCD’nin datasheet’ine bakabilirsiniz.

Ayrıca breadboard’a bağlamadan önce LCD&#;nize 16 pinlik bir başlık lehimlemeniz gerekebilir. LCD&#;yi Arduino&#;nuza bağlamak için aşağıdaki şemayı takip edin:

Yukarıdaki diyagramdaki direnç, arka ışık parlaklığını ayarlar. Tipik bir değer olan Ohm direnç kullandım ama diğer değerler de işe yarayacaktır. Daha küçük dirençler arka ışığı daha parlak hale getirir.

Potansiyometre ekran kontrastını ayarlamak için kullanılır. Ben genellikle 10K Ohm potansiyometre kullanıyorum ancak diğer değerler de çalışır.

Ekranla ilgili tüm teknik bilgileri içeren 16×2 LCD&#;nin datasheet’ini incelemek isterseniz buradan indirebilirsiniz.

Arduino Programlama

Aşağıdaki kodların tamamı Arduino IDE ile önceden yüklenmiş olarak gelen LiquidCrystal kütüphanesini kullanır. Bir kütüphanenin kullanılabilmesi için programa dahil edilmesi gerekir. Aşağıdaki kodlardaki 1. Satır olan #include <LiquidCrystal.h> komutu bu işe yarar. Bir programda bir kütüphane eklediğinizde, kütüphanedeki tüm kod, programınızın koduyla birlikte Ardunio&#;ya yüklenir. Şimdi bağlantılarınızı tamamladıysanız programlamaya başlayabiliriz. Basit bir test programıyla başlayalım. Bu program ekrana “hello, world!” yazdıracaktır. Aşağıdaki kodu Arduino’ya yükleyelim:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); seafoodplus.info("hello, world!"); } void loop() { }

LCD Ekranınız şu şekilde gözükmelidir:

LCD Görüntüleme Seçenekleri

LiquidCrystal kütüphanesinin kullanabileceğimiz 19 farklı fonksiyonu vardır. Bu fonksiyonların yazının konumunu değiştirme, ekran boyunca yazıyı kaydırma veya görüntüyü açıp kapatmak gibi işlevleri vardır. Şimdi bu fonksiyonları kısaca inceleyelim:

Arduino LCD Komutları

LiquidCrystal ( )

İşlevi Arduino&#;nun LCD&#;ye bağlanmak için kullandığı pinleri ayarlar. LCD&#;yi kontrol etmek için Arduino&#;nun dijital pinlerinden herhangi birini kullanabilirsiniz. Arduino pin numaralarını bu sırayla parantez içine koyunuz: LiquidCrystal (RS, E, D4, D5, D6, D7). RS, E, D4, D5, D6, D7 LCD pinleridir.

Örneğin, LCD pini D7&#;nin Arduino pin 12&#;ye bağlanmasını istediğinizi varsayalım. D7&#;nin yerine şu şekilde “12” koyunuz: LiquidCrystal (RS, E, D4, D5, D6, 12). Bu işlev, programın void setup () bölümünün önüne yerleştirilmelidir.

seafoodplus.info ( )

Bu işlev LCD&#;nin boyutlarını ayarlar. Programın void setup () bölümünde herhangi bir LiquidCrystal işlevinin önüne yerleştirilmelidir. Satır ve sütunların sayısı seafoodplus.info (sütunlar, satırlar) olarak belirtilir. 16×2 LCD için, seafoodplus.info (16, 2) kullanmanız gerekiyor ve 20×4 LCD için seafoodplus.info (20, 4) kullanmanız gerekiyor.

seafoodplus.info ( )

Bu işlev, LCD&#;de halihazırda görüntülenen herhangi bir metni veya veriyi siler. seafoodplus.info ( ) ile seafoodplus.info ( ) öğesini ve void loop ( ) bölümünde delay ( ) işlevini kullanırsanız, basit bir yanıp sönen metin programı oluşturabilirsiniz:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); } void loop() { seafoodplus.info("hello, world!"); delay(); seafoodplus.info(); delay(); }

Bu kodu Arduino&#;larınıza yüklediğinizde LCD ekranınız aşağıdaki gibi gözükecektir:

seafoodplus.info ( )

Bu işlev, imleci ekranın sol üst köşesine yerleştirir ve sonraki metni bu konuma yazdırır. Örneğin, aşağıdaki kod “hello, world!” metninin ilk üç harfini X ile değiştirir:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); seafoodplus.info("hello, world!"); } void loop() { seafoodplus.info(); seafoodplus.info("XXX"); }

Ekranınız şu şekilde gözükecektir:

seafoodplus.infosor ( )

Benzer, ancak seafoodplus.info ( ) &#;dan daha kullanışlıdır. Bu işlev, imleci (ve herhangi bir yazılı metni) ekranın herhangi bir yerine yerleştirir. Programınızın void setup ( ) veya void loop ( ) bölümünde kullanılabilir.

İmleç konumu, seafoodplus.infosor (sütun, satır) ile tanımlanır. Sütun ve satır koordinatları sıfırdan başlar (sırasıyla ve ). Örneğin, yukarıdaki “hello, world!” programının void setup ( ) bölümünde seafoodplus.infosor (2, 1) kullanılarak, “hello, world!” alt satıra yazdırılır ve sağa iki alan kaydırılır.

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); seafoodplus.infosor(2, 1); seafoodplus.info("hello, world!"); } void loop() { } 

Yukarıdaki kodu Arduino&#;ya yüklediğinizde ekranınız aşağıdaki gibi gözükecektir:

seafoodplus.info ( )

LCD&#;ye farklı tipte veri yazmak için bu işlevi kullanabilirsiniz, örneğin bir sıcaklık sensöründen okuma veya bir GPS modülünden gelen koordinatlar. Kendiniz oluşturduğunuz özel karakterleri yazdırmak için de kullanabilirsiniz. Programınızın void setup ( ) veya void loop ( ) bölümünde seafoodplus.info ( ) öğesini kullanabilirsiniz.

seafoodplus.info ( )

Bu işlev, LCD&#;ye metin yazdırmak için kullanılır. Programın void setup () bölümünde veya void loop () bölümünde kullanılabilir.

Harfleri ve sözcükleri yazdırmak için, metnin etrafına tırnak işaretleri (” “) yerleştirin. Örneğin; hello, world!’ü yazdırmak için yukarıda seafoodplus.info (“hello,world!”) kullanmıştık.

Sayıları yazdırmak için tırnak işaretleri gerekmez. Örneğin; &#;u yazdırmak için seafoodplus.info () yazabilirsiniz.

seafoodplus.info ( ); sayıları ondalık, ikili, onaltılık ve sekizlik bazlarda yazdırabilir. Örneğin:

  • seafoodplus.info (, DEC) “” yazar.
  • seafoodplus.info (, BIN) “” yazar.
  • seafoodplus.info (, HEX) “64” yazar.
  • seafoodplus.info (, OCT) “” yazar.

seafoodplus.info( )

Bu işlev görünür bir imleç oluşturur. İmleç, LCD&#;ye yazdırılacak bir sonraki karakterin altına yerleştirilmiş yatay bir çizgidir.

seafoodplus.infoor ( ) işlevi imleci kapatır. seafoodplus.info ( ) ve seafoodplus.infoor ( ) birçok metin giriş alanında gördüğünüze benzer yanıp sönen imleci yazdırmak için void loop ( ) bölümünde birlikte kullanılabilir.

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); seafoodplus.info("hello, world!"); } void loop() { seafoodplus.info(); delay(); seafoodplus.infoor(); delay(); }

Yukarıdaki kodu yüklediğinizde ekranınız şu şekilde gözükecektir:

İmleçler, seafoodplus.infosor ( ) işleviyle ekranın herhangi bir yerine yerleştirilebilir. Bu kod “hello, world!” deki ünlem işaretinin hemen altına yanıp sönen bir imleç yerleştirir:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); seafoodplus.info("hello, world!"); } void loop() { seafoodplus.infosor(12, 1); seafoodplus.info(); delay(); seafoodplus.infosor(12, 1); seafoodplus.infoor(); delay(); } 

seafoodplus.info ( )

Bu işlev, döngü başına yaklaşık milisaniyede bir yanıp sönen blok stili bir imleç oluşturur. Bunu void loop ( ) bölümünde kullanın. seafoodplus.infok ( ) işlevi yanıp sönen blok imlecini devre dışı bırakır.

seafoodplus.infoy ( )

Bu işlev, LCD ekrana yazdırılmış herhangi bir metin veya imleci açar. seafoodplus.infolay ( ) işlevi, LCD’nin belleğinden silmeden LCD’ye yazdırılan herhangi bir metni veya imleci kapatır.

Bu iki işlev, yanıp sönen bir metin efekti oluşturmak için void loop ( ) bölümünde birlikte kullanılabilir. Bu kod “hello, world!” metnini açıp kapatacak:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); seafoodplus.info("hello, world!"); } void loop() { seafoodplus.infoy(); delay(); seafoodplus.infolay(); delay(); }

seafoodplus.infoDisplayLeft ( )

Bu işlev, LCD&#;ye yazdırılan her şeyi alır ve sola taşır. Bunu takiben bir gecikme komutu ile void loop ( ) bölümünde kullanılmalıdır. İşlev, ilk karaktere geri dönmeden önce metni 40 alan sola taşır. Bu kod, &#;hello, world!&#; metnini, karakter başına bir saniyede olmak üzere sola taşır:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); seafoodplus.info("hello, world!"); } void loop() { seafoodplus.infoDisplayLeft(); delay(); }

seafoodplus.infoDisplayRight( )

Bu işlev, seafoodplus.infoDisplayLeft ( ) gibi davranır ancak metni sağa taşır.

seafoodplus.inforoll( )

Bu işlev bir metin dizisi alır ve dizinin karakter sayısının artışlarıyla sağdan sola kaydırır. Örneğin; 3 karakter uzunluğunda bir metin diziniz varsa, her adımda metni 3 alan sola kaydırır:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); } void loop() { seafoodplus.infosor(0, 0); seafoodplus.inforoll(); seafoodplus.info("ABC"); delay(); }

Bu kodu çalıştırdığınızda ekranınız aşağıdaki gibi gözükecektir:

seafoodplus.infoDisplay ( ) işlevleri gibi; metin, tekrarlanmadan önce en fazla 40 karakter uzunluğunda olabilir. İlk bakışta, bu işlev kullanışsız gözüküyor olabilir, ancak özel karakterlerle animasyon oluşturmak için çok yararlı olabilir.

seafoodplus.infoscroll( )

seafoodplus.infoscroll ( ), seafoodplus.inforoll ( ) işlevini kapatır. Kayan metin veya animasyon dizileri oluşturmak için void loop ( ) bölümünde seafoodplus.inforoll ( ) işlevinden önce veya sonra bu işlevi kullanabilirsiniz.

seafoodplus.infooLeft()

Bu işlev, metnin ekrana yazdırıldığı yönü ayarlar. Varsayılan mod, seafoodplus.infoRight ( ) komutunu kullanarak soldan sağa doğrudur, ancak metnin ters yönde yazılışının yararlı olduğu bazı durumlar bulabilirsiniz:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { seafoodplus.info(16, 2); seafoodplus.infosor(12, 0); seafoodplus.infooLeft(); seafoodplus.info("hello, world!"); } void loop() { }


seafoodplus.infoChar ( )

Bu komut kendi özel karakterlerinizi oluşturmanıza izin verir. 16×2 LCD&#;nin her bir karakterinin 5 piksel genişliği ve 8 piksel yüksekliği vardır. Tek bir programda 8 farklı özel karakter tanımlanabilir. Kendi karakterlerinizi tasarlamak için, özel karakterinizin ikili karakter matrisini LCD karakter jeneratöründen yapmanız veya kendiniz haritalamanız gerekir. Aşağıdaki kod bir derece sembolü (°) oluşturur:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); byte customChar[8] = { 0b, 0b, 0b, 0b, 0b, 0b, 0b, 0b }; void setup() { seafoodplus.infoChar(0, customChar); seafoodplus.info(16, 2); seafoodplus.info((uint8_t)0); } void loop() { }

Arduino Lcd i2c Kullanımı

Normal şartlarda arduino ile 16*2 lcd ekran kullanmak istersek, haberleştirmek için 8 adet kablo bağlamamız gerekiyor, devre şemasında göründüğü gibi.

Arduino lcd bağlantı

Bu durum devre şemasını karışık yapmakla kalmıyor projede yer sıkıntısına da neden oluyor. Aynı şekilde arduino da fazladan pin işgal etiği için proje yaparken diğer komponentlere pin yetersiz kalıyor. Bu sorunları çözmek için I2C haberleşme protokolü kullanılıyor. Lcd ekranda bu protokolü kullanabilmemiz için üretilmiş olan modüller mevcut. Bu modüler bazen lcd ekranın üzerinde lehimli olarak satılmakta bazen ise ayrıyeten satılmaktadır.

Lcd ekranı normalde 8 adet pin ile kullanırken, bu modül sayesinde 4 adet pin ile lcd ekranı kullanabiliyoruz. Bu pinler sırasıyla GND, VCC, SDA ve SCL  pinleridir.

Arduino ı2c modülü bağlantısı

Arduino modeline göre I2C pinleri farklılık gösterebilir, aşağıda bulunan tablodan bu pinleri öğrenebilirsiniz

Arduino türüSDA piniSCL pini
Arduino UnoA4A5
Arduino Mega2021
Arduino Leonardo23
Arduino Due2021
Arduino NanoA4A5

Arduino I2c Lcd Kütüphanesi kurulumu

Arduino ile ı2c modülü kullanabilmek için kütüphane yüklemeniz gerekiyor. Popüler kütüphanelerden birini sizin için eklemdim, indir butonuna basarak kütüphaneyi indirebilirsiniz.

İndirdiğiniz Kütüphaneyi arduino ide&#;ye eklemek için “Taslak > Library ekle > Zıp Kitaplığı Ekle…“ Segmelerini takip ederek kütüphane yöneticisini açalım.

Arduino Ide Taslak Menüsü

Açılan pencerede indirdiğiniz zıp dosyasını bulup seçin. Zıp dosyasını seçmeniz yeterli olacaktır, otomatik olarak kütüphane arduino ıde’ye eklenecektir.

Arduino Ide Kütüphane Çağırma Sayfası

Kütüphane dosyanız bu şekilde yüklendiği zaman sol alt köşede “yüklendi” yazısı çıkması gerekir.

Arduino Ide Arayüzü

Kütüphanenin yüklendiğinden emin olmak için manuel kontrol yapabilirsiniz.

Manüel kontrol nasıl yapılır bilmiyorsanız, Arduino ide&#;ye nasıl kütüphane yüklenir konulu blog yazımızıburdan okumanızı tavsiye ederim.

Arduino İle Lcd Ekrana Yazı Yazma

Arduino ı2c modülü devre şeması

Devre şemasındaki gibi bağlantıyı yapıp kütüphaneyi de yüklediyseniz, sırada lcd ekrana yazı yazmak var.

Lcd ekrana yazı yazmak için örnekteki kodu kullanabilirsiniz.

////// robotistan //// #include <LiquidCrystal_I2C_AvrI2C.h> LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2); void setup() { seafoodplus.info(); seafoodplus.infoght(); seafoodplus.infosor(0,0); seafoodplus.info("Hello, world!"); //İlk satıra yazalım seafoodplus.infosor(0,1); seafoodplus.info("Maker blog"); //İkinci satıra yazalım } void loop() { }

Yukarıdaki kodu çalıştırdığımızda İlk satıra Hello World, ikinci satıra ise Maker blog yazacaktır.

Ancak ilk çalıştırmada ekranda hiçbir şey gözükmemiş olabilir. I2c modülünün arka kısmında bulunan mavi renkli potansiyometreyle oynayarak ekranın kontrasını ayarlayıp ekranda yazının gözükmesini sağlayabilirsiniz.

Bütün bunları yapmanıza ramen ekranda hala bir şey gözükmüyor ise, kodda belirttiğimiz ı2c arabirimi yanlış olabilir.

I2c Lcd Arabirim Adresi Öğrenme

Genelde ı2c arabirimi 0x27 olarak gelmektedir, fakat bazen farklılık gösterebilir. Bu yüzden proje çalışmadı diye üzülmeyin.

Kendi modülünüzün arabirimini öğrenmeniz için alt tarafta bulunan kodu sizinle paylaştım. Kodu arduinoya yükleyerek serial monitörde ekranınızın arabirim adresini görebilirisiniz.

#include <Wire.h> boolean DeviceFound = false; byte error, address; void setup() { seafoodplus.info(); seafoodplus.info(); seafoodplus.infon("\nI2C Araniyor"); for(address = 0; address <= ; address++ ) { seafoodplus.inforansmission(address); error = seafoodplus.infonsmission(); if (error == 0) { seafoodplus.info("I2C cihaz bulundu. Adresi: 0x"); if (address<16) seafoodplus.info("0"); seafoodplus.infon(address,HEX); DeviceFound = true; break; } else if (error==4) { seafoodplus.info("Bilinmeyen hata olustu. Adres: 0x"); if (address<16) seafoodplus.info("0"); seafoodplus.infon(address,HEX); } } if (DeviceFound == false) seafoodplus.infon("Herhangi bir bagli I2C bulunamadi\n"); else seafoodplus.infon("Tamamlandi. Kolay gelsin.\n"); } void loop() { }

Kodu derledikten sonra arduinoya yükleyin ve serial monitörü açın. Bu işlemeri doğru yaptıysanız serial monitörünüz aynen bu şekilde gözükecektir.

Arduino serial monitör

Serial monitörde gördüğünüz 0x27 veya benzeri adresi Arduino kodunuzda LCD sınıfın tanımında örnekteki gibi yazmanız gerekecek.

// Parametreler: (Adres, LCD satır karakter sayısı, LCD satır sayısı) LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2);

Her şeyi doğru yaptıysanız ekranınıza yazı gözükecektir.

16×2 LCD ile yapabileceğiniz çok güzel şeyler var. Bu işlevlerden bazılarını birleştirmeyi denemenizi öneriyorum. 🙂 Sorularınızı sormaktan çekinmeyin lütfen. Görüşmek üzere.

Arduino Robotik Dersleri LM35 sıcaklık &#;l&#;&#;m&#;n&#; i2C LCD ekranda g&#;sterme.

hatice kahramanhatice kahraman


Ocak Arduino Başlangı&#; (11) 7 Okunma Sayısı:


Arduino Robotik Dersleri LM35 sıcaklık &#;l&#;&#;m&#;n&#; i2C LCD ekranda g&#;sterme.

Merhabalar arduino dostları. Bugün sizlerle birlikte Arduino UNO, I2C LCD ekran ve LM35 sensör kullanarak sıcaklık ölçme uygulaması yapacağıseafoodplus.infoi malzemeler:

Arduino UNO
Breadboard
16×2  I2C LCD Ekran
LM35

Bir ucu erkek diğer ucu dişi  jumper kablo.
Yukarıdaki malzemelerden 16x2 I2C LCD yi yurt içinde satış yapan internet sitelerinden alabileceğiniz gibi seafoodplus.info internet sitesinden aceleniz yok ise 10 ile 20 gün arasında alabilirsiniz.

LM35 sıcaklık sensörü, kullanarak makalede yapacaklarımızı uygulararak çok hassas ölçümler alabileceğiniz bir sıccaklık sensörüdüseafoodplus.info35 sensörümüz  25 °C’de  0,5 °C hassasiyete sahitir,LM35 sensörümüzün seafoodplus.infoğı olan aut bacağını Arduino’muzun analog girişinden bağlayarak LM35 ile  sıcaklık ölçümü çok hassas bir şekilde  Arduino Uno muzu kullanarak I2C LCD mize yazdırabiliriz.

 

Arduino Robotik Dersleri 11 LM35 sıcaklık ölçümünü i2C LCD ekranda gösterme.

LM35 in bacak bağlantı şeması yukarıdaki gibidir. 
LM35 i transistör ile karıştırmamak gerekiyor bunun için lütfen üzerinde LM35 yazısının olmasına dikka edelim. LM35 in , 2 numaralı bacağından sıcaklıkla doğru orantılı olacak şekilde LM35 bize  0 ile 1V arasında gerilim çıkışı vermektedir. Bildiğimiz gibi Arduino UNO’muzun analog girişleri, biz aksini belirtmediğimiz sürece V arasında voltaj değerleri vermektedir.
Eğer analog giriş aralığımızı V arasında bırakırsak, sensörümüz LM35 in hassasiyet kabiliyetinin %80’lik kısmı boşa gitmiş olacak. LM35 in bu kaybını  engellemek için Arduino’muzun analog ölçümünü 0 ile 1,1V arasında yapacak şekilde Arduino UNO muzu ayarlamamız gerekiyor.

Öncelikle devremizi kuralım:
İ2c pinleri ——- Arduino pinleri
VCC                           5 VOLT
GND                          GND
SCL                            SCL
SDA                           SDA
Arduino Robotik Dersleri LM35 sıcaklık ölçümünü i2C LCD ekranda gösterme.

Kodumuz:

#include <LiquidCrystal_I2C.h> int lm35Pin = A0; LiquidCrystal_I2C lcd(0x27,16,2); void setup() { seafoodplus.info(16, 2); analogReference(INTERNAL); seafoodplus.info("Sicaklik Olcumu:"); pinMode(10,OUTPUT);//Ledimiz için Arduino Uno nun 10 numaralı bacağını ÇIKIŞ olarak ayarlıyoruz. pinMode(A0,INPUT);//Lm35 için Arduino nun A0 pinini GİRİŞ Olarak ayarlıyoruz. } void loop() { int sicaklikVolt = analogRead(lm35Pin); float sicaklikC =sicaklikVolt / ; seafoodplus.infosor(0, 1); seafoodplus.info(sicaklikC); seafoodplus.infosor(6,1); seafoodplus.info("\C"); delay(); if(sicaklikC>25) { digitalWrite(10,HIGH); } else { digitalWrite(10,LOW); } }

 

I2C LCD kütüphanemizi indirmek için aşağıdaki linke tıklayarak I2C LCD kütüphanesini indirip Arduino derleyicinin Libraries klasörünin altın atmalısınız.
İ2C bağlantılı LCD ekranlar diğer ekranlara göre daha sade devreler oluşturmamızı sağlar.
ancak i2c LCD de bazen aşağıdaki sorunlarla kaşılaşseafoodplus.infoıdaki kodu I2C LCD bağlı arduinoya bağladık ancak ekrana yazılar gelmedi ise aşağıdakileri sırasıyla deneyelim.
1-) i2c LCD de Ekran siyah koyu gözüküyor yazılar gözükmüyor ise; i2c LCD nin arka yüzünde i2c LCD nin ekran kontrastını ayarlayan trimpot var onu saatin tersi yönünde yavaş yavaş çeviriniz.
2-) i2c LCD de Ekran açık renk  gözüküyor yazılar gözükmüyor ise; i2c LCD nin arka yüzünde i2c LCD nin ekran kontrastını ayarlayan trimpot var onu saat yönünde yavaş yavaş çeviriniz.
3-) Yukarıdakileri denediniz ancak yine yazılar gözükmüyor ise LiquidCrystal_I2C lcd(0x27, 16, 2); satıırındaki 0x27 değerini 0x3f olarak değiştirin yani yeni satır
LiquidCrystal_I2C lcd(0x3f, 16, 2);  olmalı.

Arduino derleyicinin setup fonksiyonumuzda bulunan analogReference(INTERNAL); komutu, Arduino’muzun analogda dijitale çeviricisinin 1,1V referans voltajı kullanmasını sağlıyordu. Bu sayede, Arduino UNO muzun analog girişten okuyacağımız arası değerlerin her bir basamağı 1, mV (milivolt) gerilime denk düşüyor. LM35 sıcaklık sensörünün çıkış bacağında okuduğumuz her 10 mV, 1 °C sıcaklığa denk geldiğinden; 10 / 1, bize yaklaşık olarak 9,31 değerini verir. Bu demek oluyor ki, Arduino UNO nun analog girişinden  ölçtüğümüz değeri 9,31 ile çarptığımızda, elde ettiğimiz sonuç sensörün verdiği çıkış geriliminin santigrat cinsinden değerini elde ediyoruz.
seafoodplus.infosor(0,1) komutu,I2C LCD ekranımızın 1 numaralı satırının (ilk satır 0 olarak kabul edilir, yani 1 numaralı satır alt satır olmuş oluyor) 0’ıncı karakterine istediğimiz sonucu yazmamızı sağlıyor. Aynı şekilde ##.## şeklindeki sıcaklık değeri 5 karakter yer tuttuğu için bir karakter boşluk vererek 6’ıncı karaktere de santigrat derece sembolünü koyuyoruz (°C). Eğer sıcaklık ölçümü çok hızlı değişiyorsa, delay() komutunun alacağı parametre ile her bir ölçüm arasındaki süreyi arttırarak daha sabit bir değer elde edebiliriz.

arduino uno lm35 ısı sıcaklık sens&#;r&#;


Yeni makale yazmak, silmek ve düzenlemek için giriş yapınız.

Giriş Yap

Misafir kullanıcı olarak sorularınızı aşağıya yazabilirsiniz.

Yorum:

Blog Arama

Arduino nano i2c lcd bağlantısı. LCD ekran LCM'yi I2C ile Arduino'ya bağlama. Sembollerin kolay oluşturulması için program

// Gülümseme Sembolü Bit Maskesi bayt gülümseme = ( B, B, B, B, B, B, B, ); LiquidCrystal_I2C lcd (0x27,20,4); // Ekranın adresini ve boyutunu ayarlayın. geçersiz kurmak() (seafoodplus.info(); // lcd'yi başlat seafoodplus.infoght(); // arka ışığı aç// 0 numaralı sembol oluştur seafoodplus.infoChar(1, gülümse); seafoodplus.infosor(0, 0); // İmleci 1. satırın başına getirin seafoodplus.info("\1"); // Gülen yüzü göster (karakter numarası 1) - "\1") geçersiz döngü () { }

Sembollerin kolay oluşturulması için program

Yorumlarda, bir topluluk üyesi bir karakter oluşturucunun bağlantısını bıraktı

  • FC modülü, 8 bitlik bir kaydırma yazmacı olan PCFT yongasını temel alır. seri otobüs I2C. Şekilde, mikro devre DD1 olarak belirlenmiştir.
  • R1 - LCD ekranın kontrastını ayarlamak için düzeltici.
  • Jumper J1, ekranın arka ışığını açmak için kullanılır.
  • 1…16 pinleri modülü LCD ekranın pinlerine bağlamak için kullanılır.
  • Cihazın I2C adresini değiştirmek için A1 A3 kontak pedleri gereklidir. Uygun jumperları lehimleyerek cihazın adresini değiştirebilirsiniz. Tablo, adresler ve jumper'lar arasındaki yazışmayı göstermektedir: "0", bir açık devreye karşılık gelir, "1" - bir jumper takılıdır. Varsayılan olarak, 3 jumper'ın tümü açıktır ve cihaz adresi 0x27.

2 Arduino'ya LCD ekran için bağlantı şeması I2C protokolü aracılığıyla

Modül, I2C veri yolu için standart olarak Arduino'ya bağlanır: modülün SDA çıkışı analog bağlantı noktası A4'e bağlanır, SCL çıkışı Arduino'nun analog bağlantı noktası A5'e bağlanır. Modül, Arduino'dan +5 V ile güçlendirilmiştir. Modülün kendisi 1…16 pinleri ile LCD ekrandaki karşılık gelen 1…16 pinlerine bağlanır.


3 İş için kitaplık I2C protokolü aracılığıyla

Şimdi I2C arayüzü üzerinden LCD ile çalışmak için bir kütüphaneye ihtiyacımız var. Örneğin bunu kullanabilirsiniz ("Örnek kodu ve kitaplığı indir" satırındaki bağlantı).

indirilen arşiv LiquidCrystal_I2Cvrar bir klasöre sıkıştırmayı aç \kütüphaneler\ Arduino IDE dizininde bulunan .

Kitaplık, LCD ekranlar için bir dizi standart işlevi destekler:

İşlevAmaç
Likit kristal()LiquidCrystal türünde bir değişken oluşturur ve ekran bağlantı parametrelerini (pin numaraları) kabul eder;
başlamak()LCD ekranın başlatılması, parametrelerin ayarlanması (satır ve sembol sayısı);
açık()ekranı temizlemek ve imleci orijinal konumuna döndürmek;
ev()imlecin başlangıç ​​konumuna dönmesi;
setİmleç()imleci belirli bir konuma ayarlamak;
yazmak()karakteri LCD ekranda görüntüler;
Yazdır()LCD ekranda metni görüntüler;
imleç()imleci gösterir, yani sonraki karakterin altını çizerek;
noCursor()imleci gizler;
Göz kırpmak()imleç yanıp sönüyor;
noBlink()yanıp sönmeyi iptal et;
görüntü yok()görüntülenen tüm bilgileri kaydederken ekranı kapatma;
Görüntüle()görüntülenen tüm bilgileri kaydederken ekranı açmak;
kaydırmaDisplaySol()ekran içeriğinin 1 pozisyonu sola kaydırılması;
scrollDisplayRight()ekran içeriğinin 1 konumu sağa kaydırılması;
Otomatik kaydırma()otomatik kaydırmayı etkinleştir;
noAutoscroll()otomatik kaydırmayı kapatın;
soldan sağa()metin yönünü soldan sağa ayarlar;
sağdan sola()sağdan sola metin yönü;
karakter oluştur()LCD ekran için özel bir sembol oluşturur.

4 Metin çıktısı için eskiz I2C veri yolu üzerinden LCD ekrana

Örneği açalım: Dosya Örnekleri LiquidCrystal_I2C Özel Karakterler ve biraz değiştirelim. Sonunda yanıp sönen bir karakter olacak bir mesaj gösterelim. Çizimin tüm nüansları, kodun yorumlarında yorumlanmıştır.

#Dahil etmek

Bu arada, komut tarafından yazılan karakterler seafoodplus.infoChar(); güç kapatıldıktan sonra bile ekran belleğinde kalır. ekranının ROM'una yazılır.

5 Kendi sembollerinizi oluşturma LCD ekran için

LCD ekranlar için kendi sembollerinizi oluşturma konusuna daha yakından bakalım. Ekrandaki her karakter 35 noktadan oluşur: 5 geniş ve 7 yüksek (altı çizgi için +1 yedek satır). Yukarıdaki çizimin 6. satırında 7 sayıdan oluşan bir dizi tanımlıyoruz: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). Onaltılık sayıları ikiliye çevirelim: {, , , , , , } . Bu sayılar, karakterin 7 satırının her biri için bit maskelerinden başka bir şey değildir; burada "0" bir açık noktayı ve "1" karanlık bir noktayı belirtir. Örneğin bitmask olarak verilen bir kalp sembolü şekildeki gibi ekranda belirecektir.

6 LCD kontrol I2C veri yolu aracılığıyla

Krokiyi Arduino'ya yükleyin. Belirttiğimiz yazı, sonunda yanıp sönen bir imleç ile ekranda görünecektir.


7 arkasında ne var I2C veri yolu

Bir bonus olarak, LCD ekranda "A", "B" ve "C" Latin karakterlerinin çıktısının zamanlama şemasını düşünün. Bu karakterler ekranın ROM'unda saklanır ve adresleri ekrana iletilerek ekranda görüntülenir. Diyagram, ekranın RS, RW, E, D4, D5, D6 ve D7 çıkışlarından alınmıştır, yani. FC "I2C paralel veri yolu" dönüştürücüsünden sonra. "Demir"in biraz "derine" daldığımızı söyleyebiliriz.


LCD ekranda "A", "B" ve "C" Latin karakterlerini görüntülemek için zamanlama şeması

Diyagram, ekran ROM'unda bulunan karakterlerin (veri sayfasının sayfasına, aşağıdaki bağlantıya bakın) ilki tablo sütun numarasını ve ikincisi satır numarasını belirleyen iki parça halinde iletildiğini gösterir. Bu durumda, veriler hat üzerindeki sinyalin kenarı boyunca "mandallanır". E(Etkinleştir) ve satırı RS(Kayıt seçimi, kayıt seçimi) mantıksal bir durumda, yani veri aktarımı. RS satırının düşük durumu, her karakterin iletilmesinden önce gördüğümüz talimatların iletilmesi anlamına gelir. Bu durumda, LCD ekranın (0, 0) konumuna satır başı talimatının kodu iletilir, bu da incelenerek de bulunabilir. Teknik Açıklama Görüntüle.

Ve bir örnek daha. Bu zamanlama şeması, LCD'deki Kalp sembolünün görüntüsünü gösterir.


Yine, ilk iki dürtü etkinleştirme talimatlara uymak Ev()( 2) - satır (0; 0) konumuna dönüş ve ikinci iki - bellek hücresi 3'te saklanan LCD ekrana çıktı 10 ( 2) "Kalp" sembolü (talimat seafoodplus.infoChar(3, kalp); kroki).

LCD ekran- arduino projelerinde sık sık misafir olur. Ama içinde karmaşık şemalarçok pinli bir shield bağlama ihtiyacından dolayı yeterli Arduino portuna sahip olamama problemimiz olabilir. Bu durumda çıkış yolu olabilir I2C/IIC için neredeyse standart bağlanan bir adaptör Arduino kalkanı 'den Uno, Nano veya Mega kartlara sadece 4 pimli. Bu yazımızda, bir I2C arayüzü ile bir LCD ekranın nasıl bağlanacağını, hangi kütüphanelerin kullanılabileceğini, kısa bir eskiz örneği yazılacağını ve tipik hataların analizini göreceğiz.

Sıvı kristal ekran LCD dır-dir iyi seçimçeşitli projelerde karakter dizileri çıktısı almak için. Ucuzdur, farklı arka ışık renkleri ile çeşitli modifikasyonlar vardır, Arduino eskizleri için hazır kütüphaneleri kolayca indirebilirsiniz. Ancak bu ekranın en büyük dezavantajı, ekranın en az 6'sı zorunlu olmak üzere 16 dijital pine sahip olmasıdır. LCD ekran i2c olmadan Arduino Uno veya Nano kartlarına ciddi sınırlamalar getirir. Yeterli kişi yoksa, bir Arduino Mega kartı satın almanız veya ekranı i2c üzerinden bağlamak da dahil olmak üzere kişileri kaydetmeniz gerekecektir.

LCD pinlerinin kısa açıklaması

LCD pinlerine daha yakından bakalım:

Sonuçların her birinin amacı vardır:

  1. Zemin GND;
  2. Güç kaynağı 5 V;
  3. Monitör kontrastını ayarlama;
  4. Komut, veri;
  5. Veri yazma ve okuma;
  6. etkinleştirme;

Veri hatları;

  1. Artı arka ışık;
  2. Eksi arka ışık.

Ekran özellikleri:

  • Sembolik gösterim tipi, sembol yüklemek mümkündür;
  • LED ışıklar;
  • Denetleyici HD;
  • Besleme gerilimi 5V;
  • 16x2 karakterleri biçimlendirin;
  • C ile +70C arasında çalışma sıcaklığı aralığı, C ile +80C arasında depolama sıcaklığı aralığı;
  • Görüş açısı derece.

i2C'siz LCD'den Arduino kartına bağlantı şeması

Bir monitörü doğrudan I2C'siz bir Arduino mikro denetleyicisine bağlamak için standart şema aşağıdaki gibidir.

Bağlanacak kontakların çok sayıda olması nedeniyle gerekli elemanları bağlamak için yeterli alan olmayabilir. I2C kullanmak, kablo sayısını 4'e ve meşgul pin sayısını 2'ye düşürür.

Arduino için LCD ekranlar ve kalkanlar nereden satın alınır?

LCD ekran (ve versiyonu) oldukça popülerdir, bu nedenle hem yerel çevrimiçi mağazalarda hem de yabancı sitelerde kolayca bulabilirsiniz. İşte en uygun seçeneklere bazı bağlantılar:

I2C protokolünün açıklaması

Bir ekranı bir i2c adaptörü aracılığıyla bir arduinoya bağlamayı tartışmadan önce, kısaca i2C protokolünün kendisinden bahsedelim.

I2C / IIC(Inter-Integrated Circuit), orijinal olarak iletişim için oluşturulmuş bir protokoldür. Entegre devreler elektronik bir cihazın içinde. Geliştirme Philips'e aittir. i2c protokolü, kontrol elektroniğindeki blokları bağlamak için gerekli olan 8 bitlik bir veri yolunun ve aynı kablolar üzerinden birkaç cihazla iletişim kurabileceğiniz bir adresleme sisteminin kullanımına dayanmaktadır. Veri paketlerine istenen öğenin tanımlayıcısını ekleyerek verileri bir veya başka bir cihaza aktarıyoruz.

en basit devre I2C, bir ana (çoğunlukla bir Arduino mikro denetleyicisi) ve birkaç bağımlı (örneğin bir LCD ekran) içerebilir. Her cihazın 7 ila aralığında bir adresi vardır. Aynı şemada aynı adrese sahip iki cihaz olmamalıdır.

Arduino kartı, donanımda i2c'yi destekler. Bu protokolü kullanarak cihazları bağlamak için A4 ve A5 pinlerini kullanabilirsiniz.

I2C ile çalışmanın birkaç avantajı vardır:

  • Çalışma için sadece 2 hat gereklidir - SDA (veri hattı) ve SCL (saat hattı).
  • Çok sayıda önde gelen cihazın bağlantısı.
  • Geliştirme süresini azaltmak.
  • Tüm cihaz setini kontrol etmek için sadece bir mikrodenetleyici gereklidir.
  • Bir veriyoluna bağlı olası mikro devre sayısı yalnızca maksimum kapasite ile sınırlıdır.
  • Devrelere yerleştirilmiş özel bir aşırı gerilim bastırma filtresi sayesinde yüksek düzeyde veri güvenliği.
  • Ortaya çıkan arızaları teşhis etmek için basit prosedür, hızlı sorun giderme.
  • Veri yolu zaten Arduino'nun kendisine entegre edilmiştir, bu nedenle ek bir veri yolu arayüzü geliştirmeye gerek yoktur.

Kusurlar:

  • Hat üzerinde kapasitif bir sınır var - pF.
  • Veri yolunda birkaç farklı cihaz varsa I2C kontrolörünü programlama zorluğu.
  • Çok sayıda cihazla, bunlardan biri yanlış bir şekilde düşük seviye durumu ayarlarsa bir arızanın yerini tespit etmek zorlaşır.

LCD Arduino için i2c modülü

En hızlı ve uygun yol arduino'da i2c ekran kullanmak, yerleşik protokol desteğine sahip hazır bir ekranın satın alınmasıdır. Ama bu ekranlar çok fazla değil ve ucuz değiller. Ancak çok sayıda çeşitli standart ekran zaten piyasaya sürüldü. Bu nedenle, bugün en uygun fiyatlı ve popüler seçenek, şuna benzeyen bir adaptör olan ayrı bir I2C modülü satın almak ve kullanmaktır:

Modülün bir tarafında, veri aktarımı için toprak, güç ve 2 i2c pinlerini görüyoruz. Diğer adaptörde harici güç konektörlerini görüyoruz. Ve elbette, kartın üzerinde modülün standart ekran pimlerine lehimlendiği birçok pim var.


Arduino kartına bağlanmak için I2c çıkışları kullanılır. Gerekirse, aydınlatma için harici bir güç kaynağı bağlayın. Yerleşik düzeltici ile ayarlanabilir kontrast değerlerini ayarlayabiliriz J

Piyasada, önceden lehimlenmiş adaptörlere sahip LCD modüllerini bulabilirsiniz, kullanımları maksimum düzeyde basitleştirilmiştir. Ayrı bir adaptör satın aldıysanız, modüle önceden lehimlemeniz gerekecektir.

LCD ekranı I2C ile Arduino'ya bağlama

Bağlanmak için Arduino kartının kendisine, bir ekrana, bir devre tahtasına, bağlantı kablolarına ve bir potansiyometreye ihtiyacınız var.

Özel bir ayrı i2c adaptörü kullanıyorsanız, önce onu ekran modülüne lehimlemeniz gerekir. Orada bir hata yapmak zordur, böyle bir şema tarafından yönlendirilebilirsiniz.


i2c özellikli bir LCD monitör, dört kablo kullanılarak karta bağlanır - iki kablo veri için, iki kablo güç için.

  • GND pini kart üzerindeki GND'ye bağlanır.
  • VCC pini 5V'dir.
  • SCL, A5 pinine bağlanır.
  • SDA, A pinine bağlanır.

Ve hepsi bu! Kafanın karışması çok kolay olan tel örümcek ağı yok. Aynı zamanda, i2C protokolünün uygulanmasının tüm karmaşıklığını kütüphanelere emanet edebiliriz.

i2c LCD ekranla çalışmak için kitaplıklar

Arduino'yu LCD ile I2C veri yolu üzerinden arayüzlemek için en az iki kütüphaneye ihtiyacınız olacak:

  • I2C ile çalışmak için Wire.h kitaplığı şurada zaten mevcuttur: standart program Arduino IDE'si.
  • Monitörü I2C veri yolu üzerinden kontrol etmek için çok çeşitli komutlar içeren LiquidCrystal_I2C.h kitaplığı, çizimi daha kolay ve daha kısa yapmanızı sağlar. Ek olarak kitaplığı yüklemeniz gerekir Ekranı bağladıktan sonra, LiquidCrystal_I2C.h kitaplığını ek olarak kurmanız gerekir.

Gerekli tüm kütüphaneleri krokiye bağladıktan sonra bir nesne oluşturuyoruz ve tüm fonksiyonlarını kullanabiliyoruz. Test için örnekten aşağıdaki standart çizimi yükleyelim.

#Dahil etmek

LiquidCrystal_I2C kitaplığının işlevlerinin ve yöntemlerinin açıklaması:

  • home() ve clear() - ilk işlev, imleci ekranın başına döndürmenize izin verir, ikincisi de, ancak aynı zamanda daha önce monitörde olan her şeyi siler.
  • write(ch) - ekrana tek bir ch karakteri yazdırmanıza izin verir.
  • imleç() ve noCursor() - imleci ekranda göster/gizle.
  • yanıp sönme() ve noBlink() - imleç yanıp söner/yanıp sönmez (eğer ekranı daha önce etkinleştirilmişse).
  • display() ve noDisplay() - ekranı etkinleştirmenizi/devre dışı bırakmanızı sağlar.
  • scrollDisplayLeft() ve scrollDisplayRight() - ekranı bir karakter sola/sağa kaydırır.
  • autoscroll() ve noAutoscroll() - otomatik kaydırma modunu etkinleştirmenizi/devre dışı bırakmanızı sağlar. Bu modda, her yeni karakter ekranda daha önce yazılanların yerine aynı yere kaydedilir.
  • leftToRight() ve rightToLeft() - Görüntülenen metnin yönünü ayarlar - soldan sağa veya sağdan sola.
  • createChar(ch, bitmap) - Siyah beyaz noktalar oluşturmak için bir dizi bitmap bitmap kullanarak ch (0 - 7) kodlu bir karakter oluşturur.

i2c ekranıyla çalışmak için alternatif kitaplık

Bazı durumlarda, belirtilen kitaplığı PCF kontrolörleri ile donatılmış cihazlarla kullanırken hatalar meydana gelebilir. Bu durumda LiquidCrystal_PCFh kitaplığı alternatif olarak sunulabilir. LiquidCrystal_I2C'yi genişletir, bu nedenle onu kullanırken herhangi bir sorun olmamalıdır.

i2c lcd ekran bağlantı sorunları

Krokiyi yükledikten sonra ekranda hiçbir şey görmüyorsanız aşağıdaki adımları deneyin.

İlk olarak, monitörün kontrastını artırabilir veya azaltabilirsiniz. Kontrast ve arka ışık modu nedeniyle karakterler genellikle görünmez.

Bu işe yaramazsa, arka ışığın açık olup olmadığını, kontakların doğru bağlantısını kontrol edin. Ayrı bir i2c adaptörü kullandıysanız, kontakların lehimleme kalitesini tekrar kontrol edin.

Ekranda yazı olmamasının bir diğer yaygın nedeni de yanlış i2c adresi olabilir. Önce çizimdeki cihaz adresini 0x27 0x20'den 0x3F'ye değiştirmeyi deneyin. Farklı üreticilerin farklı varsayılan adresleri olabilir. Bu işe yaramazsa, bağlı tüm cihazları tarayan ve adreslerini kaba kuvvetle belirleyen i2c tarayıcı taslağını çalıştırabilirsiniz. Bir i2c tarayıcının örnek bir taslağı.

Ekran hala çalışmıyorsa, adaptörü lehimlemeyi ve LCD'yi normal şekilde bağlamayı deneyin.

Çözüm

Bu yazıda, karta boş pin kaydetmemiz gerektiğinde, karmaşık Arduino projelerinde LCD ekran kullanmanın ana konularını ele aldık. Basit ve ucuz bir i2c adaptörü, yalnızca 2 analog pin içeren bir LCD ekranı bağlamanıza izin verecektir. Birçok durumda bu çok önemli olabilir. Kolaylık için fiyat, ek bir modül kullanma ihtiyacıdır - bir dönüştürücü ve bir kitaplık. Kanaatimizce bu kolaylık olması açısından yüksek bir fiyat değil ve bu özelliğin projelerde kullanılmasını şiddetle tavsiye ediyoruz.

Her radyo amatörü belli bir miktar sonra basit ev yapımı sensörler ve düğmeler kullanarak büyük bir şey inşa etme hedefine ulaşır. Sonuçta, verileri ekranda görüntülemek, bağlantı noktası monitöründen çok daha ilginç. Ama sonra soru ortaya çıkıyor: hangi ekranı seçmeli? Ve genel olarak, nasıl bağlanır, bağlanmak için ne gerekir? Bu soruların cevapları bu makalede tartışılacaktır.

LCD

Ekranlar arasındaki birçok seçenek arasında, HD denetleyicisine dayalı LCD ekranı ayrıca belirtmek isterim. Bu ekran iki renkte mevcuttur: mavi zemin üzerine beyaz harfler, sarı zemin üzerine siyah harfler. LCD 'yi Arduino'ya bağlamak da yerleşik bir kütüphane olduğundan ve ekstra bir şey indirmenize gerek olmadığı için herhangi bir soruna neden olmaz. Ekranlar sadece fiyat açısından değil, aynı zamanda boyut olarak da farklılık gösterir. Radyo amatörleri genellikle 16 x 2, yani 2 satır 16 karakter kullanır. Ancak 20 karakterlik 4 satırın bulunduğu 20 x 4 de vardır. LCD ekranının Arduno'ya bağlanmasında boyutlar ve renk herhangi bir rol oynamaz, aynı şekilde bağlanırlar. Görüş açısı 35 derece, ekran tepki süresi ms'dir. ila 70 santigrat derece arasındaki sıcaklıklarda çalışabilir. Çalışma sırasında ekran için 4 mA, arka ışık için mA kullanır.

Nerede kullanılır?

Bu ekranın popülaritesi sadece radyo amatörleri arasında değil, aynı zamanda büyük üreticiler arasında da var. Örneğin yazıcılar, kahve makineleri de LCD kullanır. Bu, düşük fiyatı nedeniyle, Çin sitelerinde bu ekranın maliyeti ruble. Mağazalarımızda bu teşhirin marjları çok yüksek olduğu için oradan satın almaya değer.

Arduino'ya bağlanma

LCD 'yi Arduino Nano ve Uno'ya bağlamak da farklı değil. Ekranla iki modda çalışabilirsiniz: 4 bit ve 8. 8 bitlik bir ekranla çalışırken, hem düşük hem de yüksek bitler kullanılır ve 4 bitlik bir ekranla yalnızca düşük olanlar kullanılır. 8-bit ile çalışmanın özel bir anlamı yoktur, çünkü bağlanmak için 4 kontak daha ekleneceğinden, bu tavsiye edilmez, çünkü hız daha yüksek olmayacaktır, ekran güncelleme limiti saniyede 10 defadır. Genel olarak, lcd 'yi Arduino'ya bağlamak için çok sayıda kablo kullanılır, bu da bazı rahatsızlıklara neden olur, ancak özel kalkanlar vardır, ancak daha sonraları. Fotoğraf, ekranın Arduino Uno'ya bağlantısını gösterir:

Program kodu örneği:

#Dahil etmek

Kod ne yapar? Her şeyden önce, ekranla çalışmak için kitaplık bağlanır. Yukarıda bahsedildiği gibi, bu kütüphane zaten Arduino IDE'ye dahil edilmiştir ve ayrıca indirip kurmanıza gerek yoktur. Daha sonra pinlere bağlı olan kontaklar tanımlanır: sırasıyla RS, E, DB4, DB5, DB6, DB7. Ardından ekran boyutu ayarlanır. 16 karakter ve 2 satırlık bir versiyon ile çalıştığımız için bu tür değerleri yazıyoruz. İmleci ilk satırın başına getirip ilk metnimiz Hello World'ü gösteriyoruz. Ardından, imleci ikinci satıra getirin ve sitenin adını görüntüleyin. Bu kadar! LCD 'yi Arduino Uno'ya bağlamak düşünüldü.

I2C nedir ve neden gereklidir?

Yukarıda belirtildiği gibi, ekranı bağlamak çok fazla pin gerektirir. Örneğin, birden fazla sensör ve bir LCD ekran ile çalışırken kontaklar yeterli olmayabilir. Çoğu zaman, radyo amatörleri, çok fazla kişinin olmadığı Uno veya Nano sürümlerini kullanır. Sonra insanlar özel kalkanlarla geldi. Örneğin, I2C. Ekranı sadece 4 pin ile bağlamanızı sağlar. Bu iki kat daha az. I2C modülü, hem kendiniz lehimlemeniz gereken hem de LCD ekranına lehimlenmiş olarak ayrı satılır.

Bir I2C modülü ile bağlanma

LCD 'yi I2C ile Arduino Nano'ya bağlamak az yer kaplar, sadece 4 pin: toprak, güç ve 2 veri çıkışı. Arduino üzerinde sırasıyla 5V ve GND'ye güç ve toprak bağlantısı yapıyoruz. Kalan iki kontak: SCL ve SDA herhangi bir analog pime bağlanır. Fotoğrafta, bir I2C modülü ile lcd 'yi arduino'ya bağlamanın bir örneğini görebilirsiniz:

Program kodu

Modülsüz bir ekranla çalışmak için sadece bir kütüphane kullanmak gerekiyordu, sonra modül ile çalışmak için iki kütüphaneye ihtiyaç vardı. Bunlardan biri zaten Arduino IDE - Wire'da. Başka bir kitaplık olan LiquidCrystal I2C'nin ayrı olarak indirilmesi ve kurulması gerekir. Kütüphaneyi Arduino'ya kurmak için indirilen arşivin içeriği Kütüphaneler kök klasörüne yüklenmelidir. I2C kullanan örnek kod:

#Dahil etmek

Gördüğünüz gibi, kod neredeyse aynı.

Sembolünüzü nasıl eklersiniz?

Bu ekranlarla ilgili sorun, Kiril ve sembollerin desteklenmemesidir. Örneğin, yansıtabilmesi için ekrana bir karakter yüklemeniz gerekir. Bunu yapmak için, ekran en fazla 7 karakterinizi oluşturmanıza izin verir. Bir tablo hayal edin:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

0 ise - orada hiçbir şey yok, 1 ise - bu gölgeli bir alandır. Yukarıdaki örnekte "gülen surat" karakterinin yaratılışını görebilirsiniz. Arduino'da örnek bir program kullanarak şöyle görünecektir:

#Dahil etmek

Gördüğünüz gibi, bit maskesi tabloyla aynı şekilde oluşturuldu. Oluşturulduktan sonra, ekrana bir değişken olarak çıkarılabilir. Hafızada sadece 7 karakterin saklanabileceğini unutmayın. Prensip olarak, bu yeterlidir. Örneğin, derece sembolünü göstermek istiyorsanız.

Ekranın çalışmayabileceği sorunlar

Ekranın çalışmadığı zamanlar vardır. Örneğin, açılır, ancak karakterleri göstermez. Veya hiç açılmıyor. İlk önce, kişileri doğru şekilde bağlayıp bağlamadığınıza bakın. LCD 'yi I2C olmadan Arduino'ya bağladıysanız, kablolara dolanmak çok kolaydır, bu da neden olabilir. yanlış iş Görüntüle. Ayrıca, minimum kontrastta LCD 'nin açık olup olmadığı bile görülemeyeceğinden, ekran kontrastının artırıldığından da emin olmalısınız. Bu işe yaramazsa, sorun kontakların lehimlenmesinde olabilir, bu I2C modülünü kullanırken olur. Ayrıca yaygın neden ekranın çalışmayabileceği, I2C adresinin yanlış bir ayarıdır. Gerçek şu ki, birçok üretici var ve farklı bir adres belirleyebiliyorlar, burada düzeltmeniz gerekiyor:

LiquidCrystal_I2C lcd(0x27,16,2);

Parantez içinde iki değer görebilirsiniz, 0x27 ve (16, 2 ekran boyutudur ve 0x27 sadece I2C adresidir). Bu değerler yerine 0x37 veya 0x3F koymayı deneyebilirsiniz. Bir diğer sebep ise LCD 'nin hatalı olması. Arduino için neredeyse her şeyin Çin'de yapıldığını düşünürsek, satın alınan ürünün evlilik olmadığından % emin olamazsınız.

LCD 'nin Artıları ve Eksileri

LCD ekranın artılarını ve eksilerini düşünün.

  • Fiyat. Bu modül Çin mağazalarında çok uygun fiyata satın alınabilir. Fiyat ruble. Bazen bir I2C modülü ile birlikte satılır.
  • Bağlanması kolay. Muhtemelen bugünlerde kimse bir LCD 'yi I2C'siz bağlamıyor. Ve bu modül ile bağlantı sadece 4 pin alır, tellerin "ağları" olmayacaktır.
  • Programlama. Hazır kütüphaneler sayesinde bu modül ile çalışmak kolaydır, tüm fonksiyonlar zaten kayıtlıdır. Ve gerekirse, karakterinizi eklemek sadece birkaç dakikanızı alır.
  • Binlerce radyo amatörünün kullanımı sırasında, büyük eksiler tanımlanmadı, yalnızca Çin ekran seçeneklerinin kullanılması nedeniyle evlilik satın alma durumları var.

Bu makale, 'nin Arduino'ya nasıl bağlanacağını ele aldı ve ayrıca bu ekranla çalışmak için örnek programlar sağladı. Gerçekten kategorisinin en iyilerinden biri, binlerce radyo amatörünün projeleri için seçmesi boşuna değil!

Bu yazımda size LCD ekranı (2x16 / 20x4) ile kontrol etmek için I2C arayüz modülünün nasıl kullanılacağını göstereceğim. Arduino. Bu modül, 8 veya 4 bitlik bir bağlantı yerine kullanılan denetleyici pinlerinin sayısını azaltmanıza olanak tanır, yalnızca 2 pin gereklidir (SDA ve SCL).

Teknik özellikler

Ekran desteği: LCD 16×02 / 20×04
İsteğe bağlı: kontrast ayarı
Besleme gerilimi. 5V
arayüz: I2C
Boyutlar: 54mm x 19mm x 15mm

I2C arayüz modülü genel bilgileri

Arduino denetleyicilerindeki pin sayısı sınırlı olduğundan ve sıklıkla kullanıldığında çeşitli sensörler ve modüller tükenir, onları kaydetmeye ihtiyaç vardır, bu durumlar için bu modül geliştirilmiştir, onun yardımıyla iki kontak (SDA ve SCL) üzerinden iletim uygulamak mümkündür.

Şimdi modülün kendisi hakkında biraz, PCFT yongası üzerine inşa edilmiştir. SDA ve SCL hatlarını yukarı çekmek için R8 (4,7 kOhm) ve R9 (4,7 kOhm) dirençlerine ihtiyaç vardır, ideal olarak, iki veya daha fazla cihazı I2C veriyolu üzerinden bağlarken, yalnızca bir cihazda pull-up kullanmanız gerekir, I nedenini sonra yazarım Kart üzerinde üç adet jumper vardır (şemada A0, A1, A2 hatlarının R4, R5, R6 dirençleri üzerinden güce çekildiği görülmektedir), cihazın adreslemesini değiştirmek için gereklidir, toplam 8 seçenek vardır. Adreslemeyi değiştirmek bize PCFT yongası ile IC2 veri yolu üzerinden sekiz cihaza kadar bağlanma yeteneği verir, adres seçenekleri şekilde gösterilmiştir (varsayılan cihaz adresi 0x27'dir). Ayrıca modül, LCD ekranın kontrastını değiştirebileceğiniz bir potansiyometre R11 ile donatılmıştır.

Modülde bağlantı için üç grup kontak vardır:

İlk grup:
SCL: saat hattı (Seri SAAT)
SDA: veri hattı (Seri Dfta)
VCC: "+" güç
GND: "-" güç

İkinci grup:
VSS: "-" güç
VDD: "+" güç
VO: Kontrast kontrol çıkışı
RS: Kayıt seçimi
RW: Okuma/Yazma (toprağa bağlandığında yazma modu)
E: Etkinleştir (düşen flaş)
DB0-DB3: Arayüzün LSB'leri
DB4-DB7: Arayüzün yüksek bitleri
A: "+" arka ışık gücü
K: "-" arka ışık gücü

Üçüncü grup: (varsayılan olarak jumper ayarlanır)
VCC:
LCD'den A:

Arduino'ya bağlanma

Gerekli ayrıntılar:
Arduino UNO R3 x 1 adet
LCD ekran A (2×16, 5V, Mavi) x 1 adet.
LCD x 1 adet için arayüz modülü I2C, IIC, TWI.
DuPont tel, 2,54 mm, 20 cm, F-M (Dişi - Erkek) x 1 adet.
USB kablosu A-B x 1 adet

Bağ:
Öncelikle I2C modülünü LCD ekrana lehimleyin, ardından ekranı Arduino UNO'ya bağlamanız gerekir. Bunu yapmak için DuPont kablolarını kullanıyoruz, aşağıdaki tabloya göre bağlanıyoruz.

Açıklık için başka bir diyagram vereceğim.

Bu deney için "LiquidCrystal_I2C" kitaplığını indirip kurmanız gerekiyor. Ardından bu örnek kodu kopyalayıp Arduino IDE program penceresine yapıştırın ve denetleyiciye yükleyin.

/* Arduino IDE'de test edildi Test tarihi 09/15/ */ #Dahil etmek

Her şeyi doğru yaptıysanız ancak ekranda hiçbir sembol yoksa, potansiyometre ile kontrastı artırmayı deneyin.


Bağlantılar
Kitaplığı indir
Mikroçip Belgeleri
için belgeler

Aliexpress'ten satın alın

nest...

batman iftar saati 2021 viranşehir kaç kilometre seferberlik ne demek namaz nasıl kılınır ve hangi dualar okunur özel jimer anlamlı bayram mesajı maxoak 50.000 mah powerbank cin tırnağı nedir