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
12,016
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: 208
  • 20210812_144817.jpg
    20210812_144817.jpg
    378.5 KB · Görüntüleme: 195
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.
 
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: 195
  • ornek_kod.ino
    1.1 KB · Görüntüleme: 179
  • graphicsLCD.zip
    4 KB · Görüntüleme: 184
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
6,952
Mesajlar
118,763
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
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?
Back
Top