OLED LCD LED Display Module Kullanan var mı ?

Başlatan baran123, 26 Kasım 2014, 20:16:48

RaMu

SSD1306 yı CcsC veya MpLabx ile çalıştırmak isteyen olursa
Baran ın açtığı diğer konuda çalışan örnek var.
http://elektronark.org/geyik/380/ssd1306-kutuphanesi-ve-ornek-uygulama-ccs-c/msg2469/#new
http://elektronark.org/geyik/382/ssd1306-kutuphanesi-ve-ornek-uygulama-xc8/msg2469/#msg2469

Forumdada var ama 1000 mesaj üstü olanlar görebilir;
birde aşağıdaki linkdekinin üzerine @iyildirim bir değişiklik daha yapmıştı öyle çalıştı.
https://www.picproje.org/index.php/topic,57196.15.html
Son halinide  buldum;
https://www.picproje.org/index.php/topic,58065.msg447721.html#msg447721
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

sayment


bocek

Alıntı yapılan: iyildirim - 14 Ağustos 2015, 11:52:31
Modülün üzerinde yazan doğru aslında. DS de de bu değer yazıyordur.

Farklılığın nedeni Bazı platform-kütüphaneler için I2C adreslerinin 7bit veriliyor olması.   
0x3C yi bir bit kaydırıp  üzerine R/W bitini de eklerseniz  0x78 yapıyor.
   
Evet hocam arduino kodlarının derinliklerine inince şu satıra ulaşıyoruz.
void twi_setAddress(uint8_t address)
{
  // set twi slave address (skip over TWGCE bit)
  TWAR = address << 1;
}

Verilen adres 1 bit sola kaydırılıyor.
1 ya da 0. işte 'bit'ün mesele..

sayment

Adafruit'in SSD1306 kütüphanesini bir türlü çalıştıramadım. ssd1306_128x64_i2c örneğini direk atıyorum açışmıyor. Şöyle bir kod bloğu var: 

// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)


Bendeki 128x64 olduğu için 0x3D gönderiyorum yemiyor, olduğu gibi 0x3C göndersem de çalışmıyor. Bağlantıları da Arduino'nun SDA, SCL pinlerini bağlıyorum bir sorun olmasa gerek. Reset ucu da 4.pine bağlı. Kodda şöyle geçiyor:

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);


Ekranın DC ucunu bir yere bağlamam gerekiyor mu yoksa boş mu kalması gerekli? Kodda herhangi bir şey bulamadım.

Kütüphanenin Adafruit_SSD1306.ccp ve Adafruit_SSD1306.h dosyalarını da inceledim. @bocek 'in bahsettiği kod bloğunu bulamadım. Acaba o bahsettiği 1 bit kaydırmayı yapmıyor mu diyerekten 0x78 gönderdim yemedi. 128x64 için 0x3D göndermem gerekiyorsa onu bir bit sola kaydırıp 0x7A göndereyim dedim o da olmadı. Sizce sorun nerede olabilir?

Bir de, Adafruit_SSD1306.h dosyasında şöyle bir blok var:

#define SSD1306_I2C_ADDRESS   0x3C	// 011110+SA0+RW - 0x3C or 0x3D
// Address for 128x32 is 0x3C
// Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded)

/*=========================================================================
    SSD1306 Displays
    -----------------------------------------------------------------------
    The driver is used in multiple displays (128x64, 128x32, etc.).
    Select the appropriate display below to create an appropriately
    sized framebuffer, etc.

    SSD1306_128_64  128x64 pixel display

    SSD1306_128_32  128x32 pixel display

    SSD1306_96_16

    -----------------------------------------------------------------------*/
   #define SSD1306_128_64
//   #define SSD1306_128_32
//   #define SSD1306_96_16
/*=========================================================================*/


Buradaki "SSD1306_I2C_ADDRESS 0x3C" yi 0x3D olarak değiştirip kaydedemiyorum, hata veriyor.

bocek

@sayment adres kaydırma satırını bulamadım demişsin. o satır arduino'nun standart kütüphanesinde twi.h adlı dosyada geçiyor. oraları kurcalamasan daha iyi olur kanaatindeyim. sıkıntı orada değildir zaten.
Hangi arduinoyu kullanıyorsun (uno, nano, mini, orijinal, klon vs.)?
SDA,SCL uçlarını doğru pinlere (A4-SDA, A5-SCL) bağlıyor musun? GND'leri birleştiriyor musun?
cpp dosyalarında değişiklik yapmak için notepad++ ile açıp ordan kaydediyorum ben. Yoksa Arduino IDE içinde kayıt yapmaya izin vermiyor.
1 ya da 0. işte 'bit'ün mesele..

sayment

@bocek Arduino Uno, ve Pro mini kullanıyorum ikisinde de durum aynı. Klon olma olasılıkları yüksek, şirketin, bilemiyorum. I2C pinleri doğru, GND'ler bağlı.
Kütüphane dosyasındaki değişikliği Visual Studio'dan yapmaya çalışıyordum, NotePad++ ile kabul etti fakat hala bir değişiklik yok.
DC pini kullanmam gerekiyor mu?

bocek

Bendeki de klon Pro Mini.
Başka bir sıkıntı var olabilir. SSD1306 değildir belki sendeki. Ondan emin misin?
1 ya da 0. işte 'bit'ün mesele..


bocek

MOSI veya D1 dediği SDA, CLK ya da D0 dediği SCL oluyor biliyorsun. Bunlarda sıkıntı yok gibi. I2C modunda DC'ye gerek yok boş bırakabilirsin.
SPI modunda denedin mi?
1 ya da 0. işte 'bit'ün mesele..

sayment



Kartın aldınta resimdeki 3pin var yanyana. Sağ tarafı kısa devre yapınca SPI modundad sol tarafı yapınca I2C modunda çalışıyor. SPI modunda Adafruit'in kütüphanesi dahil tüm kodlar çalışıyor.
I2C modunda yada tüm pinleri boşta bırakarak hiç bir kod çalışmıyor. Garip. İşin kötüsü modülün ne kodu var ne modeli. Herhangi bir döküman da yok başvurabileceğimiz.