Arduino ya Nokia 5110 Ekranı Adafruit Kütüphanesi İle Nasıl Bağlanır?

Gokrtl

Gökhan Kartal (TeknoDay)
Staff member
Katılım
27 Şubat 2019
Mesajlar
11,237
adafruit:
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Bu iki kütüphaneyi sayfanın en başına ekleyin. Arduino idesinden Kütüphane yönetimine girerek indirebilirsiniz.

Kod:
Adafruit_PCD8544 display = Adafruit_PCD8544(5, 4, 3); //Download the latest Adafruit Library in order to use this constructor
Kod:
Adafruit_PCD8544 display = Adafruit_PCD8544(7,6, 5, 4, 3); //Download the latest Adafruit Library in order to use this constructor
Bu iki koddan birini kütüphanelerin altına yapıştırın. Burada önemli olan hangi kodu seçiyorsanız bacak bağlantılarını ona göre yapmak.
Ben farklı farklı kodlar bulduğumdan epeyce bocaladım. Çünkü hem farklı kütüphaneler var, hem de 5110'un iki ayrı ekranı var ve üzerlerindeki pin yazıları farklı olabiliyor. Sizin için şöyle toparladım.

5110 pin bilgileri.PNG


C:
display.begin();
display.clearDisplay();
setContrast();
Bu kodları da "void setup" altına ekliyoruz. Bundan sonra ekrana ne yazdırmak istediğiniz size kalmış.
Bazı komutlar şöyle;
C:
    display.setTextSize(1); // Yazı fontu büyüklüğü. Parantez içindeki rakamı değiştirerek font boyutunu değiştirebilirsiniz.
    display.clearDisplay(); // Ekranı komple temizler.
    display.setTextColor(BLACK, WHITE); //Yazı rengini siyah, arkaplanı beyaz yapar.
    display.setCursor(15, 8); //15 pixel soldan, 8 pixel yukardan kaydırma yapar.
    display.print("ANA MENU"); // Bir üstte ayarlanan setCursor konumuna ANA MENU yazar.
    display.drawFastHLine(0, 10, 83, BLACK); // Soldan 0, Yukarıdan 10, 83pixel lik siyah çizgi çeker.

En önemli kısım ise pin bağlantıları nasıl olacak?
Onun için de Arduino uno görseli kullanarak şöyle iki görsel hazırladım.
Eğer arduino nano ya bağlamak isterseniz ekranı, unoda hangi pin numaralarına bağlıyorsanız nanoda da aynı pin numaralarına bağlayabilirsiniz.

metod1 uno.png


metod2 uno.png
 
Son düzenleme:
C++:
#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;[ATTACH type="full" width="281px"]12897[/ATTACH][ATTACH type="full" width="281px"]12898[/ATTACH]

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();
  delay(2000);
  display.clearDisplay();

  // Text Rotation
  while(1)
  {
  display.clearDisplay();
  display.setRotation(rotatetext);  // rotate 90 degrees counter clockwise, can also use values of 2 and 3 to go further.
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println("Text Rotation");
  display.display();
  delay(1000);
  display.clearDisplay();
  rotatetext++;
  }
}

void loop() {}




EKRAN BU ŞEKİLDE OLUYOR KÜTÜPHANEDE SIKINTI YOK NE YAPMAM LAZIM
 

Ekler

  • 20210812_144828.jpg
    20210812_144828.jpg
    323.8 KB · Görüntüleme: 164
  • 20210812_144817.jpg
    20210812_144817.jpg
    378.5 KB · Görüntüleme: 153
C++:
#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;[ATTACH type="full" width="281px"]12897[/ATTACH][ATTACH type="full" width="281px"]12898[/ATTACH]

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();
  delay(2000);
  display.clearDisplay();

  // Text Rotation
  while(1)
  {
  display.clearDisplay();
  display.setRotation(rotatetext);  // rotate 90 degrees counter clockwise, can also use values of 2 and 3 to go further.
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println("Text Rotation");
  display.display();
  delay(1000);
  display.clearDisplay();
  rotatetext++;
  }
}

void loop() {}




EKRAN BU ŞEKİLDE OLUYOR KÜTÜPHANEDE SIKINTI YOK NE YAPMAM LAZIM
C:
display.setContrast(57);

Contrast ayarı yapabilmek için "LIGHT" pinini herhangi bir digital pine bağlaman gerek sanırım.
Sen direk 3.3v' a bağlamışsın.
LIGHT pinini 8'e bağla sonrada şu aşağıdaki fonksiyonları kodun en altına yapıştır.
artık istediğin yerde turnBacklightOn(); yazarak ekran ışığını açar, turnBacklightOff() yazarak kapatabilirsin.
C:
void turnBacklightOn()
{
  digitalWrite(8, LOW);
}

void turnBacklightOff()
{
  digitalWrite(8, HIGH);
}

Bunun sorununu çözeceğinden emin değilim ama önce bir dene.
Resimlere göre bağlantıda bir sorun görünmüyor. Korkum o dur ki kullandığın uno sorunlu model. Ondan bile olabilir.
Sen bir ışık olayını dene olmazsa aynı kodu benim kart da denerim. Bakarız senin kartda mı sorun var yoksa kodda mı.
 
Buldum galiba bidakka. Senin kodun hiç yüklenmiyor ki. Rotate kodundaki [ parantezler sorun çıkarıyor.
Rotate ile ilgili bütün komutları kapatınca çalışıyor. Biraz kurcalayalım bakalım.
 
yükleniyor bende sıkıntı yok. Başka kartlada denedim sadece ekrana ışık geliyor yazı yok başka kodla da denedim. Acaba benim ekran mı arızalı?
 
Tamam Buldum. Buradaki ATTACH kısmının bir etkisi yok koda. // ile yorum satırı haline getirince çalışıyor.
Zaten içinde de 281 pixel yazıyor. taktığın ekran 84x48 pixel.
Aşağıdaki kodu yükleyerek çalıştırabiliyor olman lazım.

C:
#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;

//[ATTACH type="full" width="281px"]12897[/ATTACH][ATTACH type="full" width="281px"]12898[/ATTACH]);

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();
  delay(2000);
  display.clearDisplay();

  // Text Rotation
  while(1)
  {
  display.clearDisplay();
  display.setRotation(rotatetext);  // rotate 90 degrees counter clockwise, can also use values of 2 and 3 to go further.
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println("Text Rotation");
  display.display();
  delay(1000);
  display.clearDisplay();
  rotatetext++;
  }
}

void loop() {}
 
yükleniyor bende sıkıntı yok. Başka kartlada denedim sadece ekrana ışık geliyor yazı yok başka kodla da denedim. Acaba benim ekran mı arızalı?
Son attığım kodu bir dene.
Birde madem sende yükleniyor 281 yazan yerleri 84, 48 yaparak dene.

Aynı kodun sende yüklenip bende yüklenmemesi enteresan :D
emir kode.PNG
 
aynı sadece ışık y
Tamam Buldum. Buradaki ATTACH kısmının bir etkisi yok koda. // ile yorum satırı haline getirince çalışıyor.
Zaten içinde de 281 pixel yazıyor. taktığın ekran 84x48 pixel.
Aşağıdaki kodu yükleyerek çalıştırabiliyor olman lazım.

C:
#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;

//[ATTACH type="full" width="281px"]12897[/ATTACH][ATTACH type="full" width="281px"]12898[/ATTACH]);

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();
  delay(2000);
  display.clearDisplay();

  // Text Rotation
  while(1)
  {
  display.clearDisplay();
  display.setRotation(rotatetext);  // rotate 90 degrees counter clockwise, can also use values of 2 and 3 to go further.
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println("Text Rotation");
  display.display();
  delay(1000);
  display.clearDisplay();
  rotatetext++;
  }
}

void loop() {}
Aynı durum Ekran sadece ışığı yanıyor. Daha önceden bilmeden 3,3v yerine 5v verdim acaba o mu bozdu ekranı çünkü yapılması gereken şeyleri yaptım. o_O
 
aynı sadece ışık y

Aynı durum Ekran sadece ışığı yanıyor. Daha önceden bilmeden 3,3v yerine 5v verdim acaba o mu bozdu ekranı çünkü yapılması gereken şeyleri yaptım. o_O HATTA EKRAN YANIP SÖNÜYOR
5v verdiysen bozulmuş olabilir. Emin olmak için başka ekran ile denemek lazım.

Senin kod sende çalışmadı.
Benim kod sende çalışmadı.
Başka kart ile denedin yine çalışmadı.
Bu durum da ekran arızası yüksek ihtimal.
 
Aşağıdaki satır orijinal koda dahil olamaz. Çok yüksek ihtimalle BB kod kaynaklı ya da yukarıdaki kodun kopyalandığı yerden gelen bir fazlalıklıktır. @Emir oztkn sende çalışan kodu txt dosyası olarak ek yapmayı dene.

[ ATTACH type="full" width="281px"]12897[/ATTACH ][ ATTACH type="full" width="281px"]12898[/ATTACH ]

12897 eklentisine bak12898 eklentisine bak
 
5v verdiysen bozulmuş olabilir. Emin olmak için başka ekran ile denemek lazım.

Senin kod sende çalışmadı.
Benim kod sende çalışmadı.
Başka kart ile denedin yine çalışmadı.
Bu durum da ekran arızası yüksek ihtimal.
Başka bir yöntem yokmu acaba bunu test etmenin.
 
Benim ekranı sökülebilir yapmışlar.
Söktüm belki altında koruma diyodu filan vardır diye ama malesef yok. Bir de sendekini sökmeyi dene. Hatta açabiliyorsan ekranın içini aç. Benim ekran sağlam olduğu için cesaret edemiyorum :D

20210812_153650.jpg
 
Başka bir yöntem yokmu acaba bunu test etmenin.
Şöyle söyleyeyim.
Attach kodunu kapatınca kod bende çalışıyor.
Bu kodun çalıştığına eminiz.
Sende de bir den fazla arduino kart var. Biri olmasa diğeri çalışır mutlaka.
Eğer benim gönderdiğim kod ile senin elindeki kartların hiç birinde görüntü vermiyorsa ekran arızalıdır.
Tabi burada atladığımız bir konu daha var. Jumper kablolar genelde dandik oluyor. Onların da sağlam olduğuna emin ol.
 
Senin ekranın çözünürlüğü aynı olmadığı gibi kullanılan kütüphane de farklı. Aşağıdaki kütüphane ve örnek kodu dene, çalışması gerekiyor.
 

Ekler

  • HX1230+LCD+Datasheet.pdf
    1,004.3 KB · Görüntüleme: 131
  • ornek_kod.ino
    1.1 KB · Görüntüleme: 123
  • graphicsLCD.zip
    4 KB · Görüntüleme: 124
Tabii bağlantılarını da örnek koda göre revize etmelisin. İster kabloları değiştir, istersen koddaki çıkışları...
 
Deli cesareti çalışan ekranı bilim adına darmaduman ettim. :katil2:
Maalesef içinde müdahale edilebilecek hiç bir eleman yok. Bozuksa çöp. Yada aliexpress den filan sadece ekran bulursan ucuza anakartını kullanabilirsin.

20210812_154634.jpg
 

HX1230 Arduino Bağlantıları​


lcd_RST -> pin 8
lcd_CE -> pin 7
lcd_N/C -> Bağlı değil
lcd_DIN -> pin 5
lcd_CLK -> pin 4
lcd_VCC -> + 3,3V (+ 5V)
lcd_BL_ -> + 3,3V (+ 5V) (LED)
lcd_GND -> GND
 

HX1230 Arduino Bağlantıları​


lcd_RST -> pin 8
lcd_CE -> pin 7
lcd_N/C -> Bağlı değil
lcd_DIN -> pin 5
lcd_CLK -> pin 4
lcd_VCC -> + 3,3V (+ 5V)
lcd_BL_ -> + 3,3V (+ 5V) (LED)
lcd_GND -> GND
valla abi böyle oldu çok teşekkür ederim.

20210812_155516.jpg


Yalnız Anlamadığım N/C pinini kullanmamızla mı alakalı yani sorun tam olarak neyden kaynaklanıyormuş, Bunu kodlarken nelere dikkat etmek lazım?
 
valla abi böyle oldu çok teşekkür ederim.

12907 eklentisine bak

Yalnız Anlamadığım N/C pinini kullanmamızla mı alakalı yani sorun tam olarak neyden kaynaklanıyormuş, Bunu kodlarken nelere dikkat etmek lazım?
Galiba ben anladım. Sendeki Orjinal 5110 ekranı değil ve Adafruit Kütüphanesi ile çalışmıyor.
Sercanın üzerindeki koda göre verdiği kütüphane ile çalışıyor.
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,926
Mesajlar
101,224
Üyeler
2,504
Son üye
yaxe22

Son kaynaklar

Son profil mesajları

Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
Back
Top