HD44780'de LCD'de sürünen çizgi.
C'de çalışan hat için "hazır çözüm" arayışı herhangi bir sonuç vermedi. Bu yüzden kendim yapmak zorunda kaldım.
Bu kod "parçası", HD44780 denetleyici veya benzeri LCD ekranlarda, herhangi bir yerde ve herhangi bir sayıda tanıdık alanı kullanarak sürünen bir çizgiyi (sağdan sola) görüntülemenizi sağlar.
İlk söylenecek şey, C dilinin "doğrudan" dizelerle çalışmanıza izin vermediğidir. Yani, atama operatörünü kullanarak bir karakterin bir dizeden diğerine kopyalanması imkansızdır ( = ) ... bunun için özel bir işlev kullanmanız gerekir strncpy (). Genel olarak konuşursak, C'deki dizeleri işlemek için kullanılan birkaç işlev vardır. Bu işlevlerin Kendi Kendine Eğitmenler'de kullanımına ayrı bir bölüm ayrılmıştır. CV_AVR'deki Yardım'da, dizelerle çalışmaya yönelik işlevlerin açıklaması bölümde yer almaktadır. "Dize İşlevleri"... Bu işlevlerin prototipleri dosyadadır string.h.
"... orijinal satır ..." - "sürünen" satırda görüntülenmesini istediğiniz karakter satırı;
"... görüntülenen karakterler ..." gerçek sürünen çizgidir.
Sürünen çizgiyi düzenlemek için aşağıdaki algoritma seçildi:
1. Görüntülenen karakterler sağdan sola kaydırılır. Aşırı sol "kayıptır".
2. Kaydırmadan sonra, orijinal dizeden sonraki karakter en sağdaki karaktere kopyalanır.
3. Orijinal satırın sonuna ulaşıldığında, orijinal satırın ilk karakteri sonraki olur.
Karakterleri kaydırmak için - kaydırılan hücre için, karakter kodu HD44780 ekran RAM'inden (DDRAM) okunur ve soldaki RAM hücresine yazılır.
HD44780'deki Veri Sayfasına göre, üst satırın sol karakteri 0x00 DDRAM adresine sahip ve alt satırın sol karakteri 0x40'tır. Özel olarak ekran RAM'ine başvurmak için (ve karakter üreteci RAM'ine değil), RS bitinin 1'e eşit olması gerektiği unutulmamalıdır (RS, adres baytındaki en önemli bittir, bkz. Veri Sayfası).
Sonuç olarak, soldan üst satırın ikinci karakterini "adreslemek" için, adresle "çalışmak" gerektiğini anlıyoruz. 0x01 | 0x80 \u003d 0x81.
HD44780'in "dahili içeriğini" yazmak ve okumak için işlevler kitaplıkta (prototipler) lcd.h) .... bu nedenle ... programın kendisi:
/ * CV_AVR için Bu örnekte, kayan çizgi, 16 bitlik bir göstergenin alt satırının 8'den (0xC7) 16'sına kadar olan rakamlarla görüntülenir. . ...... #Dahil etmek işaretsiz karakter n_sim \u003d 1, m_end \u003d 43; // 43 - örnekteki satır uzunluğu beg_stroka () ( // sürünen çizgiyi kaydır eğer (beg_str) ( // sonraki karakteri en sağdaki konuma yaz lcd_gotoxy (15,1); |
Sözlük: n_sim - kaynak dizedeki geçerli karakterin konumuna işaretçi; m_end, kaynak dizedeki toplam karakter sayısıdır; beg_str - biraz "müsaadeli" kayma. "Koşu" hızını ayarlamak için kullanılabilir; ish_str orijinal dizedir. |
Büyük olasılıkla, mevcut C derleyicilerinin her biri, HD44780 ile çalışmak için kitaplık işlevlerine sahiptir. Bu nedenle, "sizin" derleyiciniz için programı "yeniden yapmak" zor olmayacaktır.
İyi bilinen "HD44780.exe" yardımcı programını kullanarak orijinal satırı "hazırlıyorum". Bunu kullanırken yorumlarda satır uzunluğu belirtilir: "/ * Maksimum satır uzunluğu: 43 bayt * /"
QAPASS LCD 1602, Rusça yazı tipini desteklemez, ancak Kiril alfabesini kendi sembollerinizi oluşturarak Arduino üzerinde görüntüleyebilirsiniz. Arduino LCD ekran üzerinde Kiril alfabesiyle herhangi bir sembol ve harfin nasıl yapılacağını düşünelim. Bunu yapmak için, değişkeni çizimde kullanmamız gerekir. bayt ve işlev lcd.createChar ()... Hemen, işaretler için Arduino'daki bellek miktarının yalnızca sekiz karakterle sınırlı olduğunu not ediyoruz.
Karakterinizi LCD 1602'de nasıl görüntülersiniz?
Karakter üretme tablosu (CGROM), sembolünüzün veya Kiril harfinin ekranda görüntülenmesine yardımcı olacaktır. Arduino'daki bu tür bellek, CGRAM gibi kendi sembollerini saklayabilir, ancak bellek boyutu sınırlıdır ve yalnızca 8 yerel sembolü tutabilir. Bir ev hava durumu istasyonu oluşturmak için kullanışlı olan standart olmayan sembollerden biri derece işaretidir. Bir sembol çizelim.
Önce bir kağıt parçası alın ve üzerine 5 sütun ve 8 satırlık bir tablo çizin. Ardından, ekranda vurgulanması gereken tablodaki hücreleri gölgeleyin (yukarıdaki fotoğrafa bakın). Bunun nedeni, ekrandaki her karakterin piksellerden oluşmasıdır (5 piksel genişlik ve 8 piksel yükseklik). Daha sonra, sembolümüzü sekiz öğeden - sekiz satırdan oluşan bir veri dizisi olarak temsil ederiz.
LCD 1602'de kendi sembolümüzü sergiliyoruz
Ders için aşağıdaki ayrıntılara ihtiyacımız var:
- arduino Uno / Arduino Nano / Arduino Mega kartı;
- LCD monitör 1602;
- baba-anne kabloları.
LCD ekran, I2C aracılığıyla dört “klasörden ana” kabloyla bağlanır - 2 veri kablosu ve 2 güç kablosu. Bir Ardiuno UNO ekranı bağlarsanız, aşağıdaki diyagramı kullanın - çıktı SDA A4 portuna bağlanır, pin SCL - A5 ve iki güç kablosuna - GND ve 5V. QAPASS 1602, I2C veriyolu üzerinden Arduino Mega'ya bağlanırsa, kartta karşılık gelen bağlantı noktaları bulunur - SDA ve SCL.
LCD I2C'de bir karakter oluşturmak için çizim
#Dahil etmekKod için açıklamalar:
- bayt dizisini kullanarak simvol \u003d (); daha önce çizdiğimiz derece işaretini bir kağıda şifreledik;
- lcd.createChar (num, data) işlevi; parantezlerin gösterdiği LCD için özel bir karakter oluşturur num - sembol numarası ve veri - dizi hakkındaki veriler.
- dizideki her satır 0b - "sıfır" ve büyük "b" ile başlar.
LCD 1602'de Rusça yazı tipinin görüntülenmesi
QAPASS ekranı 5'e 8 pikselde 8 yeni karakteri (0'dan 7'ye numaralandırılmış) destekler. Sembol gibi Kiril harfleri, karşılık gelen dizeyi karakterize eden sekiz baytlık bir dizi olarak belirtilebilir. 8 karaktere kadar ekleyebilirsiniz, bu nedenle örnekte olduğu gibi çıktıda Latin ve Kiril harflerinin bir kombinasyonunu kullanın. "Ben bir siteyim" etiketli bir çizim yükleyin
LCD I2C'de Rusça harflerle eskiz
#Dahil etmekKod için açıklamalar:
- Bayt işlevindeki dizge dizileri simvol \u003d (); bir dizeye yazılabilir;
- Kelime İnternet sitesi bir dizi Rus ve Latin harf kullanır.
- Void loop () prosedürü çizimde kullanılmaz, ancak yine de mevcuttur.
Her yıl mağaza tabelalarına, sokaklara ve geçitlere panolar yerleştirilerek reklam kayıtlarını metin biçiminde yansıtır. Panellerdeki ışıklar farklı şekillerde yanar: çizgiler yukarı, aşağı, sağa ve sola hareket eder. Parlayan resimler de önemlidir.
Yoldan geçenler bu tür aksesuarları göz ardı etmeyecektir. Birçok acemi elektronik mühendisi, bu tasarımın nasıl çalıştığı ve onu yaratmak için neyin gerekli olduğu ile ilgileniyor. Ürün evde kolaylıkla yapılır. Makale, elektronik cihazların acemi amatörünü, Arduino'nun ana bileşen olarak kullanıldığı sürünen hattın ilkeleri hakkında bilgilendirecek.
Arduino üzerindeki sürünen hat, Arduino mikrodenetleyicisine dayanan elektronik bir üründür. Cihazın çalışma alanı ledlerle kaplıdır. Temel amaç, görüntüleri ve metin mesajlarını yayınlamaktır. Veriler statik veya hareketli olabilir.
Işık dizeleri modüller kullanılarak oluşturulur. Varsayılan boyut 32x16 cm'dir Çalışma yüzeyi için tasarlanan alan doğrudan modül sayısının oranına ve boyutlarına bağlıdır.
Ek olarak, çizgiye resmi kontrol etme görevi olan bir kontrolör yerleştirilir. Cihaz çevrimdışı çalışıyor. Bir metin mesajını veya bir resmi değiştirmek için, kayan çizgi bilgisayara bağlanır. Alüminyum profil tüm yapıyı tutar.
Arduino'da renge göre 2 tip sürünen çizgi vardır:
- Tek renkli veya düz renk.
- Çeşitli tonlar - genellikle 8 renk, siyah arka plan da buraya dahildir.
Çoğu insan en yoğun olduğu için kırmızıyı tercih eder. Ayrıca beyaz daha az popüler değil. Beyaz ışıklar siyah bir arka plan üzerinde parlak bir şekilde parlarsa metin daha temiz görünür.
Kullanıcı tüm verileri mikro denetleyici belleğine yerleştirir. Bir resmi veya satırı güncellemenin birkaç yöntemi vardır:
- Temel - USB kablosuyla. Arduino mikroişlemcisi bir USB bağlantı noktası üzerinden bir bilgisayar cihazına bağlanır. Geliştirici bilgisayardan program kodunu mikroişlemcinin belleğine aktarır.
- LAN kablosuyla ağ üzerinden. Yöntem, elektronik hattı sürekli güncelleyen kullanıcılar için sağlanmıştır. Bağlantı tekniği önceki noktaya benzer.
Türüne göre, iç ve dış mekan kullanımı için yapılmış basamaklar vardır. Sokakta olanlar yağmur suyunun LED'lere girmesini önlemek için genellikle özel bir vizörle korunur.
Gerekli araç ve gereç seti
Aşağıda, Arduino üzerinde yanan ışıklar inşa etmek için gerekli olacak araçların ayrıntılı bir açıklamasını içeren bir tablo bulunmaktadır.
Araç | Özellikleri: |
Nano, Arduino serisindeki en küçük modeldir. Doğası gereği, bu platform akrabasına benzer -. Acemi elektronik mühendisleri çoğunlukla cihazlarının kompakt modellerini oluşturur, bu nedenle kompakt Nano bunun için kullanışlıdır. Harici güç soketi içeride gizlidir. Çalışma USB bağlantı noktaları üzerinden yapılır. Özelliklerin geri kalanı Uno modeline benzer. Teknik özellikler:
Platforma güç vermenin 2 yolu vardır:
|
|
LED şerit | LED şerit, birkaç bölümde paralel bir şekilde bağlanır. Her bölümün uzunluğu 5 metreden fazla olmamalıdır. Ayrıca bu ölçü ile mağazalarda satılmaktadır. 10 hatta 15 metre gerektiren bir hat oluşturmanız gerekiyorsa, tamir etmeniz gerekecektir. Hiçbir koşulda birinci parçayı ikinci parçanın başlangıcına bağlayamazsınız. Bant izlerinin tutulduğu hesaplamayı gösteren uzunluğun 5 metre olduğuna inanılmaktadır. Bandı yüklerseniz, kırılma meydana gelir ve yapılan ürün bozulacaktır. Ve tımarın yanından, düzensiz parıltı nedeniyle metin izi çirkin görünecek: pistin başında ışık parlak olacak ve sonunda kararacak. |
Teller | Bileşenleri bağlamak için kablo seti |
Proses kontrol panosu | Mikroişlemci ve bitmiş ürün için diğer parçalar (örn. Troika Shield) kontrol platformuna yerleştirilir. |
Çizimler ve diyagramlar
LED şeridi kontrol etmek için öncelikle 2'den 9'a kadar numaralandırılmış portların anotlarına voltaj vermeniz gerekir. Bundan sonra, voltaj doğrudan katotlara verilir. Bu, bir transistör bloğu gerektirir.
Dikkat! Platform 5 volt verir. Anotları panoya bağlamak için 220 ohm'da çalışacak dirençler kullanmanız gerekir. Aynı zamanda, transistör bloğunu çıkışlara bağlamak için 1K ohm direnç gereklidir.
Proje, 2N2904 bipolar transistörlerin kullanımını içermektedir. Tüm transistörleri matris platformundaki bağlantınıza bağlarsanız, yalnızca 10 adet transistöre ihtiyacınız vardır. Elektronik cihazları tasarlarken, bu tip transistör en popüler olanıdır ve Arduino'da bir tarama hattı geliştirmek için tüm kriterler ve koşullar için uygundur. Oluşturulan sisteme küçük bir voltaj uygulanacaktır.
Kasetteki ışıkların nasıl yandığını açıklayalım. LED'in anotuna sinyal sağlamaktan sorumlu 1 kontak seçilir. Vericinin tabanında, önceki işlemle eşzamanlı olarak, sayaç üzerindeki çıkış deliğinden bir sinyal gönderilir. Bu nedenle, transistörün toplayıcısından voltaj doğrudan LED'lerin katotlarına gider. Matris yüzeyinde, bitişik çizgilerdeki anotlar, bitişik sütunların katotları ile iç içe geçmiştir. Bu nedenle kullanıcı, tüm tarama çizgisi aynı anda yandığında olguyu gözlemleyebilir.
Bir sürüm daha var:
Şema şöyle görünecek:
Yazılım bölümü
İlk seçenek için kod şu şekilde görünebilir:
Void kurulumu () (int i; for (i \u003d 2; i< 10; i++)
pinMode(i,OUTPUT);
pinMode(clock,OUTPUT);
pinMode(reset,OUTPUT);
digitalWrite(reset,HIGH);
delayMicroseconds(5);
digitalWrite(reset,LOW);
}
void display_symbol(int loops)
{
for(x=0;x
İkinci durumda "arduino üzerinde sürünen hat" projesinin uygulanması için program kodu aşağıdaki gibidir:
Int RGB1 \u003d 12; int RGB2 \u003d 11; int RGB3 \u003d 10; int RGB4 \u003d 9; int RGB5 \u003d 8; int RGB6 \u003d 7; int RGB7 \u003d 6; int RGB8 \u003d 5; int RGB9 \u003d 4; int RGB10 \u003d 3; int anahtar1 \u003d A3; int anahtar2 \u003d A2; int key3 \u003d A1; int key4 \u003d A0; void setup () (Serial.begin (9600); pinMode (RGB1, OUTPUT); pinMode (RGB2, OUTPUT); pinMode (RGB3, OUTPUT); pinMode (RGB4, OUTPUT); pinMode (RGB5, OUTPUT); pinMode (RGB6 , OUTPUT); pinMode (RGB7, OUTPUT); pinMode (RGB8, OUTPUT); pinMode (RGB9, OUTPUT); pinMode (RGB10, OUTPUT); pinMode (key1, INPUT_PULLUP); pinMode (key2, INPUT_PULLUP); pinMode (key3 INPUT_PULLUP); pinMode (key4, INPUT_PULLUP);) void loop () (int key1Value \u003d analogRead (key1); int key2Value \u003d analogRead (key2); int key3Value \u003d analogRead (key3); int key4Value \u003d analogRead (key4); if ( key1Value<= 100) { delay(30); if (key1Value <= 100) { digitalWrite(RGB5,HIGH); digitalWrite(RGB6, HIGH); delay(50); digitalWrite(RGB4, HIGH); digitalWrite(RGB7,HIGH); delay(50); digitalWrite(RGB3, HIGH); digitalWrite(RGB8, HIGH); delay(50); digitalWrite(RGB2,HIGH); digitalWrite(RGB9, HIGH); delay(50); digitalWrite(RGB1, HIGH); digitalWrite(RGB10, HIGH); delay(1000); } else { digitalWrite(RGB1, LOW); digitalWrite(RGB2, LOW); digitalWrite(RGB3, LOW); digitalWrite(RGB4, LOW); digitalWrite(RGB5, LOW); digitalWrite(RGB6, LOW); digitalWrite(RGB7, LOW); digitalWrite(RGB8, LOW); digitalWrite(RGB9, LOW); digitalWrite(RGB10, LOW); } } if (key2Value <= 100) { digitalWrite(RGB1,HIGH); digitalWrite(RGB6, HIGH); delay(40); digitalWrite(RGB2, HIGH); digitalWrite(RGB7,HIGH); delay(40); digitalWrite(RGB3, HIGH); digitalWrite(RGB8, HIGH); delay(40); digitalWrite(RGB4,HIGH); digitalWrite(RGB9, HIGH); delay(40); digitalWrite(RGB5, HIGH); digitalWrite(RGB10, HIGH); delay(1000); } else { digitalWrite(RGB1, LOW); digitalWrite(RGB2, LOW); digitalWrite(RGB3, LOW); digitalWrite(RGB4, LOW); digitalWrite(RGB5, LOW); digitalWrite(RGB6, LOW); digitalWrite(RGB7, LOW); digitalWrite(RGB8, LOW); digitalWrite(RGB9, LOW); digitalWrite(RGB10, LOW); } if (key3Value <= 100) { digitalWrite(RGB1,HIGH); delay(90); digitalWrite(RGB1, LOW); digitalWrite(RGB2, HIGH); delay(90); digitalWrite(RGB2, LOW); digitalWrite(RGB3, HIGH); delay(90); digitalWrite(RGB3, LOW); digitalWrite(RGB4, HIGH); delay(90); digitalWrite(RGB4, LOW); digitalWrite(RGB5,HIGH); delay(90); digitalWrite(RGB5, LOW); digitalWrite(RGB6,HIGH); delay(90); digitalWrite(RGB6, LOW); digitalWrite(RGB7,HIGH); delay(90); digitalWrite(RGB7, LOW); digitalWrite(RGB8,HIGH); delay(90); digitalWrite(RGB8, LOW); digitalWrite(RGB9,HIGH); delay(90); digitalWrite(RGB9, LOW); digitalWrite(RGB10,HIGH); delay(1000); } else { digitalWrite(RGB1, LOW); digitalWrite(RGB2, LOW); digitalWrite(RGB3, LOW); digitalWrite(RGB4, LOW); digitalWrite(RGB5, LOW); digitalWrite(RGB6, LOW); digitalWrite(RGB7, LOW); digitalWrite(RGB8, LOW); digitalWrite(RGB9, LOW); digitalWrite(RGB10, LOW); } if (key4Value <= 100) { digitalWrite(RGB1,HIGH); delay(50); digitalWrite(RGB1, LOW); digitalWrite(RGB2, HIGH); delay(50); digitalWrite(RGB2, LOW); digitalWrite(RGB3, HIGH); delay(50); digitalWrite(RGB3, LOW); digitalWrite(RGB4,HIGH); delay(50); digitalWrite(RGB4, LOW); digitalWrite(RGB5, HIGH); delay(50); digitalWrite(RGB5, LOW); digitalWrite(RGB6, HIGH); delay(50); digitalWrite(RGB6, LOW); digitalWrite(RGB7,HIGH); delay(50); digitalWrite(RGB7, LOW); digitalWrite(RGB8, HIGH); delay(50); digitalWrite(RGB8, LOW); digitalWrite(RGB9, HIGH); delay(50); digitalWrite(RGB9, LOW); digitalWrite(RGB10,HIGH); delay(50); digitalWrite(RGB10, LOW); digitalWrite(RGB9, HIGH); delay(50); digitalWrite(RGB9, LOW); digitalWrite(RGB8, HIGH); delay(50); digitalWrite(RGB8, LOW); digitalWrite(RGB7,HIGH); delay(50); digitalWrite(RGB7, LOW); digitalWrite(RGB6, HIGH); delay(50); digitalWrite(RGB6, LOW); digitalWrite(RGB5, HIGH); delay(50); digitalWrite(RGB5, LOW); digitalWrite(RGB4,HIGH); delay(50); digitalWrite(RGB4, LOW); digitalWrite(RGB3, HIGH); delay(50); digitalWrite(RGB3, LOW); digitalWrite(RGB2, HIGH); delay(50); digitalWrite(RGB2, LOW); digitalWrite(RGB1, HIGH); delay(50); digitalWrite(RGB1, LOW); delay(1000); } else { digitalWrite(RGB1, LOW); digitalWrite(RGB2, LOW); digitalWrite(RGB3, LOW); digitalWrite(RGB4, LOW); digitalWrite(RGB5, LOW); digitalWrite(RGB6, LOW); digitalWrite(RGB7, LOW); digitalWrite(RGB8, LOW); digitalWrite(RGB9, LOW); digitalWrite(RGB10, LOW); } }
Bir cihaz oluşturmak için adım adım talimatlar
Arduino tasarım algoritması sürünen çizgi:
- Yukarıda açıklanan programın kodunu bir USB kablosu ve bir bilgisayar kullanarak mikroişlemciye yüklüyoruz.
- LED şeridi de kontrol platformuna yerleştiriyoruz.
- Tüm detayları birbirine bağlıyoruz.
- Gücü açıyoruz.
Son videoda, planın ikinci versiyonunun nasıl çalıştığını anlayabilirsiniz:
Akıllı telefon kontrolü
LED ışıklar bir akıllı telefondan kontrol edilebilir. Planı uygulamak için Bluetooth'a ve Arduino için tasarlanmış özel bir modüle (HC-06) ihtiyacınız olacak. Ama bunu sonraki derslerde zaten yapacağız. Hepsi iyi projeler.
Karakter grafik ekranlarıyla çalışmak için, standart Arduino IDE setinde bulunan ve 8 bitlik (4 bit) paralel arabirim üzerinde çalışmak üzere tasarlanmış LiquidCrystal kitaplığını kullanmanızı öneririz. Ekranınız Arduino'ya I2 veriyolu üzerinden bağlıysa, LiquidCrystal_I2C kütüphanesini kurmanız gerekir (fonksiyonlarının çoğu ilk kütüphane ile aynıdır).
Desteklenen ekranlar:
Görüntüle | Bağlantı ve başlatma |
---|---|
LCD1602 - karakter ekranı (16x02 karakter), |
#Dahil etmek [ , 8 , 9 , 10 , 11 ]); geçersiz kurulum () ( lcd.begin (16, 2);} // Açıklama:
|
i2C arayüzlü (mavi) |
#Dahil etmek #Dahil etmek LiquidCrystal_I2C lcd (0x27 veya 0x3F, 16 , 2); geçersiz kurulum () ( lcd.init (); } // Açıklama: |
LCD1602 I2C - karakter ekranı (16x02 karakter), i2C arayüzlü (yeşil) |
#Dahil etmek #Dahil etmek LiquidCrystal_I2C lcd (0x27 veya 0x3F, 16 , 2); geçersiz kurulum () ( lcd.init (); } // Açıklama: |
LCD2004 - karakter ekranı (20x04 karakter), paralel arabirimli (mavi) |
#Dahil etmek LiquidCrystal lcd (2, 3, 4, 5, 6, 7[ , 8 , 9 , 10 , 11 ]); geçersiz kurulum () ( lcd.begin (20, 4);} // Açıklama: // 8 veri yolu kablosu kullanılıyorsa, hepsini belirtin |
LCD2004 I2C - karakter ekranı (20x04 karakter), i2C arayüzlü (mavi) |
#Dahil etmek #Dahil etmek LiquidCrystal_I2C lcd (0x27 veya 0x3F, 20 , 4); geçersiz kurulum () ( lcd.init (); } // Açıklama: |
# 1 Örnek
I2C veri yolu ile bağlanan LCD1602 ekranındaki yazıyı görüntüleriz. LCD2004 ekranla çalışmak için, 3. satırı LiquidCrystal_I2C lcd (0x27,20,4) olarak değiştirmeniz gerekir;
#Dahil etmek
# 2 Örnek
Yazıyı 4 bit paralel veri yolu ile bağlanan LCD1602 ekranda görüntüleriz. LCD2004 ekranıyla çalışmak için 5. satırı lcd olarak değiştirmeniz gerekir. Başlar (20, 4);
#Dahil etmek
# 3 Örnek
I2C veri yolu ile bağlanan LCD1602 ekranda "Rusça" yazısını görüntülüyoruz:
#Dahil etmek
# 4 Örnek
I2C veriyolu ile bağlanan LCD1602 ekranda başlatıldıktan sonra geçen süreyi görüntüleriz:
#Dahil etmek
LiquidCrystal ve LiquidCrystal_I2C kitaplıklarında ortak olan işlevler:
- başla (sütunlar, satırlar, ); - Sütun sayısını, satırları ve karakter boyutunu belirterek başlatmayı görüntüleyin.
- açık (); - İmleç 0,0 konumunda iken ekranı temizler (Çok zaman alır!).
- ev (); - İmleci 0,0 konumuna ayarlama (Çok zaman alır!).
- görüntüle (); - Ekranın hızlı açılması (RAM'deki verileri değiştirmeden).
- görüntü yok (); - Ekranı hızlı kapatın (RAM'deki verileri değiştirmeden).
- goz kirpmak (); - Yanıp sönen imleci açın (yaklaşık 1 Hz frekansla).
- noBlink (); - Yanıp sönen imleci kapatın.
- imleç (); - İmleç alt çizgisini etkinleştirin.
- noCursor (); - İmleç alt çizgisini kapatın.
- scrollDisplayLeft (); - Ekranı sola kaydırır. Shift display, bir sütunu sola koordine eder (RAM'i değiştirmeden).
- scrollDisplayRight (); - Ekranı sağa kaydırır. Ekranı kaydır, bir sütunu sağa koordine eder (RAM'i değiştirmeden).
- soldan sağa (); - Gelecekte, bir sütun sağa bir sonraki karakteri görüntüledikten sonra imlecin konumunun kaydırılacağını belirtir.
- sağdan sola (); - Bir sütun sola, sonraki karakteri görüntüledikten sonra imlecin konumunun daha fazla kaydırıldığını belirtir.
- noAutoscroll (); - Metnin ileride imleç konumunun soluna hizalanacağını belirtir (her zamanki gibi).
- otomatik kaydırma (); - Metni imleç konumunun sağına daha fazla yaslanacağını belirtir.
- createChar (num, dizi ); - Belirtilen numara altında CGRAM ekranına özel bir karakter yazma.
- setCursor (sütun, sıra ); - İmleci, sütun ve satır sayısı ile gösterilen konuma ayarlama.
- yazdır (metin ); - Ekrandaki metni, sembolleri veya sayıları görüntüleyin. Sözdizimi, Serial sınıfındaki aynı adın işlevine benzer.
Yalnızca LiquidCrystal_I2C kitaplığında uygulanan işlevler:
- içinde (); - Ekran başlatma. Nesne oluşturulduktan sonra LiquidCrystal_I2C kütüphanesinin ilk komutu olmalıdır. Aslında bu işlev LiquidCrystal kitaplığında da bulunur, ancak bu kitaplıkta nesne oluşturulduğunda otomatik olarak (varsayılan olarak) çağrılır.
- arka ışık (); - Ekran arka ışığını açın.
- noBacklight (); - Ekran arka ışığını kapatın.
- setBacklight (bayrak ); - noBacklight ve arka ışık işlevleri yerine kullanılan arka ışık kontrolü (doğru - etkinleştir / yanlış - devre dışı bırak).
Bağ:
// I2C veriyolu için: |
Parametre:
|
// 4 telli paralel veri yolu için: #Dahil etmek Likit kristal lcd ( RS , E , D4 , D5 , D6 , D7 ); geçersiz kurulum () ( lcd.begin ( col , kürek çekmek ); } |
Parametre:
|
// Paralel 8 telli veri yolu için: #Dahil etmek Likit kristal lcd ( RS , E , D0 , D1 , D2 , D3 , D4 , D5 , D6 , D7 ); geçersiz kurulum () ( lcd.begin ( col , kürek çekmek ); } |
|
başla (col ,
kürek çekmek ,
);
Ekran boyutları ve sembolleri ile ilklendirmeyi görüntüleyin. |
Parametre:
|
Ekran kontrol fonksiyonları:
görüntüle (); NoDisplay işlevi tarafından kapatıldıktan sonra ekranı açar. |
Not: İşlev hızlı bir şekilde ve ekran RAM'inde değişiklik yapmadan çalışır. |
görüntü yok (); Ekranı kapatır. Ekrandaki veriler, ekran işlevi çağrılıncaya kadar görüntülenmeyecek, ancak RAM belleğinden silinmeyecek ve ekran işlevi çağrıldıktan sonra tekrar görüntülenecektir. |
Not: İşlev hızlı bir şekilde ve ekran RAM'inde değişiklik yapılmadan yürütülür. |
scrollDisplayLeft (); Kaydırır koordinatları bir sütun sola doğru görüntüler. |
|
scrollDisplayRight (); Kaydırır koordinatları bir sütun sağa doğru görüntüler. Bu fonksiyonun sürekli çağrılması, sürünen bir çizginin etkisini yaratacaktır. Koordinatlar, hem ekranda bulunan bilgiler için hem de daha sonra görüntülenecek bilgiler için kaydırılır. |
Not: İşlev, ekran RAM'i değiştirilmeden gerçekleştirilir. Fonksiyonu art arda 40 kez çağırırsanız, koordinat orijinal noktaya geri dönecektir. |
açık (); İmleç 0,0'a ayarlandığında ekranı temizler. Ekrandaki bilgiler kalıcı olarak silinecektir. |
Not: Uzun zaman alır. |
arka ışık (); Ekran arka ışığını açar. |
|
noBacklight (); Ekran arka ışığını kapatın. |
Not: Bu işlev yalnızca LiquidCrystal_I2C kitaplığında uygulanır. |
setBacklight (bayrak );
Arka ışık kontrolü (noBacklight ve arka ışık işlevleri yerine). |
Parametre:
|
İmleç kontrol fonksiyonları:
setCursor (col ,
kürek çekmek );
İmleci belirtilen konuma ayarlar. |
Parametre:
|
ev (); İmleci 0,0 konumuna ayarlama. SetCursor (0,0) gibi çalışır; |
Not: Uzun zaman alır. |
goz kirpmak (); Yanıp sönen imleci açar. |
Not: İmleç, sembolün tüm alanını kaplar ve önceden ayarlandığı konumda yaklaşık 1 Hz frekansta yanıp söner. |
noBlink (); Yanıp sönen imleci kapatın. |
Not: İmleç görünmez hale gelir ancak konumu kalır. |
imleç (); İmleç alt çizgisini etkinleştirin. |
Not: İmleç bir alt çizgi karakteri haline gelir ve daha önce yerleştirildiği konumdadır. |
noCursor (); İmleç alt çizgisini kapatın. |
Not: İmleç görünmez hale gelir ancak konumu kalır. |
Yönü ve hizalamayı gösteren işlevler:
soldan sağa (); Her yeni karakterden sonra imleç konumunun bir sütun sağa kaydırılması gerektiğini belirtir. |
Not: "abc" metnini yazarsanız, ekran "abc" gösterecek ve metin, orijinal imleç konumunun sağında olacaktır. (Normalde) |
sağdan sola (); Her yeni karakterden sonra, imlecin konumunun bir sütun sola kaydırılması gerektiğini belirtir. |
Not: "abc" metnini yazdırırsanız, ekran "cba" gösterecek ve metin orijinal imleç konumunun solunda olacaktır. (Sağdan sola yazarak) |
noAutoscroll (); Gelecekte metnin orijinal imleç konumundan sola hizalanması gerektiğini belirtir. |
Not: İmleci 10.0 konumuna getirirseniz ve metni görüntülerseniz, görüntülenen metnin ilk karakteri bu konumda olacaktır. (Normalde) |
otomatik kaydırma (); Gelecekte metnin orijinal imleç konumundan sağa hizalanması gerektiğini belirtir. |
Not: İmleci 10.0 konumuna getirip metni görüntülerseniz, imleç bu konumda olacaktır. (ScrollDisplayLeft işlevini, görüntülenen metindeki harf sayısı kadar çağırmışsınız gibi, ekran koordinatları sola kaydırılacaktır) |
Metin ve simge girme işlevleri:
createChar (num, dizi); CGRAM ekranına belirtilen numara altında özel bir karakter yazma. Yüklediğiniz karakterin içinde olması gereken metni (yazdırma işlevini kullanarak) görüntülemek istiyorsanız, eğik çizgiyi ve bu karakterin altına yazıldığı sayıyı belirtin: print ("C \\ 1MBO \\ 2"). |
Parametre:
|
baskı (metin); Görüntü ekranında metin, karakter veya sayıları görüntüler. |
Parametre:
|