Başa dön
Arduino ile Nokia 5110 LCD Ekran Kullanımı - Resim Görüntüleme

Arduino ile Nokia 5110 LCD Ekran Kullanımı – Resim ve Şekil Görüntüleme

Merhaba arkadaşlar, bu yazımızda arduino ile nokia 5110 lcd ekran kullanımı ile resim yazdırma konusunu inceleyeceğiz.

Cep telefonlarının düğmelerinin olduğu iPhone öncesi günleri hatırlıyor musunuz? O dönemlerde Nokia bu küçük LCD’leri 3310 ve 5110 cep telefonlarında kullandı.

Teknoloji değiştikçe, bu ekranlar sonunda DIY dünyasında yeni yerlerini buldu. Nokia 5110 ekran küçük, ucuz, kullanımı kolay olması, oldukça düşük güç tüketimi ve bitmap’lerin yanı sıra metin görüntüleyebildiğinden zamanla hobi uzmanları arasında popülerleştiler.

 

Satın Alınabilir Ürünler;

 

Nokia 5110 LCD Ekran Sürücüsü – PCD8544

5110 ekran modülünün kalbinde, Philips – PCD8544 tek yongalı düşük güçlü CMOS LCD sürücü denetleyicisi bulunmaktadır.

Çip, 84 × 48 piksel grafik ekran sürmek için tasarlanmıştır. SPI’ye benzer bir seri veri yolu arabirimi aracılığıyla mikrodenetleyicilere arabirim sağlar.

 

PCD8544 kontrol cihazının çok yönlülüğü, yonga üzerinde LCD kaynağı ve bias voltajları üreterek düşük güç tüketimiyle güce duyarlı uygulamalar için uygundur. Normalde, LCD yalnızca 6 ila 7mA kadar düşük tüketir.

Veri sayfasına göre, bu çip 2.7 ila 3.3 V aralığında çalışır ve 3v iletişim seviyelerine sahiptir. Bu nedenle, Arduino gibi herhangi bir 5V mikrodenetleyicisi için bir tür logic seviye dönüştürücü gereklidir (aksi takdirde ekran zarar görebilir).

5110 Arka Işık

5110 lcd ekran ayrıca farklı renklerde bir arka plan ışığıyla birlikte gelir. Kırmızı, yeşil, mavi ve beyaz.

Arka ışık, ekranın kenarlarında dört LED’den başka bir şey değildir.

LCD’nin arka ışığını değiştirmek isterseniz, arka tarafındaki metal klipsleri iterek LCD’yi karttan çıkarın. Ekran kapandığında, ekranın kenarlarına lehimlenmiş dört LED’i göreceksiniz. LED’leri istediğiniz renkli LED’lerle değiştirin.

 

Uyarı: Bu LCD ekranların herhangi bir akım sınırlama direnci ile birlikte gelmeyen birçok sürümü vardır. Bu, güç kaynağını bağlarken dikkatli olmanız gerektiği anlamına gelir. Önlem olarak, ‘Arka Işık’ pimiyle seri olarak 330Ω akım sınırlama direnci yerleştirebilirsiniz.

 

Nokia 5110 LCD Bellek Haritası

PCD8544 LCD sürücüsünde, görüntülenecek bit desenini tutan ekran için yerleşik bir 504 bayt Grafik Görüntü Veri RAM’i (GDDRAM) bulunur. Bu hafıza alanı 6 bölüm olarak (0’dan 5’e kadar) düzenlenmiştir. Her bölüm 84 sütun / segment (0’dan 83’e kadar) içerir. Ve her sütun 8 bit veri saklayabilir (0’dan 7’ye).

6 banka x 84 segment x 8 bit veri = 4032 bit = 504 bayt

 

Bankalar(GDDRAM bölümleri), segmentler ve veriler içeren tüm bellek haritası aşağıda vurgulanmıştır.

Her bit, ekrandaki programlı olarak AÇIK veya KAPALI hale getirilebilen belirli bir pikseli temsil eder.

Nokia 5110 Ekran Özellikleri:

Görüntü TeknolojisiNokta Vuruşlu LCD
MCU ArayüzüSPI
Ekran boyutu1.5 inç
çözüm84 × 48 piksel
Çalışma gerilimi2.7V – 3.3V
Çalışma AkımıMaks. 50mA
Görüş açısı180 °

Nokia 5110 LCD Ekran Modülü Pinout

Bağlantı ve örnek kodlara dalmadan önce Pinout’a bir göz atalım.

RST pimi ekranı sıfırlar. Ayrıca bu pimi Arduino sıfırlamaya bağlayarak ekranı otomatik olarak sıfırlar.

CE (Chip Enable) pimi, aynı SPI veriyolunu paylaşan birçok bağlı cihazdan birini seçmek için kullanılır.

D/C (Veri / Komut) pimi, ekrana aldığı verilerin bir komut veya görüntülenebilir veri olup olmadığını gösterir.

DIN SPI arayüzü için seri veri pinidir.

CLK SPI arayüzü için bir seri saat pinidir.

VCC pin, Arduino’daki 3.3V volt pinine bağladığımız LCD için güç sağlayan pindir.

BL (Arka ışık) pimi ekranın arka ışığını kontrol eder. Parlaklığını kontrol etmek için bir potansiyometre ekleyebilir veya bu pimi PWM özellikli Arduino pinlerine bağlayabilirsiniz.

GND Arduino topraklarına bağlanmalıdır.

Nokia 5110 LCD Ekran Modülünü Arduino Uno’ya Bağlama – Kablolama

Kod yüklemeye ve ekrana veri göndermeye başlamadan önce, ekranı Arduino’ya bağlayalım.

Bağlantılar oldukça basittir. Yazılım SPI’sini uyguladığımız için esnek pin seçeneklerine sahibiz. Veri iletim pinlerini herhangi bir dijital I / O pinine bağlayabilirsiniz. Seri saat (CLK), seri veri (DIN), veri / komut (D/C), çip etkinleştirme (CE) ve sıfırlama (RST) pinleri, Arduino’daki pin 3’e kadar bağlanır.

 

Ancak ne yazık ki, LCD 3v ile çalışır. Bu yüzden bu pinleri Arduino’ya doğrudan bağlayamıyoruz. Biraz korumaya ihtiyacımız var. Seviyeleri değiştirerek yapılabilir.

Seviyeleri kaydırmanın en ucuz ve en kolay yollarından biri, her veri iletim pimi ile birlikte dirençler eklemektir. Sadece CLK, DIN, D/C ve RST pimleri arasına 10kΩ direnç ve CE arasına 1kΩ direnç ekleyin.

Son olarak, arka ışık (BL) pimi 330Ω akım sınırlama direnci ile 3.3V’a bağlanır. Parlaklığını kontrol etmek istiyorsanız, bir potansiyometre ekleyebilir veya bu pimi PWM özellikli herhangi bir Arduino pimine bağlayabilirsiniz.

Aşağıdaki şemada her şeyin nasıl kablolanacağı gösterilmektedir.

Bununla birlikte, şimdi bir kod yüklemeye ve ekran baskısını almaya hazırsınız.

Nokia 5110 LCD Ekran Modülü Kullanımı için Arduino Kitaplığı Yükleme

PCD8544 LCD denetleyicide esnek ancak karmaşık sürücüler vardır. PCD8544 kontrol cihazını kullanmak için bellek adresleme konusunda geniş bilgi gereklidir. Neyse ki, Adafruit PCD8544 Nokia 5110 LCD kütüphanesi, tüm karmaşıklıkları gizlemek için yazılmıştır, böylece ekranı kontrol etmek için basit komutlar verebiliriz.

Kitaplığı yüklemek için Taslak> Kitaplığı Dahil Et> Kitaplıkları Yönet… ‘e gidin. Kitaplık Yöneticisi’nin kitaplıklar dizinini indirmesini ve yüklü kitaplıklar listesini güncellemesini bekleyin.

Nokia‘ yazarak aramanızı filtreleyin. Birkaç sonuç çıkacaktır. Adafruit PCD8544 Nokia 5110 LCD kütüphanesini bulun. Bu girişi tıklayın ve ardından Yükle‘yi seçin.

Bu kitaplık, alt düzey işlevleri işleyen donanıma özgü bir kitaplıktır. Noktalar, çizgiler, daireler, dikdörtgenler gibi grafikleri görüntülemek için Adafruit GFX Kütüphanesi ile eşleştirilmesi gerekir.

PCD8544, ekran için yerleşik bir GDDRAM‘a sahip olmasına rağmen, içeriğini okuyamıyoruz. Matematiksel işlemleri gerçekleştirmek için ekran arabelleğini değiştirmek mümkün değildir.

Alternatif olarak, kütüphane ATmega328P’den tampon olarak 504 bayt bellek ayırır. Böylece, ekran arabelleğini değiştirebilir ve daha sonra ATmega328P’nin belleğinden PCD8544 denetleyicisinin dahili belleğine toplu bir aktarım gerçekleştirebiliriz.

Arduino Kodu – Metin Görüntüleme

Şimdi ilginç şeyler geliyor!

Aşağıdaki test kodu ile ‘Merhaba Dünya!’ mesajı görüntülenir. Ayrıca kod, şunları da içerir;

  • Ters çevrilmiş metni görüntüleme
  • Numaraları Görüntüleme
  • Bazlı Numaraları Görüntüleme (Ondalık Sayılar)
  • ASCII sembollerini görüntüleme
  • Metin Döndürme

Bu bilgiler Nokia 5110 LCD ekranın nasıl kullanılacağı hakkında tam bir anlayış sağlayacaktır ve daha pratik deneyler ve projeler için temel oluşturabilir. Kodu deneyin ve aşağıda ayrıntılı olarak parçalara ayıracağız.

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// Declare LCD object for software SPI
// Adafruit_PCD8544(CLK,DIN,D/C,CE,RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

int rotatetext = 1;

void setup()   {
  Serial.begin(9600);

  //Initialize Display
  display.begin();

  // you can change the contrast around to adapt the display for the best viewing!
  display.setContrast(57);

  // Clear the buffer.
  display.clearDisplay();

  // Display Text
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println("Hello world!");
  display.display();
  delay(2000);
  display.clearDisplay();


  // Display Inverted Text
  display.setTextColor(WHITE, BLACK); // 'inverted' text
  display.setCursor(0,0);
  display.println("Hello world!");
  display.display();
  delay(2000);
  display.clearDisplay();

  // Scaling Font Size
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.setTextSize(2);
  display.println("Hello!");
  display.display();
  delay(2000);
  display.clearDisplay();

  // Display Numbers
  display.setTextSize(1);
  display.setCursor(0,0);
  display.println(123456789);
  display.display();
  delay(2000);
  display.clearDisplay();

  // Specifying Base For Numbers
  display.setCursor(0,0);
  display.print("0x"); display.print(0xFF, HEX); 
  display.print("(HEX) = ");
  display.print(0xFF, DEC);
  display.println("(DEC)"); 
  display.display();
  delay(2000);
  display.clearDisplay();

  // Display ASCII Characters
  display.setCursor(0,0);
  display.setTextSize(2);
  display.write(3);
  display.display();